43 lines
1.0 KiB
Python
43 lines
1.0 KiB
Python
|
#!/usr/local/bin/python
|
||
|
|
||
|
import getpass
|
||
|
import os
|
||
|
import readline
|
||
|
import sys
|
||
|
|
||
|
USAGE = ''' usage: davgit.py [push/pull]
|
||
|
'''
|
||
|
|
||
|
NET_RC = '''
|
||
|
machine your.webdav.server.with.auth
|
||
|
login USER_LOGIN
|
||
|
password USER_PASSWORD
|
||
|
'''
|
||
|
ENV_PASS_KEY = 'GIT_WEBDAV_SIGNED_PASSWORD'
|
||
|
|
||
|
|
||
|
def main():
|
||
|
if not len(sys.argv) > 1:
|
||
|
print USAGE
|
||
|
return
|
||
|
try:
|
||
|
os.environ['GIT_SSL_NO_VERIFY'] = '1'
|
||
|
user = getpass.getuser()
|
||
|
password = os.getenv(ENV_PASS_KEY)
|
||
|
if not password:
|
||
|
password = getpass.getpass('LDAP Password: ')
|
||
|
# Generate the ~/.netrc file that git-over-https needs to properly pass authentication via libcurl
|
||
|
netrc = os.open(os.path.expanduser('~/.netrc'), os.O_CREAT | os.O_WRONLY)
|
||
|
os.write(netrc, NET_RC.replace('USER_LOGIN', user).replace('USER_PASSWORD', password))
|
||
|
os.close(netrc)
|
||
|
|
||
|
# Needed to properly pass on extra args to `git pull` like:
|
||
|
# `davgit.py pull origin master` -> `git pull origin master`
|
||
|
os.system('git %s' % ' '.join(sys.argv[1:]))
|
||
|
finally:
|
||
|
os.remove(os.path.expanduser('~/.netrc'))
|
||
|
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
main()
|