cmmorrow / build-magic

A general purpose build/install/deploy tool.
MIT License
9 stars 2 forks source link

ComposerError raised when a mis-matched alias is used in a config file #45

Closed cmmorrow closed 3 years ago

cmmorrow commented 3 years ago

Describe the bug When an alias is used in a config file which doesn't have a matching anchor (perhaps a typo) a pyyaml ComposerError is raised and not handled by build-magic.

Traceback (most recent call last):
  File "/Users/chrismorrow/.pyenv/versions/3.9.2/lib/python3.9/runpy.py", line 197, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/Users/chrismorrow/.pyenv/versions/3.9.2/lib/python3.9/runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "/Users/chrismorrow/repos/build-magic/build_magic/__main__.py", line 7, in <module>
    build_magic()
  File "/Users/chrismorrow/build-magic/lib/python3.9/site-packages/click/core.py", line 829, in __call__
    return self.main(*args, **kwargs)
  File "/Users/chrismorrow/build-magic/lib/python3.9/site-packages/click/core.py", line 782, in main
    rv = self.invoke(ctx)
  File "/Users/chrismorrow/build-magic/lib/python3.9/site-packages/click/core.py", line 1066, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/Users/chrismorrow/build-magic/lib/python3.9/site-packages/click/core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "/Users/chrismorrow/repos/build-magic/build_magic/cli.py", line 226, in build_magic
    stages = get_stages_from_config(cfg, dict(variable))
  File "/Users/chrismorrow/repos/build-magic/build_magic/cli.py", line 387, in get_stages_from_config
    obj = yaml.safe_load(cfg)
  File "/Users/chrismorrow/build-magic/lib/python3.9/site-packages/yaml/__init__.py", line 162, in safe_load
    return load(stream, SafeLoader)
  File "/Users/chrismorrow/build-magic/lib/python3.9/site-packages/yaml/__init__.py", line 114, in load
    return loader.get_single_data()
  File "/Users/chrismorrow/build-magic/lib/python3.9/site-packages/yaml/constructor.py", line 49, in get_single_data
    node = self.get_single_node()
  File "/Users/chrismorrow/build-magic/lib/python3.9/site-packages/yaml/composer.py", line 36, in get_single_node
    document = self.compose_document()
File "/Users/chrismorrow/build-magic/lib/python3.9/site-packages/yaml/composer.py", line 55, in compose_document
    node = self.compose_node(None, None)
  File "/Users/chrismorrow/build-magic/lib/python3.9/site-packages/yaml/composer.py", line 84, in compose_node
    node = self.compose_mapping_node(anchor)
  File "/Users/chrismorrow/build-magic/lib/python3.9/site-packages/yaml/composer.py", line 133, in compose_mapping_node
    item_value = self.compose_node(node, item_key)
  File "/Users/chrismorrow/build-magic/lib/python3.9/site-packages/yaml/composer.py", line 82, in compose_node
    node = self.compose_sequence_node(anchor)
  File "/Users/chrismorrow/build-magic/lib/python3.9/site-packages/yaml/composer.py", line 111, in compose_sequence_node
    node.value.append(self.compose_node(node, index))
  File "/Users/chrismorrow/build-magic/lib/python3.9/site-packages/yaml/composer.py", line 84, in compose_node
    node = self.compose_mapping_node(anchor)
  File "/Users/chrismorrow/build-magic/lib/python3.9/site-packages/yaml/composer.py", line 133, in compose_mapping_node
    item_value = self.compose_node(node, item_key)
  File "/Users/chrismorrow/build-magic/lib/python3.9/site-packages/yaml/composer.py", line 84, in compose_node
    node = self.compose_mapping_node(anchor)
  File "/Users/chrismorrow/build-magic/lib/python3.9/site-packages/yaml/composer.py", line 133, in compose_mapping_node
    item_value = self.compose_node(node, item_key)
  File "/Users/chrismorrow/build-magic/lib/python3.9/site-packages/yaml/composer.py", line 82, in compose_node
    node = self.compose_sequence_node(anchor)
  File "/Users/chrismorrow/build-magic/lib/python3.9/site-packages/yaml/composer.py", line 111, in compose_sequence_node
    node.value.append(self.compose_node(node, index))
  File "/Users/chrismorrow/build-magic/lib/python3.9/site-packages/yaml/composer.py", line 84, in compose_node
    node = self.compose_mapping_node(anchor)
  File "/Users/chrismorrow/build-magic/lib/python3.9/site-packages/yaml/composer.py", line 133, in compose_mapping_node
    item_value = self.compose_node(node, item_key)
  File "/Users/chrismorrow/build-magic/lib/python3.9/site-packages/yaml/composer.py", line 68, in compose_node
    raise ComposerError(None, None, "found undefined alias %r"
yaml.composer.ComposerError: found undefined alias 'clean_pyinstaller'
  in "package.yaml", line 69, column 20

To Reproduce Steps to reproduce the behavior:

  1. Create a valid config file with an alias without corresponding anchor.
  2. Run the config file with build-magic -C config.yaml.

Expected behavior Build-magic should handle these errors and provide a user-friendly error message.

Desktop (please complete the following information):