diff options
| author | quentin@aristote.fr <quentin@aristote.fr> | 2026-01-25 20:19:01 +0100 |
|---|---|---|
| committer | quentin@aristote.fr <quentin@aristote.fr> | 2026-01-25 20:48:23 +0100 |
| commit | d00f8fb1791e6f412d4a8898b53cdbe3cac20daa (patch) | |
| tree | 9d493ea1c2af4721be7a27f72470dcb818fd2c47 /config/services/git/shell-commands/repo/src/lib | |
| parent | fbb1709e1504280ca5576f91d85bb7f5dfeff37a (diff) | |
git: add shell-commands
Diffstat (limited to 'config/services/git/shell-commands/repo/src/lib')
9 files changed, 65 insertions, 0 deletions
diff --git a/config/services/git/shell-commands/repo/src/lib/check-git-repository.sh b/config/services/git/shell-commands/repo/src/lib/check-git-repository.sh new file mode 100644 index 0000000..c974890 --- /dev/null +++ b/config/services/git/shell-commands/repo/src/lib/check-git-repository.sh @@ -0,0 +1,7 @@ +check-git-repository() { + if [[ ! $(is-git-dir "$1") ]] + then + red "Not a git repository." + exit 2 + fi +} diff --git a/config/services/git/shell-commands/repo/src/lib/check-realpath.sh b/config/services/git/shell-commands/repo/src/lib/check-realpath.sh new file mode 100644 index 0000000..c344bd2 --- /dev/null +++ b/config/services/git/shell-commands/repo/src/lib/check-realpath.sh @@ -0,0 +1,9 @@ +check-realpath() { + local path="$1" + if [[ ! -e "$path" ]] \ + || [[ ! "$path" == /srv/git/* ]] + then + red "Forbidden path." + exit 2 + fi +} diff --git a/config/services/git/shell-commands/repo/src/lib/colors.sh b/config/services/git/shell-commands/repo/src/lib/colors.sh new file mode 100644 index 0000000..a78911d --- /dev/null +++ b/config/services/git/shell-commands/repo/src/lib/colors.sh @@ -0,0 +1,14 @@ +print_in_color() { + local color="$1" + shift + if [[ "${NO_COLOR:-}" == "" ]]; then + printf "$color%b\e[0m\n" "$*" + else + printf "%b\n" "$*" + fi +} + +red() { print_in_color "\e[31m" "$*"; } +green() { print_in_color "\e[32m" "$*"; } +blue() { print_in_color "\e[34m" "$*"; } +bold() { print_in_color "\e[1m" "$*"; } diff --git a/config/services/git/shell-commands/repo/src/lib/is-git-dir.sh b/config/services/git/shell-commands/repo/src/lib/is-git-dir.sh new file mode 100644 index 0000000..d94f2ba --- /dev/null +++ b/config/services/git/shell-commands/repo/src/lib/is-git-dir.sh @@ -0,0 +1,3 @@ +is-git-dir() { + git rev-parse --resolve-git-dir "$1" 2>/dev/null +} diff --git a/config/services/git/shell-commands/repo/src/lib/show-descr.sh b/config/services/git/shell-commands/repo/src/lib/show-descr.sh new file mode 100644 index 0000000..edf6d34 --- /dev/null +++ b/config/services/git/shell-commands/repo/src/lib/show-descr.sh @@ -0,0 +1,3 @@ +show-descr() { + echo "| $(cat "$1"/description)" +} diff --git a/config/services/git/shell-commands/repo/src/lib/show-privacy.sh b/config/services/git/shell-commands/repo/src/lib/show-privacy.sh new file mode 100644 index 0000000..11df8d1 --- /dev/null +++ b/config/services/git/shell-commands/repo/src/lib/show-privacy.sh @@ -0,0 +1,12 @@ +show-privacy() { + local mode=$(( $(stat -c %a "$1")/10 %10 )) + if [[ $mode == 0 ]] + then + red private + elif [[ $mode == 5 ]] + then + green public + else + blue unknown + fi +} diff --git a/config/services/git/shell-commands/repo/src/lib/show-repo-summary.sh b/config/services/git/shell-commands/repo/src/lib/show-repo-summary.sh new file mode 100644 index 0000000..7c0bf63 --- /dev/null +++ b/config/services/git/shell-commands/repo/src/lib/show-repo-summary.sh @@ -0,0 +1,8 @@ +show-repo-summary() { + local repo="$1" + local name="${repo#/srv/git/}" + local privacy=$(show-privacy "$repo") + local size=$(show-size "$repo") + printf "%-16s %4s " "$privacy" "$size" + bold "$name" +} diff --git a/config/services/git/shell-commands/repo/src/lib/show-repo.sh b/config/services/git/shell-commands/repo/src/lib/show-repo.sh new file mode 100644 index 0000000..d125341 --- /dev/null +++ b/config/services/git/shell-commands/repo/src/lib/show-repo.sh @@ -0,0 +1,6 @@ +show-repo() { + local repo="$1" + show-repo-summary "$repo" + printf "%13s" "" + show-descr "$repo" +} diff --git a/config/services/git/shell-commands/repo/src/lib/show-size.sh b/config/services/git/shell-commands/repo/src/lib/show-size.sh new file mode 100644 index 0000000..739f61d --- /dev/null +++ b/config/services/git/shell-commands/repo/src/lib/show-size.sh @@ -0,0 +1,3 @@ +show-size() { + du --human-readable --summarize "$1" | cut --field 1 +} |
