def parse_specs(args, **kwargs): """Convenience function for parsing arguments from specs. Handles common exceptions and dies if there are errors. """ concretize = kwargs.get('concretize', False) normalize = kwargs.get('normalize', False) tests = kwargs.get('tests', False) try: specs = spack.spec.parse(args) for spec in specs: if concretize: spec.concretize(tests=tests) # implies normalize elif normalize: spec.normalize(tests=tests) return specs except spack.spec.SpecParseError as e: msg = e.message + "\n" + str(e.string) + "\n" msg += (e.pos + 2) * " " + "^" raise SpackError(msg) except spack.spec.SpecError as e: msg = e.message if e.long_message: msg += e.long_message raise SpackError(msg)
def parse_specs(args, **kwargs): """Convenience function for parsing arguments from specs. Handles common exceptions and dies if there are errors. """ concretize = kwargs.get('concretize', False) normalize = kwargs.get('normalize', False) if isinstance(args, (python_list, tuple)): args = " ".join(args) try: specs = spack.spec.parse(args) for spec in specs: if concretize: spec.concretize() # implies normalize elif normalize: spec.normalize() return specs except spack.parse.ParseError as e: tty.error(e.message, e.string, e.pos * " " + "^") sys.exit(1) except spack.spec.SpecError as e: tty.error(e.message) sys.exit(1)
def parse_specs(args, **kwargs): """Convenience function for parsing arguments from specs. Handles common exceptions and dies if there are errors. """ concretize = kwargs.get('concretize', False) normalize = kwargs.get('normalize', False) tests = kwargs.get('tests', False) sargs = args if not isinstance(args, six.string_types): sargs = ' '.join(args) unquoted_flags = _UnquotedFlags.extract(sargs) try: specs = spack.spec.parse(sargs) for spec in specs: if concretize: spec.concretize(tests=tests) # implies normalize elif normalize: spec.normalize(tests=tests) return specs except spack.error.SpecError as e: msg = e.message if e.long_message: msg += e.long_message if unquoted_flags: msg += '\n\n' msg += unquoted_flags.report() raise spack.error.SpackError(msg)
def parse_specs(args, **kwargs): """Convenience function for parsing arguments from specs. Handles common exceptions and dies if there are errors. """ concretize = kwargs.get('concretize', False) normalize = kwargs.get('normalize', False) tests = kwargs.get('tests', False) try: sargs = args if not isinstance(args, six.string_types): if len(sargs) == 1: # a single argument contains a full spec and will confuse the # Parser if escaped -> simply take it out of the list if not isinstance(sargs, type([])): # Since the list keyword is taken we have to get the type # via the literal. # Sets do not support indexing -> convert to list as simply # popping the only element would modify the argument. sargs = type([])(sargs) sargs = sargs[0] else: sargs = ' '.join(spack.util.string.quote(args)) specs = spack.spec.parse(sargs) for spec in specs: if concretize: spec.concretize(tests=tests) # implies normalize elif normalize: spec.normalize(tests=tests) return specs except spack.spec.SpecParseError as e: msg = e.message + "\n" + str(e.string) + "\n" msg += (e.pos + 2) * " " + "^" raise SpackError(msg) except spack.spec.SpecError as e: msg = e.message if e.long_message: msg += e.long_message raise SpackError(msg)
def parse_specs(args, **kwargs): """Convenience function for parsing arguments from specs. Handles common exceptions and dies if there are errors. """ concretize = kwargs.get('concretize', False) normalize = kwargs.get('normalize', False) tests = kwargs.get('tests', False) sargs = args if not isinstance(args, six.string_types): sargs = ' '.join(spack.util.string.quote(args)) specs = spack.spec.parse(sargs) for spec in specs: if concretize: spec.concretize(tests=tests) # implies normalize elif normalize: spec.normalize(tests=tests) return specs
def parse_specs(args, **kwargs): """Convenience function for parsing arguments from specs. Handles common exceptions and dies if there are errors. """ concretize = kwargs.get('concretize', False) normalize = kwargs.get('normalize', False) if isinstance(args, (python_list, tuple)): args = " ".join(args) try: specs = spack.spec.parse(args) for spec in specs: if concretize: spec.concretize() # implies normalize elif normalize: spec.normalize() return specs except spack.parse.ParseError, e: tty.error(e.message, e.string, e.pos * " " + "^") sys.exit(1)
def test_ambiguous_version_spec(mock_packages): spec = Spec('[email protected]:5.0,6.1,7.3+debug~opt') spec.normalize() check_yaml_round_trip(spec) check_json_round_trip(spec)
def test_normal_spec(mock_packages): spec = Spec('mpileaks+debug~opt') spec.normalize() check_yaml_round_trip(spec) check_json_round_trip(spec)