#!/bin/bash
Prog=${0##*/}

function fail
{
    set +exu
    local ret=${1}
    shift
    echo "${Prog}:" "${@}" >&2
    exit "${ret}"
}

function require_program
{
    command -v "${1}" &>/dev/null ||
        fail 127 "Required program '${1}' not found in PATH"
}

require_program git
require_program etckeeper

git config --global --get user.name &> /dev/null || (
    git config --global user.name "root"
    git config --global user.email "root@$(hostname -f)"
)
git config --global --get init.defaultBranch &> /dev/null || git config --global init.defaultBranch main
cd /etc || exit
if [[ -e .git ]]
then
    fail 3 "Cowardly refusing to overwrite existing .git"
fi
touch .gitignore
{
    echo "/grid-security/certificates"
    echo "/selinux/targeted"
    echo "/puppetlabs/code/environments"
} >> .gitignore
etckeeper init || fail 4 "init failed"
etckeeper commit "initial commit" || fail 5 "initial commit failed"
etckeeper vcs gc
