manager/.helpers/git/generate-git-config

63 lines
1.9 KiB
Bash
Executable file

#!/usr/bin/env bash
set -euo pipefail
GIT_ROOT_DIR="$( cd "$( dirname $0 )/../.." && pwd )"
GIT_DOTFILES_DIR="${GIT_ROOT_DIR}/config/git"
PARAMETER_FILE="${GIT_DOTFILES_DIR}/config/gitconfig-parameters"
GITCONFIG_FILE="${GIT_DOTFILES_DIR}/gitconfig"
GITIGNORE_FILE="${GIT_DOTFILES_DIR}/gitignore"
GITMESSAGE_FILE="${GIT_DOTFILES_DIR}/gitmessage"
GIT_OUTPUT_ROOT_DIR="${XDG_CONFIG_HOME}/git"
GITCONFIG_OUTPUT="${GIT_OUTPUT_ROOT_DIR}/config"
GITIGNORE_OUTPUT="${GIT_OUTPUT_ROOT_DIR}/ignore"
GITMESSAGE_OUTPUT="${GIT_OUTPUT_ROOT_DIR}/message"
validate_params() {
if [ -z ${GIT_USER_NAME+x} ]; then
echo "ERROR: 'GIT_USER_NAME' is not set or is empty in ${PARAMETER_FILE}"
return 1
fi
if [ -z ${GIT_USER_EMAIL+x} ]; then
echo "ERROR: 'GIT_USER_EMAIL' is not set or is empty in ${PARAMETER_FILE}"
return 1
fi
if [ -z ${GIT_USER_SIGNINGKEY+x} ]; then
echo "ERROR: 'GIT_USER_SIGNINGKEY' is not set or is empty in ${PARAMETER_FILE}"
return 1
fi
return 0
}
echo "INFO: Attempting to source parameters from ${PARAMETER_FILE}."
test -f ${PARAMETER_FILE} && source ${PARAMETER_FILE}
echo "INFO: Validating parameters."
validate_params || exit 1
if ! [ -d ${GIT_OUTPUT_ROOT_DIR} ]; then
echo "INFO: Creating directory ${GIT_OUTPUT_ROOT_DIR}"
mkdir ${GIT_OUTPUT_ROOT_DIR}
fi
echo "INFO: Generating the gitconfig file and installing it to ${GITCONFIG_OUTPUT}."
gitmessage_output=${GITMESSAGE_OUTPUT} \
gitignore_output=${GITIGNORE_OUTPUT} \
git_user_name=${GIT_USER_NAME} \
git_user_email=${GIT_USER_EMAIL} \
git_user_signingkey=${GIT_USER_SIGNINGKEY} \
envsubst < ${GITCONFIG_FILE} > ${GITCONFIG_OUTPUT}
chmod a-rwx,u+rw ${GITCONFIG_OUTPUT}
echo "INFO: Installing ${GITIGNORE_OUTPUT}."
rsync -avh ${GITIGNORE_FILE} ${GITIGNORE_OUTPUT} && chmod a-rwx,u+rw $_
echo "INFO: Installing ${GITMESSAGE_OUTPUT}."
rsync -avh ${GITMESSAGE_FILE} ${GITMESSAGE_OUTPUT} && chmod a-rwx,u+rw $_