diff options
Diffstat (limited to 'git-shell-commands/new-project')
| -rwxr-xr-x | git-shell-commands/new-project | 58 |
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 |
