#!/usr/bin/env bash playbook_add() { case "${BASHTARD_PLATFORM[distro]}" in gentoo) mkdir -pv "/etc/portage/package.use" printf "acct-user/git gitolite" > /etc/portage/package.use/bashtard-gitolite ;; *) notice "$BASHTARD_PLAYBOOK" "Creating user 'git'" useradd \ --home-dir "$(config "git.repodir")" \ --create-home \ --shell "$(config "fs.bindir")/git-shell" \ git ;; esac notice "$BASHTARD_PLAYBOOK" "Installing packages" pkg install \ "$(config "pkg.gitolite")" playbook_sync } playbook_sync() { notice "$BASHTARD_PLAYBOOK" "Ensuring all desired repositories exist" while read -r repo do local name="$(config "git.repos.$repo.name" "$repo")" local path="$(config "git.repodir")/$(config "git.repos.$repo.path" "$name")" info "$BASHTARD_PLAYBOOK" "Ensuring $name exists ($repo)" if [[ ! -d "$path" ]] then notice "$BASHTARD_PLAYBOOK" "Creating bare repository at $path" mkdir -pv -- "$path" git -C "$path" --bare init fi printf "$(config "git.repos.$repo.description" "Nondescript")\n" > "$path/description" done < <(config_subkeys "git.repos") } playbook_del() { notice "$BASHTARD_PLAYBOOK" "Removing packages" pkg uninstall \ "$(config "pkg.gitolite")" notice "$BASHTARD_PLAYBOOK" "Cleaning up srv directory" rm -frv --one-file-system -- "$(config "git.repodir")" }