| Index: tools/telemetry/build/update_docs.py
|
| diff --git a/tools/telemetry/build/update_docs.py b/tools/telemetry/build/update_docs.py
|
| deleted file mode 100644
|
| index 7f43b58e036104892f1de722a1a7fabb440e941d..0000000000000000000000000000000000000000
|
| --- a/tools/telemetry/build/update_docs.py
|
| +++ /dev/null
|
| @@ -1,148 +0,0 @@
|
| -# Copyright 2013 The Chromium Authors. All rights reserved.
|
| -# Use of this source code is governed by a BSD-style license that can be
|
| -# found in the LICENSE file.
|
| -import logging
|
| -import optparse
|
| -import os
|
| -import pkgutil
|
| -import pydoc
|
| -import re
|
| -import sys
|
| -
|
| -import telemetry
|
| -from telemetry.core import util
|
| -
|
| -telemetry_dir = util.GetTelemetryDir()
|
| -docs_dir = os.path.join(telemetry_dir, 'docs', 'pydoc')
|
| -
|
| -def RemoveAllDocs():
|
| - for dirname, _, filenames in os.walk(docs_dir):
|
| - for filename in filenames:
|
| - os.remove(os.path.join(dirname, filename))
|
| -
|
| -def GenerateHTMLForModule(module):
|
| - html = pydoc.html.page(pydoc.describe(module),
|
| - pydoc.html.document(module, module.__name__))
|
| -
|
| - # pydoc writes out html with links in a variety of funky ways. We need
|
| - # to fix them up.
|
| - assert not telemetry_dir.endswith(os.sep)
|
| - links = re.findall('(<a href="(.+?)">(.+?)</a>)', html)
|
| - for link_match in links:
|
| - link, href, link_text = link_match
|
| - if not href.startswith('file:'):
|
| - continue
|
| -
|
| - new_href = href.replace('file:', '')
|
| - new_href = new_href.replace(telemetry_dir, '..')
|
| - new_href = new_href.replace(os.sep, '/')
|
| -
|
| - new_link_text = link_text.replace(telemetry_dir + os.sep, '')
|
| -
|
| - new_link = '<a href="%s">%s</a>' % (new_href, new_link_text)
|
| - html = html.replace(link, new_link)
|
| -
|
| - # pydoc writes out html with absolute path file links. This is not suitable
|
| - # for checked in documentation. So, fix up the HTML after it is generated.
|
| - #html = re.sub('href="file:%s' % telemetry_dir, 'href="..', html)
|
| - #html = re.sub(telemetry_dir + os.sep, '', html)
|
| - return html
|
| -
|
| -def WriteHTMLForModule(module):
|
| - page = GenerateHTMLForModule(module)
|
| - path = os.path.join(docs_dir, '%s.html' % module.__name__)
|
| - with open(path, 'w') as f:
|
| - sys.stderr.write('Wrote %s\n' % os.path.relpath(path))
|
| - f.write(page)
|
| -
|
| -def GetAllModulesToDocument(module):
|
| - modules = [module]
|
| - for _, modname, _ in pkgutil.walk_packages(
|
| - module.__path__, module.__name__ + '.'):
|
| - if modname.endswith('_unittest'):
|
| - logging.debug("skipping %s due to being a unittest", modname)
|
| - continue
|
| -
|
| - module = __import__(modname, fromlist=[""])
|
| - name, _ = os.path.splitext(module.__file__)
|
| - if not os.path.exists(name + '.py'):
|
| - logging.info("skipping %s due to being an orphan .pyc", module.__file__)
|
| - continue
|
| -
|
| - modules.append(module)
|
| - return modules
|
| -
|
| -class AlreadyDocumentedModule(object):
|
| - def __init__(self, filename):
|
| - self.filename = filename
|
| -
|
| - @property
|
| - def name(self):
|
| - basename = os.path.basename(self.filename)
|
| - return os.path.splitext(basename)[0]
|
| -
|
| - @property
|
| - def contents(self):
|
| - with open(self.filename, 'r') as f:
|
| - return f.read()
|
| -
|
| -def GetAlreadyDocumentedModules():
|
| - modules = []
|
| - for dirname, _, filenames in os.walk(docs_dir):
|
| - for filename in filenames:
|
| - path = os.path.join(dirname, filename)
|
| - modules.append(AlreadyDocumentedModule(path))
|
| - return modules
|
| -
|
| -
|
| -def IsUpdateDocsNeeded():
|
| - already_documented_modules = GetAlreadyDocumentedModules()
|
| - already_documented_modules_by_name = dict(
|
| - (module.name, module) for module in already_documented_modules)
|
| - current_modules = GetAllModulesToDocument(telemetry)
|
| -
|
| - # Quick check: if the names of modules has changed, we definitely need
|
| - # an update.
|
| - already_documented_module_names = set(
|
| - m.name for m in already_documented_modules)
|
| -
|
| - current_module_names = set([m.__name__ for m in current_modules])
|
| -
|
| - if current_module_names != already_documented_module_names:
|
| - return True
|
| -
|
| - # Generate the new docs and compare aganist the old. If changed, then a
|
| - # an update is needed.
|
| - for current_module in current_modules:
|
| - already_documented_module = already_documented_modules_by_name[
|
| - current_module.__name__]
|
| - current_html = GenerateHTMLForModule(current_module)
|
| - if current_html != already_documented_module.contents:
|
| - return True
|
| -
|
| - return False
|
| -
|
| -def Main(args):
|
| - parser = optparse.OptionParser()
|
| - parser.add_option(
|
| - '-v', '--verbose', action='count', dest='verbosity',
|
| - help='Increase verbosity level (repeat as needed)')
|
| - options, args = parser.parse_args(args)
|
| - if options.verbosity >= 2:
|
| - logging.getLogger().setLevel(logging.DEBUG)
|
| - elif options.verbosity:
|
| - logging.getLogger().setLevel(logging.INFO)
|
| - else:
|
| - logging.getLogger().setLevel(logging.WARNING)
|
| -
|
| - assert os.path.isdir(docs_dir), '%s does not exist' % docs_dir
|
| -
|
| - RemoveAllDocs()
|
| -
|
| - old_cwd = os.getcwd()
|
| - try:
|
| - os.chdir(telemetry_dir)
|
| - for module in GetAllModulesToDocument(telemetry):
|
| - WriteHTMLForModule(module)
|
| - finally:
|
| - os.chdir(old_cwd)
|
|
|