#! /usr/bin/env sh readonly CGIT_INDEX="$HOME/.local/srv/cgit" readonly GIT_INDEX="$HOME/.local/git" main() { # Handle opts opts "$@" shift "$OPTS" unset OPTS # Show help [ "$OPT_HELP_ONLY" ] && usage && exit 0 cd -- "$GIT_INDEX" location=$(readlink -f "${1:-$PWD}") # Prompt for location printf "%s: [%s] " "Path" "$location" read -r input [ -z "$input" ] || location=$(readlink -f "$input") unset input # Prompt for description printf "%s: " "Description" read -r description # Prompt for linking into cgit index if [ -d "$CGIT_INDEX" ] then while : do printf "%s: [%s] " "Link in cgit?" "Y/n" read -r input case "$input" in Y|y|'') cgit_link=1; break;; N|n) break;; esac done unset input fi # Create the bare git repository mkdir -p "$location" cd -- "$location" git --bare init # Update the description, if given printf "%s\n" "$description" > "$location/description" # Link into cgit index if [ -n "$cgit_link" ] then mkdir -p "$CGIT_INDEX/$(dirname "${location#$GIT_INDEX}")" ln -s "$location" "$CGIT_INDEX/${location#$GIT_INDEX}" fi } opts() { OPTS=0 while getopts ":h" opt do case "$opt" in h) OPT_HELP_ONLY=1 ;; *) printf "Invalid option passed: %s\n" "$OPTARG" >&2 ;; esac done unset opt } usage() { cat <