From 2c9a854f10243fe55509f1cd45b1fa1a6e4b04bf Mon Sep 17 00:00:00 2001 From: robk-tahoe Date: Wed, 24 Sep 2008 08:20:02 -0700 Subject: [PATCH] CLI: reconcile webopen changes I think this is largely attributable to a cleanup patch I'd made which never got committed upstream somehow, but at any rate various conflicting changes to webopen had been made. This cleans up the conflicts therein, and hopefully brings 'tahoe webopen' in line with other cli commands. --- docs/CLI.txt | 7 +++++-- src/allmydata/scripts/cli.py | 20 ++++++++------------ src/allmydata/scripts/tahoe_webopen.py | 18 +++++++++++------- 3 files changed, 24 insertions(+), 21 deletions(-) diff --git a/docs/CLI.txt b/docs/CLI.txt index 04a1a8b8..b581f6d6 100644 --- a/docs/CLI.txt +++ b/docs/CLI.txt @@ -178,7 +178,7 @@ tahoe list-aliases tahoe mkdir tahoe mkdir [alias:]path tahoe ls [alias:][path] -tahoe webopen [alias:]path +tahoe webopen [alias:][path] tahoe put [--mutable] [localfrom:-] tahoe put [--mutable] [localfrom:-] [alias:]to tahoe put [--mutable] [localfrom:-] [alias:]subdir/to @@ -234,12 +234,15 @@ tahoe ls subdir This lists a subdirectory of your filesystem. +tahoe webopen tahoe webopen tahoe: tahoe webopen tahoe:subdir/ +tahoe webopen subdir/ This uses the python 'webbrowser' module to cause a local web browser to open to the web page for the given directory. This page offers interfaces to - add, dowlonad, rename, and delete files in the directory. + add, dowlonad, rename, and delete files in the directory. If not given an + alias or path, opens "tahoe:", the root dir of the default alias. tahoe put file.txt tahoe put ./file.txt diff --git a/src/allmydata/scripts/cli.py b/src/allmydata/scripts/cli.py index 7e0e5865..98e48995 100644 --- a/src/allmydata/scripts/cli.py +++ b/src/allmydata/scripts/cli.py @@ -189,8 +189,11 @@ class LnOptions(VDriveOptions): return "%s ln FROM TO" % (os.path.basename(sys.argv[0]),) class WebopenOptions(VDriveOptions): - def parseArgs(self, vdrive_pathname=""): - self['vdrive_pathname'] = vdrive_pathname + def parseArgs(self, where=None): + self.where = where + + def getSynopsis(self): + return "%s webopen [ALIAS:PATH]" % (os.path.basename(sys.argv[0]),) longdesc = """Opens a webbrowser to the contents of some portion of the virtual drive.""" @@ -274,16 +277,9 @@ def ln(options): return rc def webopen(options, opener=None): - import urllib, webbrowser - nodeurl = config['node-url'] - if nodeurl[-1] != "/": - nodeurl += "/" - root_cap = config.aliases["tahoe"] - url = nodeurl + "uri/%s/" % urllib.quote(root_cap) - if config['vdrive_pathname']: - url += urllib.quote(config['vdrive_pathname']) - webbrowser.open(url) - return 0 + from allmydata.scripts import tahoe_webopen + rc = tahoe_webopen.webopen(options, opener=opener) + return rc dispatch = { "mkdir": mkdir, diff --git a/src/allmydata/scripts/tahoe_webopen.py b/src/allmydata/scripts/tahoe_webopen.py index 92a3023c..4065660b 100644 --- a/src/allmydata/scripts/tahoe_webopen.py +++ b/src/allmydata/scripts/tahoe_webopen.py @@ -1,17 +1,21 @@ from allmydata.scripts.common import get_alias, DEFAULT_ALIAS, escape_path +import urllib -def webopen(nodeurl, aliases, where, stdout, stderr): - import urllib, webbrowser +def webopen(options, opener=None): + nodeurl = options['node-url'] if not nodeurl.endswith("/"): nodeurl += "/" - if where.endswith("/"): - where = where[:-1] - rootcap, path = get_alias(aliases, where, DEFAULT_ALIAS) + where = options.where + if where is None: + where = 'tahoe:' + rootcap, path = get_alias(options.aliases, where, DEFAULT_ALIAS) url = nodeurl + "uri/%s" % urllib.quote(rootcap) if path: - # move where.endswith check here? url += "/" + escape_path(path) - webbrowser.open(url) + if not opener: + import webbrowser + opener = webbrowser.open + opener(url) return 0 -- 2.37.2