64 lines
1.9 KiB
Text
64 lines
1.9 KiB
Text
|
#!/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 $_
|