示例#1
0
  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)
示例#2
0
    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)
示例#3
0
    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)
示例#4
0
    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())
示例#7
0
    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())
示例#9
0
  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)
示例#10
0
 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
     }
   })
示例#11
0
 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 _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(),
        )
示例#15
0
文件: export.py 项目: OniOni/pants
 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()]