diff options
| author | Akshay Nair <phenax5@gmail.com> | 2026-07-22 10:35:51 +0530 |
|---|---|---|
| committer | Akshay Nair <phenax5@gmail.com> | 2026-07-22 10:44:04 +0530 |
| commit | d40ab7a488e0b53b9541652e588b62879bc69bba (patch) | |
| tree | f73227d9117773969828ce43d30d4de5934e14c6 /cgit/ssh/git-shell-commands | |
| parent | 4c142d2a977a2c377ea3bef30fa986010056ba3e (diff) | |
| download | bacchus-remote-d40ab7a488e0b53b9541652e588b62879bc69bba.tar.gz bacchus-remote-d40ab7a488e0b53b9541652e588b62879bc69bba.zip | |
Diffstat (limited to '')
| -rw-r--r-- | cgit/ssh/git-shell-commands/_utils/input.sh | 27 | ||||
| -rwxr-xr-x | cgit/ssh/git-shell-commands/fork | 18 | ||||
| -rwxr-xr-x | cgit/ssh/git-shell-commands/list | 26 | ||||
| -rwxr-xr-x | cgit/ssh/git-shell-commands/new | 18 | ||||
| -rwxr-xr-x | cgit/ssh/git-shell-commands/set-category | 15 | ||||
| -rwxr-xr-x | cgit/ssh/git-shell-commands/set-description | 19 |
6 files changed, 72 insertions, 51 deletions
diff --git a/cgit/ssh/git-shell-commands/_utils/input.sh b/cgit/ssh/git-shell-commands/_utils/input.sh new file mode 100644 index 0000000..d8842ba --- /dev/null +++ b/cgit/ssh/git-shell-commands/_utils/input.sh @@ -0,0 +1,27 @@ + +input_repo_name() { + repo_name="$(gum input --header "Repo name (alphanumeric + hyphen/dashes)")" + [ -z "$repo_name" ] && echo "Error: empty repo name" 1>&2 && exit 1 + (echo "$repo_name" | grep -q "^[A-Za-z0-9_-]\+$" 2>/dev/null) || (echo "Error: invalid repo name" 1>&2 && exit 1) + echo "$repo_name" +} + +input_repo_description() { + description="$( (cat "$1/description" 2>/dev/null || true) | gum write --header "Repo description")" + [ -z "$description" ] && echo "Error: empty description" 1>&2 && exit 1 + echo "$description" +} + +input_repo_remote_url() { + remote_repo_url="$(gum input --header "Repo url")"; + [ -z "$remote_repo_url" ] && echo "Error: empty repo url" 1>&2 && exit 1 + echo "$remote_repo_url" +} + +select_repo_name() { + ls -1 /git | gum choose --header "Repo" +} + +input_repo_category() { + (git -C "$1" config get gitweb.category 2>/dev/null || true) | gum input --header "Category" +} diff --git a/cgit/ssh/git-shell-commands/fork b/cgit/ssh/git-shell-commands/fork index c2bc799..d09985a 100755 --- a/cgit/ssh/git-shell-commands/fork +++ b/cgit/ssh/git-shell-commands/fork @@ -2,21 +2,12 @@ set -eu +. "$(dirname $0)/_utils/input.sh" + remote_host="git.ediblemonad.dev" owner_info="Akshay Nair <phenax5@gmail.com>" -if [ $# -lt 2 ]; then - echo "Usage: fork <name> <url>" 1>&2 - exit 1 -fi - -repo_name="$1"; shift 1; -[ -z "$repo_name" ] && echo "Error: empty repo name" 1>&2 && exit 1 -(echo "$repo_name" | grep -q "^[A-Za-z0-9_-]\+$" 2>/dev/null) || (echo "Error: invalid repo name" 1>&2 && exit 1) - -remote_repo_url="$1"; shift 1; -[ -z "$remote_repo_url" ] && echo "Error: empty repo url" 1>&2 && exit 1 - +repo_name="$(input_repo_name)"; repo_dir="/git/${repo_name}.git" if [ -d "$repo_dir" ]; then @@ -24,6 +15,9 @@ if [ -d "$repo_dir" ]; then exit 1; fi +description="$(input_repo_description "$repo_dir")" +remote_repo_url="$(input_repo_remote_url)"; + git clone --bare "$remote_repo_url" "$repo_dir" cd "$repo_dir" diff --git a/cgit/ssh/git-shell-commands/list b/cgit/ssh/git-shell-commands/list index 8a924c9..668bfbb 100755 --- a/cgit/ssh/git-shell-commands/list +++ b/cgit/ssh/git-shell-commands/list @@ -1,8 +1,28 @@ #!/usr/bin/env sh +set -eu + +. "$(dirname $0)/_utils/input.sh" + git_dir=/git +remote_host="git.ediblemonad.dev" -ls -1 "$git_dir" | while IPS="" read name; do - echo "$name||||$(cat "${git_dir}/${name}/description" 2>/dev/null)" -done | column -t -d -s "||||" +if (tty -s); then + selected=$(select_repo_name) + if ! [ -z "$selected" ]; then + repo_dir="${git_dir}/${selected}" + echo "# ${selected}" + echo "" + echo "- SSH clone url: git@${remote_host}:${repo_dir}" + echo "- HTTPS clone url: https://${remote_host}/${selected}" + echo "" + echo "- Category: $(git -C "$repo_dir" config get gitweb.category)" + echo "" + echo "- Description: $(cat "${repo_dir}/description" 2>/dev/null)" + fi +else + ls -1 "$git_dir" | while IPS="" read name; do + echo "$name||||$(cat "${git_dir}/${name}/description" 2>/dev/null)" + done | column -t -d -s "||||" +fi diff --git a/cgit/ssh/git-shell-commands/new b/cgit/ssh/git-shell-commands/new index 6b5a03d..4bd550a 100755 --- a/cgit/ssh/git-shell-commands/new +++ b/cgit/ssh/git-shell-commands/new @@ -2,22 +2,12 @@ set -eu +. "$(dirname $0)/_utils/input.sh" + remote_host="git.ediblemonad.dev" owner_info="Akshay Nair <phenax5@gmail.com>" -if [ $# -lt 2 ]; then - echo "Usage: new <name> <...description>" 1>&2 - exit 1 -fi - -repo_name="$1"; shift 1; -[ -z "$repo_name" ] && echo "Error: empty repo name" 1>&2 && exit 1 -(echo "$repo_name" | grep -q "^[A-Za-z0-9_-]\+$" 2>/dev/null) || (echo "Error: invalid repo name" 1>&2 && exit 1) - -# Stupid cmdline parsing means I can't do $1 here for space separated stuff -description="$*" -[ -z "$description" ] && echo "Error: empty description" 1>&2 && exit 1 - +repo_name="$(input_repo_name)"; repo_dir="/git/${repo_name}.git" if [ -d "$repo_dir" ]; then @@ -25,6 +15,8 @@ if [ -d "$repo_dir" ]; then exit 1; fi +description="$(input_repo_description "$repo_dir")" + git --bare init "$repo_dir" cd "$repo_dir" diff --git a/cgit/ssh/git-shell-commands/set-category b/cgit/ssh/git-shell-commands/set-category index 7f74b94..4450ff7 100755 --- a/cgit/ssh/git-shell-commands/set-category +++ b/cgit/ssh/git-shell-commands/set-category @@ -2,23 +2,18 @@ set -eu -if [ $# -lt 1 ]; then - echo "Usage: set-category <name> [category]" 1>&2 - exit 1 -fi - -repo_name="$1"; -[ -z "$repo_name" ] && echo "Error: empty repo name" 1>&2 && exit 1 -(echo "$repo_name" | grep -q "^[A-Za-z0-9_-]\+$" 2>/dev/null) || (echo "Error: invalid repo name" 1>&2 && exit 1) +. "$(dirname $0)/_utils/input.sh" -category="${2:-""}"; -repo_dir="/git/${repo_name}.git" +repo_path="$(select_repo_name)"; +repo_dir="/git/${repo_path}" if ! [ -d "$repo_dir" ]; then echo "Error: $repo_name doesn't exist" 1>&2 exit 1; fi +category="$(input_repo_category "$repo_dir")" + if [ -z "$category" ]; then git -C "$repo_dir" config unset gitweb.category else diff --git a/cgit/ssh/git-shell-commands/set-description b/cgit/ssh/git-shell-commands/set-description index ea0e52e..a0f55e0 100755 --- a/cgit/ssh/git-shell-commands/set-description +++ b/cgit/ssh/git-shell-commands/set-description @@ -2,25 +2,18 @@ set -eu -if [ $# -lt 2 ]; then - echo "Usage: set-description <name> <...description>" 1>&2 - exit 1 -fi - -repo_name="$1"; shift 1; -[ -z "$repo_name" ] && echo "Error: empty repo name" 1>&2 && exit 1 -(echo "$repo_name" | grep -q "^[A-Za-z0-9_-]\+$" 2>/dev/null) || (echo "Error: invalid repo name" 1>&2 && exit 1) +. "$(dirname $0)/_utils/input.sh" -description="$*"; -[ -z "$description" ] && echo "Error: empty description" 1>&2 && exit 1 - -repo_dir="/git/${repo_name}.git" +repo_path="$(select_repo_name)"; +repo_dir="/git/${repo_path}" if ! [ -d "$repo_dir" ]; then - echo "Error: $repo_name doesn't exist" 1>&2 + echo "Error: $repo_path doesn't exist" 1>&2 exit 1; fi +description="$(input_repo_description "$repo_dir")" + echo "$description" > "${repo_dir}/description" echo "Done" |
