slide-git-scripts/davgit.py

43 lines
1.0 KiB
Python
Executable File

#!/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()