Index: tools/md_browser/md_browser.py |
diff --git a/tools/md_browser/md_browser.py b/tools/md_browser/md_browser.py |
index 2b968525320c8477f944307f599cc5178d69da94..1878807d65807d3850397d7901e51cf78d9098bb 100644 |
--- a/tools/md_browser/md_browser.py |
+++ b/tools/md_browser/md_browser.py |
@@ -25,10 +25,11 @@ def main(argv): |
parser = argparse.ArgumentParser(prog='md_browser') |
parser.add_argument('-p', '--port', type=int, default=8080, |
help='port to run on (default = %(default)s)') |
+ parser.add_argument('-d', '--directory', type=str, default=SRC_DIR) |
args = parser.parse_args(argv) |
try: |
- s = Server(args.port, SRC_DIR) |
+ s = Server(args.port, args.directory) |
print("Listening on http://localhost:%s/" % args.port) |
print(" Try loading http://localhost:%s/docs/README.md" % args.port) |
Dirk Pranke
2016/05/06 01:23:41
Does it still make sense to execute line 34 if arg
agable
2016/05/09 21:00:00
Good point, put in something smarter.
|
s.serve_forever() |
@@ -89,7 +90,7 @@ class Handler(SimpleHTTPServer.SimpleHTTPRequestHandler): |
full_path = os.path.abspath(os.path.join(self.server.top_level, path[1:])) |
- if not full_path.startswith(SRC_DIR): |
+ if not full_path.startswith(self.server.top_level): |
Dirk Pranke
2016/05/06 01:23:41
self.server.top_level isn't guaranteed to be an ab
agable
2016/05/09 21:00:00
Fixed, it becomes an abspath at Server.__init__ ti
|
self._DoUnknown() |
elif path == '/doc.css': |
self._DoCSS('doc.css') |
@@ -142,6 +143,12 @@ class Handler(SimpleHTTPServer.SimpleHTTPRequestHandler): |
self.wfile.write('<html><body>I do not know how to serve %s.</body>' |
'</html>' % self.path) |
+ def _ReadBoilerplate(self, relpath): |
Dirk Pranke
2016/05/06 01:23:41
maybe just change _Read to take a second, optional
agable
2016/05/09 21:00:00
Done.
|
+ assert not relpath.startswith(os.sep) |
+ path = os.path.join(SRC_DIR, relpath) |
+ with codecs.open(path, encoding='utf-8') as fp: |
+ return fp.read() |
+ |
def _Read(self, relpath): |
assert not relpath.startswith(os.sep) |
path = os.path.join(self.server.top_level, relpath) |
@@ -154,7 +161,8 @@ class Handler(SimpleHTTPServer.SimpleHTTPRequestHandler): |
self.end_headers() |
def _WriteTemplate(self, template): |
- contents = self._Read(os.path.join('tools', 'md_browser', template)) |
+ contents = self._ReadBoilerplate( |
+ os.path.join('tools', 'md_browser', template)) |
self.wfile.write(contents.encode('utf-8')) |