예제 #1
0
    def _generate_ivy_report(self):
        classpath = binary_utils.nailgun_profile_classpath(self, self._profile)

        reports = []
        org, name = self._ivy_utils.identify()
        xsl = os.path.join(self._cachedir, 'ivy-report.xsl')
        safe_mkdir(self._outdir, clean=True)
        for conf in self._confs:
            params = dict(org=org, name=name, conf=conf)
            xml = self._ivy_utils.xml_report_path(conf)
            out = os.path.join(self._outdir,
                               '%(org)s-%(name)s-%(conf)s.html' % params)
            args = ['-IN', xml, '-XSL', xsl, '-OUT', out]
            self.runjava('org.apache.xalan.xslt.Process',
                         classpath=classpath,
                         args=args)
            reports.append(out)

        css = os.path.join(self._outdir, 'ivy-report.css')
        if os.path.exists(css):
            os.unlink(css)
        shutil.copy(os.path.join(self._cachedir, 'ivy-report.css'),
                    self._outdir)

        if self._open:
            binary_utils.open(*reports)
예제 #2
0
    def execute(self, targets):
        try:
            wiki = Confluence.login(self.url)
        except ConfluenceError as e:
            raise TaskError("Failed to login to confluence: %s" % e)

        urls = list()

        genmap = self.context.products.get("markdown_html")
        for page in filter(lambda t: isinstance(t, Page), targets):
            wikiconfig = page.wiki_config(self.wiki())
            if wikiconfig:
                html_info = genmap.get((self.wiki(), page))
                if len(html_info) > 1:
                    raise TaskError("Unexpected resources for %s: %s" % (page, html_info))
                basedir, htmls = html_info.items()[0]
                if len(htmls) != 1:
                    raise TaskError("Unexpected resources for %s: %s" % (page, htmls))
                with safe_open(os.path.join(basedir, htmls[0])) as contents:
                    url = self.publish_page(
                        wiki, wikiconfig["space"], wikiconfig["title"], contents.read(), parent=wikiconfig.get("parent")
                    )
                    if url:
                        urls.append(url)
                        self.context.log.info("Published %s to %s" % (page, url))

        if self.open and urls:
            binary_utils.open(*urls)
예제 #3
0
  def _generate_ivy_report(self):
    classpath = binary_utils.nailgun_profile_classpath(self, self._profile)

    reports = []
    org, name = self._ivy_utils.identify()
    xsl = os.path.join(self._cachedir, 'ivy-report.xsl')
    safe_mkdir(self._outdir, clean=True)
    for conf in self._confs:
      params = dict(
        org=org,
        name=name,
        conf=conf
      )
      xml = self._ivy_utils.xml_report_path(conf)
      out = os.path.join(self._outdir, '%(org)s-%(name)s-%(conf)s.html' % params)
      args = ['-IN', xml, '-XSL', xsl, '-OUT', out]
      self.runjava('org.apache.xalan.xslt.Process', classpath=classpath, args=args)
      reports.append(out)

    css = os.path.join(self._outdir, 'ivy-report.css')
    if os.path.exists(css):
      os.unlink(css)
    shutil.copy(os.path.join(self._cachedir, 'ivy-report.css'), self._outdir)

    if self._open:
      binary_utils.open(*reports)
예제 #4
0
          def generate_reports():
            args = [
              'report',
              '-in', self.coverage_metadata_file,
              '-in', self.coverage_file,
              '-exit'
            ]
            source_bases = set(t.target_base for t in targets)
            for source_base in source_bases:
              args.extend(['-sp', source_base])

            sorting = ['-Dreport.sort', '+name,+class,+method,+block']
            if self.coverage_report_console:
              args.extend(['-r', 'txt',
                           '-Dreport.txt.out.file=%s' % self.coverage_console_file] + sorting)
            if self.coverage_report_xml:
              args.extend(['-r', 'xml','-Dreport.xml.out.file=%s' % self.coverage_xml_file])
            if self.coverage_report_html:
              args.extend(['-r', 'html',
                           '-Dreport.html.out.file=%s' % self.coverage_html_file,
                           '-Dreport.out.encoding=UTF-8'] + sorting)

            result = runjava(
              classpath=emma_classpath,
              main='emma',
              args=args
            )
            if result != 0:
              raise TaskError('Failed to emma generate code coverage reports: %d' % result)

            if self.coverage_report_console:
              with safe_open(self.coverage_console_file) as console_report:
                sys.stdout.write(console_report.read())
            if self.coverage_report_html_open:
              binary_utils.open(self.coverage_html_file)
예제 #5
0
  def execute(self, targets):
    pages = []
    for target in targets:
      if isinstance(target, Page):
        wikiconfig = target.wiki_config(self.wiki())
        if wikiconfig:
          pages.append((target, wikiconfig))

    urls = list()

    genmap = self.context.products.get('markdown_html')
    for page, wikiconfig in pages:
      html_info = genmap.get((self.wiki(), page))
      if len(html_info) > 1:
        raise TaskError('Unexpected resources for %s: %s' % (page, html_info))
      basedir, htmls = html_info.items()[0]
      if len(htmls) != 1:
        raise TaskError('Unexpected resources for %s: %s' % (page, htmls))
      with safe_open(os.path.join(basedir, htmls[0])) as contents:
        url = self.publish_page(
          page.address,
          wikiconfig['space'],
          wikiconfig['title'],
          contents.read(),
          parent=wikiconfig.get('parent')
        )
        if url:
          urls.append(url)
          self.context.log.info('Published %s to %s' % (page, url))

    if self.open and urls:
      binary_utils.open(*urls)
예제 #6
0
 def generate_combined(self, classpath, targets):
   gendir = os.path.join(self._output_dir, 'combined')
   if targets:
     safe_mkdir(gendir, clean=True)
     command = create_javadoc_command(classpath, gendir, *targets)
     if command:
       create_javadoc(command, gendir)
   if self.open:
     binary_utils.open(os.path.join(gendir, 'index.html'))
예제 #7
0
파일: ide_gen.py 프로젝트: SeungEun/commons
  def execute(self, targets):
    """Stages IDE project artifacts to a project directory and generates IDE configuration files."""

    self.map_internal_jars(targets)
    self.map_external_jars()

    idefile = self.generate_project(self._project)
    if idefile:
      binary_utils.open(idefile)
예제 #8
0
    def execute(self, targets):
        """Stages IDE project artifacts to a project directory and generates IDE configuration files."""

        self.map_internal_jars(targets)
        self.map_external_jars()

        idefile = self.generate_project(self._project)
        if idefile:
            binary_utils.open(idefile)
예제 #9
0
 def generate_combined(self, classpath, targets):
     gendir = os.path.join(self._output_dir, 'combined')
     if targets:
         safe_mkdir(gendir, clean=True)
         command = create_javadoc_command(classpath, gendir, *targets)
         if command:
             create_javadoc(command, gendir)
     if self.open:
         binary_utils.open(os.path.join(gendir, 'index.html'))
예제 #10
0
                    def generate_reports():
                        args = [
                            'report', '-in', self.coverage_metadata_file,
                            '-in', self.coverage_file, '-exit'
                        ]
                        source_bases = set(t.target_base for t in targets)
                        for source_base in source_bases:
                            args.extend(['-sp', source_base])

                        sorting = [
                            '-Dreport.sort', '+name,+class,+method,+block'
                        ]
                        if self.coverage_report_console:
                            args.extend([
                                '-r', 'txt',
                                '-Dreport.txt.out.file=%s' %
                                self.coverage_console_file
                            ] + sorting)
                        if self.coverage_report_xml:
                            args.extend([
                                '-r', 'xml',
                                '-Dreport.xml.out.file=%s' %
                                self.coverage_xml_file
                            ])
                        if self.coverage_report_html:
                            args.extend([
                                '-r', 'html',
                                '-Dreport.html.out.file=%s' %
                                self.coverage_html_file,
                                '-Dreport.out.encoding=UTF-8'
                            ] + sorting)

                        result = runjava(classpath=emma_classpath,
                                         main='emma',
                                         args=args)
                        if result != 0:
                            raise TaskError(
                                'Failed to emma generate code coverage reports: %d'
                                % result)

                        if self.coverage_report_console:
                            with safe_open(self.coverage_console_file
                                           ) as console_report:
                                sys.stdout.write(console_report.read())
                        if self.coverage_report_html_open:
                            binary_utils.open(self.coverage_html_file)
예제 #11
0
    def execute(self, targets):
        if not MarkdownToHtml.AVAILABLE:
            raise TaskError(
                'Cannot process markdown - no markdown lib on the sys.path')

        # TODO(John Sirois): consider adding change detection

        css_relpath = os.path.join('css', 'codehighlight.css')
        css = emit_codehighlight_css(os.path.join(self.outdir, css_relpath),
                                     self.code_style)
        if css:
            self.context.log.info('Emitted %s' % css)

        def is_page(target):
            return isinstance(target, Page)

        roots = set()
        interior_nodes = set()
        if self.open:
            dependencies_by_page = self.context.dependants(
                on_predicate=is_page, from_predicate=is_page)
            roots.update(dependencies_by_page.keys())
            for dependencies in dependencies_by_page.values():
                interior_nodes.update(dependencies)
                roots.difference_update(dependencies)
            for page in self.context.targets(is_page):
                # There are no in or out edges so we need to show show this isolated page.
                if not page.dependencies and page not in interior_nodes:
                    roots.add(page)

        genmap = self.context.products.get('markdown_html')
        show = []
        for page in filter(is_page, targets):
            _, ext = os.path.splitext(page.source)
            if ext in self.extensions:

                def process_page(key, outdir, url_builder, config):
                    outputs = list()
                    if css and self.standalone:
                        outputs.append(css_relpath)
                    html_path = self.process(outdir,
                                             page.target_base,
                                             page.source,
                                             self.standalone,
                                             url_builder,
                                             config,
                                             css=css)
                    self.context.log.info('Processed %s to %s' %
                                          (page.source, html_path))
                    outputs.append(os.path.relpath(html_path, outdir))
                    genmap.add(key, outdir, outputs)
                    return html_path

                def url_builder(linked_page, config=None):
                    path, ext = os.path.splitext(linked_page.source)
                    return linked_page.name, os.path.relpath(
                        path + '.html', os.path.dirname(page.source))

                html = process_page(page, os.path.join(self.outdir, 'html'),
                                    url_builder, lambda p: None)
                if self.open and page in roots:
                    show.append(html)

                for wiki in page.wikis():

                    def get_config(page):
                        return page.wiki_config(wiki)

                    basedir = os.path.join(self.outdir, wiki.id)
                    process_page((wiki, page), basedir, wiki.url_builder,
                                 get_config)

        if show:
            binary_utils.open(*show)
예제 #12
0
  def execute(self, targets):
    if not MarkdownToHtml.AVAILABLE:
      raise TaskError('Cannot process markdown - no markdown lib on the sys.path')

    # TODO(John Sirois): consider adding change detection

    css_relpath = os.path.join('css', 'codehighlight.css')
    css = emit_codehighlight_css(os.path.join(self.outdir, css_relpath), self.code_style)
    if css:
      self.context.log.info('Emitted %s' % css)

    def is_page(target):
      return isinstance(target, Page)

    roots = set()
    interior_nodes = set()
    if self.open:
      dependencies_by_page = self.context.dependants(on_predicate=is_page, from_predicate=is_page)
      roots.update(dependencies_by_page.keys())
      for dependencies in dependencies_by_page.values():
        interior_nodes.update(dependencies)
        roots.difference_update(dependencies)
      for page in self.context.targets(is_page):
        # There are no in or out edges so we need to show show this isolated page.
        if not page.dependencies and page not in interior_nodes:
          roots.add(page)

    genmap = self.context.products.get('markdown_html')
    show = []
    for page in filter(is_page, targets):
      _, ext = os.path.splitext(page.source)
      if ext in self.extensions:
        def process_page(key, outdir, url_builder, config):
          outputs = list()
          if css and self.standalone:
            outputs.append(css_relpath)
          html_path = self.process(
            outdir,
            page.target_base,
            page.source,
            self.standalone,
            url_builder,
            config,
            css=css
          )
          self.context.log.info('Processed %s to %s' % (page.source, html_path))
          outputs.append(os.path.relpath(html_path, outdir))
          genmap.add(key, outdir, outputs)
          return html_path

        def url_builder(linked_page, config=None):
          path, ext = os.path.splitext(linked_page.source)
          return linked_page.name, os.path.relpath(path + '.html', os.path.dirname(page.source))

        html = process_page(page, os.path.join(self.outdir, 'html'), url_builder, lambda p: None)
        if self.open and page in roots:
          show.append(html)

        for wiki in page.wikis():
          def get_config(page):
            return page.wiki_config(wiki)
          basedir = os.path.join(self.outdir, wiki.id)
          process_page((wiki, page), basedir, wiki.url_builder, get_config)

    if show:
      binary_utils.open(*show)