(Steve Dougherty)
2013-07-30: Fix clone truster resolution. Fix clone truster resolution.
diff --git a/infocalypse/__init__.py b/infocalypse/__init__.py --- a/infocalypse/__init__.py +++ b/infocalypse/__init__.py @@ -568,7 +568,7 @@ extensions.wrapfunction(discovery, 'find # wrap the commands -def freenetpathtouri(ui, path, pull=True, repo=None): +def freenetpathtouri(ui, path, repo=None, pull=True): """ Return a usable request or insert URI. Expects a freenet:// or freenet: protocol to be specified. @@ -613,7 +613,7 @@ def freenetpull(orig, *args, **opts): # only act differently, if the target is an infocalypse repo. if not isfreenetpath(path): return orig(*args, **opts) - uri = freenetpathtouri(ui, path) + uri = freenetpathtouri(ui, path, repo) opts["uri"] = uri opts["aggressive"] = True # always search for the latest revision. return infocalypse_pull(ui, repo, **opts) @@ -650,7 +650,7 @@ def freenetpush(orig, *args, **opts): # only act differently, if the target is an infocalypse repo. if not isfreenetpath(path): return orig(*args, **opts) - uri = parse_repo_path(freenetpathtouri(ui, path, pull=False)) + uri = parse_repo_path(freenetpathtouri(ui, path, repo, pull=False)) if uri is None: return # if the uri is the short form (USK@/name/#), generate the key and preprocess the uri. @@ -706,11 +706,10 @@ def freenetclone(orig, *args, **opts): # check whether to create, pull or copy pulluri, pushuri = None, None if isfreenetpath(source): - pulluri = parse_repo_path(freenetpathtouri(ui, source, repo=source)) + pulluri = parse_repo_path(freenetpathtouri(ui, source)) if isfreenetpath(dest): - pushuri = parse_repo_path(freenetpathtouri(ui, dest, pull=False, - repo=source), + pushuri = parse_repo_path(freenetpathtouri(ui, dest, pull=False), assume_redundancy=True) # decide which infocalypse command to use. diff --git a/infocalypse/commands.py b/infocalypse/commands.py --- a/infocalypse/commands.py +++ b/infocalypse/commands.py @@ -512,12 +512,15 @@ def infocalypse_setupfreemail(ui, repo, wot.execute_setup_freemail(ui, get_truster(ui, repo, opts['truster'])) -def get_truster(ui, repo, truster_identifier=None): +def get_truster(ui, repo=None, truster_identifier=None): """ Return a local WoT ID. - If truster_identifier is given, use that. Otherwise, either the identity - that published this repository, or if one is not set the default truster. + Search for a local identity from most to least specific: + 1. truster_identifier (if given) + 2. identity that published this respository (if repo is given and an + identity is set) + 3. default truster :rtype : Local_WoT_ID """ @@ -529,7 +532,11 @@ def get_truster(ui, repo, truster_identi # Value is identity ID, so '@' prefix makes it an identifier with an # empty nickname. - identity = cfg.get_wot_identity(cfg.get_request_uri(repo.root)) + identity = None + if repo: + identity = cfg.get_wot_identity(cfg.get_request_uri(repo.root)) + + # Either repo is not given or there is no associated identity. if not identity: identity = cfg.defaults['DEFAULT_TRUSTER']