#!/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 $_