Skip to content

Instantly share code, notes, and snippets.

@reddec
Last active September 13, 2015 15:51
Show Gist options
  • Save reddec/8a8b7a47e6c49b4413d4 to your computer and use it in GitHub Desktop.
Save reddec/8a8b7a47e6c49b4413d4 to your computer and use it in GitHub Desktop.
Clone private Golang repo to import path
#!/usr/bin/env python
import subprocess
import argparse
import os
import shutil
from urlparse import urlparse
parser = argparse.ArgumentParser(description="Clone GIT repo as GO lang package")
parser.add_argument('repo', type=str, nargs=1, help='Repository URL')
parser.add_argument('--gopath', action='store', default=os.getenv('GOPATH'),
help='GO source dir')
args = parser.parse_args()
url = urlparse(args.repo[0])
parts = url.path.split('/')
if parts[-1].endswith('.git'):
parts[-1] = parts[-1][:-4]
dirname = os.path.join(args.gopath, "src", url.hostname, *parts)
shutil.rmtree(dirname, True)
os.makedirs(dirname)
subprocess.call(['git', 'clone', args.repo[0], dirname])
subprocess.call(['go', 'get', url.hostname + "/" + "/".join(parts)])
@reddec
Copy link
Author

reddec commented Sep 13, 2015

Usage:

usage: goclone [-h] [--gopath GOPATH] repo

Clone GIT repo as GO lang package

positional arguments:
  repo             Repository URL

optional arguments:
  -h, --help       show this help message and exit
  --gopath GOPATH  GO source dir

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment