Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(71)

Unified Diff: tools/md_browser/md_browser.py

Issue 2476133002: Add support for opening MD files directly in md_browser. (Closed)
Patch Set: Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/md_browser/md_browser.py
diff --git a/tools/md_browser/md_browser.py b/tools/md_browser/md_browser.py
index f2e05f9308db049ac46cf2e7f823cd912f85cf8d..7d293affa9c3fb3f2ca9c2883bc92d0fb0e062c2 100755
--- a/tools/md_browser/md_browser.py
+++ b/tools/md_browser/md_browser.py
@@ -14,6 +14,9 @@ import os
import re
import socket
import sys
+import threading
+import time
+import webbrowser
THIS_DIR = os.path.abspath(os.path.dirname(__file__))
@@ -27,20 +30,49 @@ def main(argv):
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)
+ parser.add_argument('file', nargs='?',
+ help='open file in browser')
args = parser.parse_args(argv)
+ top_level = os.path.abspath(args.directory)
+
+ s = Server(args.port, top_level)
+
+ print('Listening on http://localhost:%s/' % args.port)
+ thread = None
+ if args.file:
+ path = os.path.abspath(args.file)
+ if not path.startswith(top_level):
+ print('%s is not under %s' % (args.file, args.directory))
+ return 1
+ rpath = os.path.relpath(path, top_level)
+ url = 'http://localhost:%d/%s' % (args.port, rpath)
+ print('Opening %s' % url)
+ thread = threading.Thread(target=_open_url, args=(url,))
+ thread.start()
+
+ elif os.path.isfile(os.path.join(top_level, 'docs', 'README.md')):
+ print(' Try loading http://localhost:%d/docs/README.md' % args.port)
+ elif os.path.isfile(os.path.join(args.directory, 'README.md')):
+ print(' Try loading http://localhost:%d/README.md' % args.port)
+
+ retcode = 1
try:
- s = Server(args.port, args.directory)
- print("Listening on http://localhost:%s/" % args.port)
- if os.path.isfile(os.path.join(args.directory, 'docs', 'README.md')):
- print(" Try loading http://localhost:%s/docs/README.md" % args.port)
- elif os.path.isfile(os.path.join(args.directory, 'README.md')):
- print(" Try loading http://localhost:%s/README.md" % args.port)
s.serve_forever()
- s.shutdown()
- return 0
except KeyboardInterrupt:
- return 130
+ retcode = 130
+ except Exception as e:
+ print('Exception raised: %s' % str(e))
+
+ s.shutdown()
+ if thread:
+ thread.join()
+ return retcode
+
+
+def _open_url(url):
+ time.sleep(1)
+ webbrowser.open(url)
def _gitiles_slugify(value, _separator):
@@ -77,6 +109,7 @@ class Server(SocketServer.TCPServer):
SocketServer.TCPServer.__init__(self, ('0.0.0.0', port), Handler)
self.port = port
self.top_level = os.path.abspath(top_level)
+ self.retcode = None
def server_bind(self):
self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698