albertyw/dotfiles

View on GitHub
bin/goclone

Summary

Maintainability
Test Coverage
#!/usr/bin/env python3

"""
Clone a go repository to its correct location under $GOPATH/src
"""

import os
import pathlib
import subprocess
import sys


if len(sys.argv) < 2:
    print("No repository to goclone")
    sys.exit(1)

# Generate path
repository = sys.argv[1]
repository_temp = repository.replace(":", "/")
repository_temp = repository_temp.split("@")[-1]
rel_path = repository_temp.split("/")
current_path = pathlib.Path().absolute()
symlink_path = current_path / rel_path[-1]

gopath_string = os.getenv("GOPATH")
if not gopath_string:
    print("No GOPATH env var found")
    sys.exit(1)
gopath = pathlib.Path(gopath_string)
abs_path = gopath / "src" / repository_temp

# Clone
cmd = ["git", "clone", repository, str(abs_path)]
subprocess.check_call(cmd)

# Add git submodules
os.chdir(abs_path)
cmd = ["git", "submodule", "update", "--init"]
subprocess.check_call(cmd)

# Symlink
cmd = ["ln", "-s", str(abs_path), str(symlink_path)]
subprocess.check_call(cmd)