def console_output(self, targets): buildfile_aliases = self.context.build_file_parser.registered_aliases() extracter = BuildDictionaryInfoExtracter(buildfile_aliases) alias = self.get_options().details if alias: target_types = buildfile_aliases.target_types_by_alias.get(alias) if target_types: tti = next(x for x in extracter.get_target_type_info() if x.build_file_alias == alias) yield blue('\n{}\n'.format(tti.description)) yield blue('{}('.format(alias)) for arg in extracter.get_target_args(list(target_types)[0]): default = green('(default: {})'.format(arg.default) if arg.has_default else '') yield '{:<30} {}'.format( cyan(' {} = ...,'.format(arg.name)), ' {}{}{}'.format(arg.description, ' ' if arg.description else '', default)) yield blue(')') else: yield 'No such target type: {}'.format(alias) else: for tti in extracter.get_target_type_info(): description = tti.description or '<Add description>' yield '{} {}'.format(cyan('{:>30}:'.format(tti.build_file_alias)), description)
def console_output(self, targets): buildfile_aliases = self.context.build_configuration.registered_aliases( ) extracter = BuildDictionaryInfoExtracter(buildfile_aliases) alias = self.get_options().details if alias: tti = next(x for x in extracter.get_target_type_info() if x.symbol == alias) yield blue('\n{}\n'.format(tti.description)) yield blue('{}('.format(alias)) for arg in tti.args: default = green('(default: {})'.format(arg.default) if arg. has_default else '') yield '{:<30} {}'.format( cyan(' {} = ...,'.format(arg.name)), ' {}{}{}'.format(arg.description, ' ' if arg.description else '', default)) yield blue(')') else: for tti in extracter.get_target_type_info(): yield '{} {}'.format(cyan('{:>30}:'.format(tti.symbol)), tti.description)
def console_output(self, targets): buildfile_aliases = self.context.build_configuration.registered_aliases( ) extracter = BuildDictionaryInfoExtracter(buildfile_aliases) alias = self.get_options().details if alias: tti = next(x for x in extracter.get_target_type_info() if x.symbol == alias) yield blue("\n{}\n".format(tti.description)) yield blue("{}(".format(alias)) for arg in tti.args: default = green("(default: {})".format(arg.default) if arg. has_default else "") yield "{:<30} {}".format( cyan(" {} = ...,".format(arg.name)), " {}{}{}".format(arg.description, " " if arg.description else "", default), ) yield blue(")") else: for tti in extracter.get_target_type_info(): yield "{} {}".format(cyan("{:>30}:".format(tti.symbol)), tti.description)
def console_output(self, targets): buildfile_aliases = self.context.build_file_parser.registered_aliases() extracter = BuildDictionaryInfoExtracter(buildfile_aliases) alias = self.get_options().details if alias: target_types = buildfile_aliases.target_types_by_alias.get(alias) if target_types: tti = next(x for x in extracter.get_target_type_info() if x.build_file_alias == alias) yield blue('\n{}\n'.format(tti.description)) yield blue('{}('.format(alias)) for arg in extracter.get_target_args(list(target_types)[0]): default = green('(default: {})'.format(arg.default) if arg. has_default else '') yield '{:<30} {}'.format( cyan(' {} = ...,'.format(arg.name)), ' {}{}{}'.format(arg.description, ' ' if arg.description else '', default)) yield blue(')') else: yield 'No such target type: {}'.format(alias) else: for tti in extracter.get_target_type_info(): description = tti.description or '<Add description>' yield '{} {}'.format( cyan('{:>30}:'.format(tti.build_file_alias)), description)
def test_get_target_type_info(self): class Target1(Target): """Target1 docstring.""" pass class Target2(Target): """Target2 docstring.""" pass class Target3(Target): """Target3 docstring.""" pass # We shouldn't get as far as invoking the context factory, so it can be trivial. macro_factory = TargetMacro.Factory.wrap(lambda ctx: None, Target2) bfa = BuildFileAliases(targets={ 'target1': Target1, 'target2': macro_factory, 'target3': Target3, }, objects={}, context_aware_object_factories={} ) extracter = BuildDictionaryInfoExtracter(bfa) args = BuildDictionaryInfoExtracter.basic_target_args self.assertEqual([BuildSymbolInfo('target1', 'Target1 docstring.', [], args), BuildSymbolInfo('target2', 'Target2 docstring.', [], args), BuildSymbolInfo('target3', 'Target3 docstring.', [], args)], extracter.get_target_type_info())
def test_get_target_type_info(self): class Target1(Target): """Target1 docstring.""" pass class Target2(Target): """Target2 docstring.""" pass class Target3(Target): """Target3 docstring.""" pass # We shouldn't get as far as invoking the context factory, so it can be trivial. macro_factory = TargetMacro.Factory.wrap(lambda ctx: None, Target2) bfa = BuildFileAliases(targets={ 'target1': Target1, 'target2': macro_factory, 'target3': Target3, }, objects={}, context_aware_object_factories={}) extracter = BuildDictionaryInfoExtracter(bfa) args = BuildDictionaryInfoExtracter.basic_target_args self.assertEqual([ BuildSymbolInfo('target1', 'Target1 docstring.', [], args), BuildSymbolInfo('target2', 'Target2 docstring.', [], args), BuildSymbolInfo('target3', 'Target3 docstring.', [], args) ], extracter.get_target_type_info())
def test_get_target_type_info(self): class Target1(Target): """Target1 docstring.""" pass class Target2a(Target): # No docstring, so we should take the onefrom Target2b. pass class Target2b(Target): """Target2 docstring.""" pass class Target3(Target): """Target3 docstring.""" pass # We shouldn't get as far as invoking the context factory, so it can be trivial. macro_factory = TargetMacro.Factory.wrap(lambda ctx: None, Target2a, Target2b) bfa = BuildFileAliases(targets={ 'target1': Target1, 'target2': macro_factory, 'target3': Target3, }, objects={}, context_aware_object_factories={}) extracter = BuildDictionaryInfoExtracter(bfa) self.assertEquals([ TargetTypeInfo('target1', 'Target1 docstring.'), TargetTypeInfo('target2', 'Target2 docstring.'), TargetTypeInfo('target3', 'Target3 docstring.') ], extracter.get_target_type_info())
def test_get_target_type_info(self): class Target1(Target): """Target1 docstring.""" pass class Target2a(Target): # No docstring, so we should take the onefrom Target2b. pass class Target2b(Target): """Target2 docstring.""" pass class Target3(Target): """Target3 docstring.""" pass # We shouldn't get as far as invoking the context factory, so it can be trivial. macro_factory = TargetMacro.Factory.wrap(lambda ctx: None, Target2a, Target2b) bfa = BuildFileAliases(targets={ 'target1': Target1, 'target2': macro_factory, 'target3': Target3, }, objects={}, context_aware_object_factories={} ) extracter = BuildDictionaryInfoExtracter(bfa) self.assertEquals([TargetTypeInfo('target1', 'Target1 docstring.'), TargetTypeInfo('target2', 'Target2 docstring.'), TargetTypeInfo('target3', 'Target3 docstring.')], extracter.get_target_type_info())
def console_output(self, targets): buildfile_aliases = self.context.build_file_parser.registered_aliases() extracter = BuildDictionaryInfoExtracter(buildfile_aliases) alias = self.get_options().details if alias: tti = next(x for x in extracter.get_target_type_info() if x.symbol == alias) yield blue('\n{}\n'.format(tti.description)) yield blue('{}('.format(alias)) for arg in tti.args: default = green('(default: {})'.format(arg.default) if arg.has_default else '') yield '{:<30} {}'.format( cyan(' {} = ...,'.format(arg.name)), ' {}{}{}'.format(arg.description, ' ' if arg.description else '', default)) yield blue(')') else: for tti in extracter.get_target_type_info(): yield '{} {}'.format(cyan('{:>30}:'.format(tti.symbol)), tti.description)
def _gen_build_dictionary(self): buildfile_aliases = self.context.build_file_parser.registered_aliases() extracter = BuildDictionaryInfoExtracter(buildfile_aliases) target_type_infos = extracter.get_target_type_info() other_infos = sorted(extracter.get_object_info() + extracter.get_object_factory_info()) self._do_render(self.get_options().build_dictionary_template, { 'target_types': { 'infos': target_type_infos }, 'other_symbols': { 'infos': other_infos } })
def _gen_build_dictionary(self): buildfile_aliases = self.context.build_file_parser.registered_aliases() extracter = BuildDictionaryInfoExtracter(buildfile_aliases) target_type_infos = extracter.get_target_type_info() other_infos = sorted(extracter.get_object_info() + extracter.get_object_factory_info()) self._do_render( self.get_options().build_dictionary_template, { 'target_types': { 'infos': target_type_infos }, 'other_symbols': { 'infos': other_infos } })
def _gen_build_dictionary(self): buildfile_aliases = self.context.build_configuration.registered_aliases() extracter = BuildDictionaryInfoExtracter(buildfile_aliases) target_type_infos = extracter.get_target_type_info() other_infos = sorted(extracter.get_object_info() + extracter.get_object_factory_info()) build_dict_page = self._do_render(self.get_options().build_dictionary_template, { 'target_types': { 'infos': target_type_infos }, 'other_symbols': { 'infos': other_infos } }) self.context.products.register_data(self.BUILD_DICTIONARY_PRODUCT, build_dict_page)
def test_get_target_type_info(self): class Target1(Target): """Target1 docstring.""" pass class Target2a(Target): # No docstring, so we should take the one from Target2b. pass class Target2b(Target): """Target2 docstring.""" pass class Target3(Target): """Target3 docstring.""" pass # We shouldn't get as far as invoking the context factory, so it can be trivial. macro_factory = TargetMacro.Factory.wrap(lambda ctx: None, Target2a, Target2b) bfa = BuildFileAliases( targets={"target1": Target1, "target2": macro_factory, "target3": Target3}, objects={}, context_aware_object_factories={}, ) extracter = BuildDictionaryInfoExtracter(bfa) args = BuildDictionaryInfoExtracter.basic_target_args self.assertEquals( [ BuildSymbolInfo("target1", "Target1 docstring.", args), BuildSymbolInfo("target2", "Target2 docstring.", args), BuildSymbolInfo("target3", "Target3 docstring.", args), ], extracter.get_target_type_info(), )
def _target_types(self): buildfile_aliases = self.context.build_configuration.registered_aliases( ) extracter = BuildDictionaryInfoExtracter(buildfile_aliases) return [x.symbol for x in extracter.get_target_type_info()]