OLD | NEW |
---|---|
1 # Copyright 2013 The Chromium Authors. All rights reserved. | 1 # Copyright 2013 The Chromium Authors. All rights reserved. |
2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 import logging | 4 import logging |
5 import optparse | 5 import optparse |
6 import os | 6 import os |
7 import pkgutil | 7 import pkgutil |
8 import pydoc | 8 import pydoc |
9 import re | 9 import re |
10 import sys | 10 import sys |
11 | 11 |
12 from telemetry.core import util | 12 from telemetry.core import util |
13 | 13 |
14 telemetry_dir = util.GetTelemetryDir() | 14 telemetry_dir = util.GetTelemetryDir() |
15 docs_dir = os.path.join(telemetry_dir, 'docs') | 15 docs_dir = os.path.join(telemetry_dir, 'docs') |
16 | 16 |
17 def EnsureTelemetryIsInPath(): | 17 def EnsureTelemetryIsInPath(): |
18 if telemetry_dir not in sys.path: | 18 if telemetry_dir not in sys.path: |
19 sys.path.append(telemetry_dir) | 19 sys.path.append(telemetry_dir) |
20 | 20 |
21 def RemoveAllDocs(): | 21 def RemoveAllDocs(): |
22 for dirname, _, filenames in os.walk(docs_dir): | 22 for dirname, _, filenames in os.walk(docs_dir): |
23 for filename in filenames: | 23 for filename in filenames: |
24 os.remove(os.path.join(dirname, filename)) | 24 os.remove(os.path.join(dirname, filename)) |
25 | 25 |
26 def RemoveAllStalePycFiles(): | |
27 for dirname, _, filenames in os.walk(telemetry_dir): | |
28 for filename in filenames: | |
29 if not filename.endswith('.pyc'): | |
30 continue | |
31 pycpath = os.path.join(dirname, filename) | |
tonyg
2013/06/21 19:02:38
I'd find these more readable as pyc_path and py_pa
| |
32 pypath = os.path.splitext(pycpath)[0] + '.py' | |
33 if not os.path.exists(pypath): | |
34 os.remove(pypath) | |
35 | |
26 def GenerateHTMLForModule(module): | 36 def GenerateHTMLForModule(module): |
27 html = pydoc.html.page(pydoc.describe(module), | 37 html = pydoc.html.page(pydoc.describe(module), |
28 pydoc.html.document(module, module.__name__)) | 38 pydoc.html.document(module, module.__name__)) |
29 | 39 |
30 # pydoc writes out html with links in a variety of funky ways. We need | 40 # pydoc writes out html with links in a variety of funky ways. We need |
31 # to fix them up. | 41 # to fix them up. |
32 assert not telemetry_dir.endswith(os.sep) | 42 assert not telemetry_dir.endswith(os.sep) |
33 links = re.findall('(<a href="(.+?)">(.+?)</a>)', html) | 43 links = re.findall('(<a href="(.+?)">(.+?)</a>)', html) |
34 for link_match in links: | 44 for link_match in links: |
35 link, href, link_text = link_match | 45 link, href, link_text = link_match |
(...skipping 16 matching lines...) Expand all Loading... | |
52 return html | 62 return html |
53 | 63 |
54 def WriteHTMLForModule(module): | 64 def WriteHTMLForModule(module): |
55 page = GenerateHTMLForModule(module) | 65 page = GenerateHTMLForModule(module) |
56 path = os.path.join(docs_dir, '%s.html' % module.__name__) | 66 path = os.path.join(docs_dir, '%s.html' % module.__name__) |
57 with open(path, 'w') as f: | 67 with open(path, 'w') as f: |
58 sys.stderr.write('Wrote %s\n' % os.path.relpath(path)) | 68 sys.stderr.write('Wrote %s\n' % os.path.relpath(path)) |
59 f.write(page) | 69 f.write(page) |
60 | 70 |
61 def GetAllModulesToDocument(module): | 71 def GetAllModulesToDocument(module): |
72 RemoveAllStalePycFiles() | |
62 modules = [module] | 73 modules = [module] |
63 for _, modname, _ in pkgutil.walk_packages( | 74 for _, modname, _ in pkgutil.walk_packages( |
64 module.__path__, module.__name__ + '.'): | 75 module.__path__, module.__name__ + '.'): |
65 if modname.endswith('_unittest'): | 76 if modname.endswith('_unittest'): |
66 logging.debug("skipping %s due to being a unittest", modname) | 77 logging.debug("skipping %s due to being a unittest", modname) |
67 continue | 78 continue |
68 | 79 |
69 module = __import__(modname, fromlist=[""]) | 80 module = __import__(modname, fromlist=[""]) |
70 name, _ = os.path.splitext(module.__file__) | 81 name, _ = os.path.splitext(module.__file__) |
71 if not os.path.exists(name + '.py'): | 82 if not os.path.exists(name + '.py'): |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
148 EnsureTelemetryIsInPath() | 159 EnsureTelemetryIsInPath() |
149 import telemetry | 160 import telemetry |
150 | 161 |
151 old_cwd = os.getcwd() | 162 old_cwd = os.getcwd() |
152 try: | 163 try: |
153 os.chdir(telemetry_dir) | 164 os.chdir(telemetry_dir) |
154 for module in GetAllModulesToDocument(telemetry): | 165 for module in GetAllModulesToDocument(telemetry): |
155 WriteHTMLForModule(module) | 166 WriteHTMLForModule(module) |
156 finally: | 167 finally: |
157 os.chdir(old_cwd) | 168 os.chdir(old_cwd) |
OLD | NEW |