##// END OF EJS Templates
Zaczątki
Zaczątki

File last commit:

r0:db70e4b2 default
r0:db70e4b2 default
Show More
mercurial_keyring.py
52 lines | 1.3 KiB | text/x-python | PythonLexer
/ mercurial_keyring.py
# -*- coding: utf-8 -*-
"""
Storing HTTP authentication passwords in keyring database.
Installation method(s):
1) in ~/.hgrc (or /etc/hgext/...)
[extensions]
...
hgext.mercurial_keyring = /path/to/mercurial_keyring.py
"""
from mercurial import hg, repo, util
from mercurial.i18n import _
try:
from mercurial.url import passwordmgr
except:
from mercurial.httprepo import passwordmgr
import keyring
import getpass
from urlparse import urlparse
KEYRING_ENTRY_PFX = "Mercurial:%s"
def monkeypatch_method(cls):
def decorator(func):
setattr(cls, func.__name__, func)
return func
return decorator
@monkeypatch_method(passwordmgr)
def find_user_password(self, realm, authuri):
"""
keyring-based implementation of username/password query
Passwords are saved in gnome keyring, OSX/Chain or other platform
specific storage and keyed by the repository url
"""
# Calculate the true url. authuri happens to contain things like
# https://repo.machine.com/repos/apps/module?pairs=0000000000000000000000000000000000000000-0000000000000000000000000000000000000000&cmd=between
parsed_url = urlparse(authuri)
base_url = "%s://%s%s" % (parsed_url.scheme, parsed_url.netloc, parsed_url.path)
print "find_user_password", realm, base_url
# return user, password
return None, None