summaryrefslogtreecommitdiff
path: root/git-shell-commands/mkrepo
diff options
context:
space:
mode:
Diffstat (limited to '')
-rwxr-xr-xgit-shell-commands/mkrepo42
1 files changed, 42 insertions, 0 deletions
diff --git a/git-shell-commands/mkrepo b/git-shell-commands/mkrepo
new file mode 100755
index 0000000..356cafa
--- /dev/null
+++ b/git-shell-commands/mkrepo
@@ -0,0 +1,42 @@
+#!/bin/sh
+# Copyright (C) 2024 dwlr <dweller@cabin.digital>
+#
+# BSD 3-Clause License (BSD-3-Clause)
+# See LICENSE for details
+
+set -e
+
+#FIXME: this is wide open for exploits by using crafted paths like ../../../etc/passwd or something
+# But we should be okay since this is behind ssh, right? r- right..?
+
+
+PREFIX="$HOME/repos"
+
+if [ $# -lt 1 ]; then
+ echo "Usage: $(basename $0) <repo name> [description]"
+ exit 1;
+fi
+
+case "$1" in
+ *.git) reponame="$1" ;;
+ *) reponame="$1.git" ;;
+esac
+
+netname=$(echo "$PREFIX/$reponame" | sed "s|$HOME|:|")
+reponame="$PREFIX/$reponame"
+
+
+if [ ! -e "$reponame" ];
+then
+ mkdir -p "$reponame"
+ cd "$reponame"
+ git init -q --bare && echo "$netname" || echo "Failed to create repo '$netname' :("
+
+ if [ $# -gt 1 ]; then
+ shift
+ echo "$@" > description
+ fi
+else
+ echo "$netname exists!"
+ exit 1
+fi