def _calc_deps(self, targets, dependencies_by_target, dependees_by_target): for target in filter(lambda x: hasattr(x, "dependencies"), targets): if not dependencies_by_target.has_key(target): for dependency in target.dependencies: for resolved in dependency.resolve(): if is_concrete(resolved): dependencies_by_target[target].add(resolved) for dependency in target.dependencies: for resolved in dependency.resolve(): if is_concrete(resolved): dependees_by_target[resolved].add(target)
def __init__(self, root_dir, parser, argv): Command.__init__(self, root_dir, parser, argv) if not self.args: self.error("A spec argument is required") try: specs_end = self.args.index('--') if len(self.args) > specs_end: self.build_args = self.args[specs_end+1:len(self.args)+1] else: self.build_args = [] except ValueError: specs_end = 1 self.build_args = self.args[1:] if len(self.args) > 1 else [] self.targets = OrderedSet() for spec in self.args[0:specs_end]: try: address = Address.parse(root_dir, spec) except: self.error("Problem parsing spec %s: %s" % (spec, traceback.format_exc())) try: target = Target.get(address) except: self.error("Problem parsing BUILD target %s: %s" % (address, traceback.format_exc())) if not target: self.error("Target %s does not exist" % address) self.targets.update(tgt for tgt in target.resolve() if is_concrete(tgt))
def add_dep(trg): if is_concrete(trg): for target_type, target_key in self._VALID_DEPENDENCIES.items(): if isinstance(trg, target_type): children[target_key].add(trg) return raise self.InvalidDependencyException(trg)
def __init__(self, run_tracker, root_dir, parser, argv): Command.__init__(self, run_tracker, root_dir, parser, argv) if not self.args: self.error("A spec argument is required") try: specs_end = self.args.index('--') if len(self.args) > specs_end: self.build_args = self.args[specs_end + 1:len(self.args) + 1] else: self.build_args = [] except ValueError: specs_end = 1 self.build_args = self.args[1:] if len(self.args) > 1 else [] self.targets = OrderedSet() for spec in self.args[0:specs_end]: try: address = Address.parse(root_dir, spec) except: self.error("Problem parsing spec %s: %s" % (spec, traceback.format_exc())) try: target = Target.get(address) except: self.error("Problem parsing BUILD target %s: %s" % (address, traceback.format_exc())) if not target: self.error("Target %s does not exist" % address) self.targets.update(tgt for tgt in target.resolve() if is_concrete(tgt))
def add_dep(trg): if is_concrete(trg): for target_type, target_key in PythonResolver._VALID_DEPENDENCIES.items(): if isinstance(trg, target_type): children[target_key].add(trg) return raise PythonResolver.InvalidDependencyException(trg)
def update_dependencies(self, dependencies): if dependencies: for dependency in dependencies: if hasattr(dependency, 'address'): self.dependency_addresses.add(dependency.address) for resolved_dependency in dependency.resolve(): if is_concrete(resolved_dependency) and not self.valid_dependency(resolved_dependency): raise TargetDefinitionException(self, 'Cannot add %s as a dependency of %s' % (resolved_dependency, self)) self.dependencies.add(resolved_dependency) if isinstance(resolved_dependency, InternalTarget): self.internal_dependencies.add(resolved_dependency) if hasattr(resolved_dependency, '_as_jar_dependencies'): self.jar_dependencies.update(resolved_dependency._as_jar_dependencies())
def console_output(self, targets): if len(self.context.target_roots) == 0: raise TaskError("One or more target addresses are required.") for target in self.context.target_roots: if all(self._is_jvm(t) for t in target.resolve() if is_concrete(t)): if self.is_graph: return self._output_digraph(target) else: return self._output_dependency_tree(target) elif is_python(target): raise TaskError('Unsupported for Python targets') else: raise TaskError('Unsupported for target %s' % target)
def console_output(self, unused_method_argument): for target in self.context.target_roots: if all(self._is_jvm(t) for t in target.resolve() if is_concrete(t)): for line in self._dependencies_list(target): yield line elif is_python(target): if self.is_internal_only: raise TaskError('Unsupported option for Python target: is_internal_only: %s' % self.is_internal_only) if self.is_external_only: raise TaskError('Unsupported option for Python target: is_external_only: %s' % self.is_external_only) for line in self._python_dependencies_list(target): yield line
def console_output(self, targets): if len(self.context.target_roots) == 0: raise TaskError("One or more target addresses are required.") for target in self.context.target_roots: if all( self._is_jvm(t) for t in target.resolve() if is_concrete(t)): if self.is_graph: return self._output_digraph(target) else: return self._output_dependency_tree(target) elif is_python(target): raise TaskError('Unsupported for Python targets') else: raise TaskError('Unsupported for target %s' % target)
def console_output(self, unused_method_argument): for target in self.context.target_roots: if all( self._is_jvm(t) for t in target.resolve() if is_concrete(t)): for line in self._dependencies_list(target): yield line elif is_python(target): if self.is_internal_only: raise TaskError( 'Unsupported option for Python target: is_internal_only: %s' % self.is_internal_only) if self.is_external_only: raise TaskError( 'Unsupported option for Python target: is_external_only: %s' % self.is_external_only) for line in self._python_dependencies_list(target): yield line
def is_resources(item): return (isinstance(item, Target) and all( map(lambda tgt: isinstance(tgt, Resources), filter(lambda tgt: is_concrete(tgt), item.resolve()))))
def expand(spec): for target in self.targets(spec): for tgt in target.resolve(): if isinstance(tgt, Target) and is_concrete(tgt): yield tgt
def is_resources(item): return (isinstance(item, Target) and all(map(lambda tgt: isinstance(tgt, Resources), filter(lambda tgt: is_concrete(tgt), item.resolve()))))