New: git clone ssh script

This commit is contained in:
Akemi Izuko 2023-03-17 13:57:57 -06:00
parent 57b9999491
commit ad4ba302c0
No known key found for this signature in database
GPG key ID: 905D444F6A5E4BE4

34
bin/clone_with_ssh.py Executable file
View file

@ -0,0 +1,34 @@
#!/usr/bin/env python3
import argparse
import re
import sys
from subprocess import Popen
SSH_RE = re.compile(r"(ssh://)?git@([^/]+):([^/]+)/([^/]+)(/[^/]+)?.*")
HTTP_RE = re.compile(r"https://([^/]+)/([^/]+)/([^/]+).*")
parser = argparse.ArgumentParser(
prog="Clone with SSH v1.0.0",
description="Git-clone an http link as ssh instead",
)
parser.add_argument(
"url",
type=str,
help="HTTP or ssh url to use",
)
args = parser.parse_args()
if m := HTTP_RE.fullmatch(args.url):
ssh_url = f"ssh://git@{m[1]}:22/{m[2]}/{m[3]}"
elif m := SSH_RE.fullmatch(args.url):
ssh_url = f"ssh://git@{m[2]}:22/{m[3]}/{m[4]}"
else:
print(f"Failed to parse URL `{args.url}`", file=sys.stderr)
exit(1)
if "git.sr.ht" not in args.url and not ssh_url.endswith('.git'):
ssh_url += ".git"
Popen(["git", "clone", ssh_url]).wait()