sfink created this revision. Herald added subscribers: mercurial-patches, Kwan. Herald added a reviewer: hg-reviewers.
REVISION SUMMARY Wrapping localrepo's loadhgrc() was not working for me because it is too late to wrap loadhgrc when the extension is loaded. REPOSITORY rHG Mercurial BRANCH default REVISION DETAIL https://phab.mercurial-scm.org/D8524 AFFECTED FILES hgext/phabricator.py CHANGE DETAILS diff --git a/hgext/phabricator.py b/hgext/phabricator.py --- a/hgext/phabricator.py +++ b/hgext/phabricator.py @@ -41,6 +41,9 @@ # API token. Get it from https://$HOST/conduit/login/ example.phabtoken = cli-xxxxxxxxxxxxxxxxxxxxxxxxxxxx + +phabricator.url and callsign will fallback to values from repo's .arcconfig if +available. """ from __future__ import absolute_import @@ -165,16 +168,18 @@ ] -@eh.wrapfunction(localrepo, "loadhgrc") -def _loadhgrc(orig, ui, wdirvfs, hgvfs, requirements): +def reposetup(ui, repo): """Load ``.arcconfig`` content into a ui instance on repository open. """ - result = False + # Only check for .arcconfig on a localrepo. + if not hasattr(repo, 'wvfs'): + return + arcconfig = {} try: # json.loads only accepts bytes from 3.6+ - rawparams = encoding.unifromlocal(wdirvfs.read(b".arcconfig")) + rawparams = encoding.unifromlocal(repo.wvfs.read(b'.arcconfig')) # json.loads only returns unicode strings arcconfig = pycompat.rapply( lambda x: encoding.unitolocal(x) @@ -182,25 +187,19 @@ else x, pycompat.json_loads(rawparams), ) - - result = True except ValueError: - ui.warn(_(b"invalid JSON in %s\n") % wdirvfs.join(b".arcconfig")) + ui.warn(_(b"invalid JSON in %s\n") % repo.wvfs.join('.arcconfig')) except IOError: pass cfg = util.sortdict() + source = repo.wvfs.join(b".arcconfig") if b"repository.callsign" in arcconfig: - cfg[(b"phabricator", b"callsign")] = arcconfig[b"repository.callsign"] + ui.setconfig(b"phabricator", b"callsign", arcconfig[b"repository.callsign"], source=source) if b"phabricator.uri" in arcconfig: - cfg[(b"phabricator", b"url")] = arcconfig[b"phabricator.uri"] - - if cfg: - ui.applyconfig(cfg, source=wdirvfs.join(b".arcconfig")) - - return orig(ui, wdirvfs, hgvfs, requirements) or result # Load .hg/hgrc + ui.setconfig(b"phabricator", b"url", arcconfig[b"phabricator.uri"], source=source) def vcrcommand(name, flags, spec, helpcategory=None, optionalrepo=False): @@ -328,13 +327,18 @@ def readurltoken(ui): """return conduit url, token and make sure they exist - Currently read from [auth] config section. In the future, it might - make sense to read from .arcconfig and .arcrc as well. + Read token from [auth] config section. Read url from [phabricator] config + section or repo's .arcconfig. In the future, it might make sense to read + tokens from ~/.arcrc as well. """ url = ui.config(b'phabricator', b'url') if not url: raise error.Abort( - _(b'config %s.%s is required') % (b'phabricator', b'url') + _( + b'unable to read phabricator uri from from config %s.%s or %s ' + b'file in repo' + ) + % (b'phabricator', b'url', b'.arcconfig') ) res = httpconnectionmod.readauthforuri(ui, url, util.url(url).user) To: sfink, #hg-reviewers Cc: Kwan, mercurial-patches, mercurial-devel _______________________________________________ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel