aboutsummaryrefslogtreecommitdiff
path: root/git-shell-commands/new-project
diff options
context:
space:
mode:
authorTrey Bastian <hello@treybastian.com>2026-04-08 17:09:07 +0100
committerTrey Bastian <hello@treybastian.com>2026-04-08 17:09:07 +0100
commitb0684c87580926fa00c221afcc4461ca812390a0 (patch)
tree5a0ab4dcdf6af0ee9793964dfde3f96c7eb121b9 /git-shell-commands/new-project
parent9cac75c2f8626f7f3208aad61857b9d9f0732c75 (diff)
added make-public command to make a private repo public
Diffstat (limited to 'git-shell-commands/new-project')
-rwxr-xr-xgit-shell-commands/new-project58
1 files changed, 43 insertions, 15 deletions
diff --git a/git-shell-commands/new-project b/git-shell-commands/new-project
index 568c158..3d13e41 100755
--- a/git-shell-commands/new-project
+++ b/git-shell-commands/new-project
@@ -1,32 +1,60 @@
#!/bin/bash
+set -euo pipefail
# this script allows the creation of projects over ssh on git server
# public repos will get a public.conf containing the remote
# private repos will just exist on the server
#
# USAGE:
-# ssh git@<host> new-project
-# - follow the prompts
+# ssh git@<host> new-project <name> [--public]
+#
+# EXAMPLES:
+# ssh git@treybastian.com new-project myrepo
+# ssh git@treybastian.com new-project myrepo --public
REMOTE_BASE_URL="git@treybastian.com:repos"
-echo "oh look you are starting a project you won't finish again."
-echo "What is your projects name?"
-read PROJECT_NAME
-if [[ $PROJECT_NAME != *.git ]]; then
+
+usage() {
+ echo "Usage: new-project <name> [--public]"
+ echo ""
+ echo "Examples:"
+ echo " new-project myrepo"
+ echo " new-project myrepo --public"
+ exit 1
+}
+
+if [ "$#" -lt 1 ] || [ "$#" -gt 2 ]; then
+ echo "Error: expected 1 or 2 arguments, got $#"
+ usage
+fi
+
+PROJECT_NAME="$1"
+PUBLIC=false
+
+if [ "$#" -eq 2 ]; then
+ if [ "$2" != "--public" ]; then
+ echo "Error: unknown flag '$2'"
+ usage
+ fi
+ PUBLIC=true
+fi
+
+if [[ "$PROJECT_NAME" != *.git ]]; then
PROJECT_NAME="${PROJECT_NAME}.git"
fi
-read -p "Is this public?" -n 1 -r
-echo
+
+if [ -d "$PROJECT_NAME" ]; then
+ echo "Error: '$PROJECT_NAME' already exists"
+ exit 1
+fi
git --bare init "${PROJECT_NAME}"
-if [[ $REPLY =~ ^[Yy]$ ]]; then
- touch "${PROJECT_NAME}/public.conf"
- echo "${REMOTE_BASE_URL}/${PROJECT_NAME}" >> "${PROJECT_NAME}/public.conf"
+if [ "$PUBLIC" = true ]; then
+ echo "${REMOTE_BASE_URL}/${PROJECT_NAME}" > "${PROJECT_NAME}/public.conf"
ssh git@treybastian.com new-repo "repos/${PROJECT_NAME}"
+ echo "public repo: ${REMOTE_BASE_URL}/${PROJECT_NAME}"
fi
echo "git url: ${USER}@${HOSTNAME}:${PROJECT_NAME}"
-if [[ $REPLY =~ ^[Yy]$ ]]; then
- echo "public repo: ${REMOTE_BASE_URL}/${PROJECT_NAME}"
-fi
-#vim: filetype=bash
+
+# vim: filetype=bash