diff options
| author | kar <kar@13f0.net> | 2025-07-31 11:42:27 -0400 |
|---|---|---|
| committer | kar <kar@13f0.net> | 2025-07-31 11:42:27 -0400 |
| commit | 6573500de6ca44122cda3b11188a9f482990906b (patch) | |
| tree | af51f20f7a97c3fe7d956ed20599e59785ce7ead | |
| parent | 60645c35e301e1241697ae38b0746436d501f799 (diff) | |
| -rwxr-xr-x | contrib/git-credential-kasi | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/contrib/git-credential-kasi b/contrib/git-credential-kasi new file mode 100755 index 0000000..794ef62 --- /dev/null +++ b/contrib/git-credential-kasi | |||
| @@ -0,0 +1,36 @@ | |||
| 1 | #!/bin/sh | ||
| 2 | # reads git's request on stdin and prints credentials to stdout | ||
| 3 | # this script is made for overleaf's non-standard ssh-less git | ||
| 4 | # but it can be trivially modified for other git http auth | ||
| 5 | |||
| 6 | # Setup: | ||
| 7 | # git config --global credential.helper kasi | ||
| 8 | # git config --global credential.https://git.overleaf.com/.username git | ||
| 9 | |||
| 10 | set -euo pipefail | ||
| 11 | |||
| 12 | # read the command from Git | ||
| 13 | if [ -n "$1" ]; then cmd="$1"; else read cmd || exit 1; fi | ||
| 14 | |||
| 15 | case "$cmd" in | ||
| 16 | # easier on me to manually handle credentials | ||
| 17 | store) ;; | ||
| 18 | erase) ;; | ||
| 19 | |||
| 20 | # git is fine with nothing responded to this | ||
| 21 | capability*) ;; | ||
| 22 | |||
| 23 | # the only command needed | ||
| 24 | get) | ||
| 25 | host="$(awk -F'=' '/^host=/ {print $2; exit}' <&0)" | ||
| 26 | [ "$host" != "git.overleaf.com" ] && exit 0 | ||
| 27 | |||
| 28 | password="$(kasi view 'university/overleaf' | awk '/^Git:/ {print $2}')" | ||
| 29 | echo "username=git" | ||
| 30 | echo "password=$password" | ||
| 31 | ;; | ||
| 32 | *) | ||
| 33 | echo >&2 "Unknown command received by git-credential-kasi: $cmd" | ||
| 34 | exit 1 | ||
| 35 | ;; | ||
| 36 | esac | ||
