#!/bin/sh main() { if [ $# -lt 1 ]; then usage fi DO_CMD=$1 shift 1 WD=$(pwd) case $DO_CMD in git_sparse_checkout) git_sparse_checkout $@ ;; user_git_pull) user_git_pull $@ ;; *) usage ;; esac } # ----------- End Of Main Switch / Start Of Modular Code ----------- usage() { cat< []" fi exit 0 rurl="$1" privkey="$(realpath $2)" localdir="$3" shift 3 export GIT_SSH_COMMAND="ssh -i ${privkey} -o IdentitiesOnly=yes" sudo mkdir -p "$localdir" sudo chown $USER "$localdir" cd "$localdir" git init git remote add -f origin "$rurl" git config core.sparseCheckout true # Loops over remaining args for i; do echo "$i" >> .git/info/sparse-checkout done git pull origin main exit $? } user_git_pull() { if [ "$#" -lt 4 ]; then echo "Usage: user_git_pull " fi user="$1" folder="$2" privkey="$3" repo="$4" shift 4 export GIT_SSH_COMMAND="ssh -i ${privkey} -o IdentitiesOnly=yes" sudo mkdir -p ${folder} sudo chown ${user} ${folder} sudo -u ${user} git clone ${repo} ${folder} exit $? } main $@