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" }