#!/usr/bin/env bash

_msg=${1:-'etcrepo commit'}

REPO_DIR=/etc
TMP_DIR=/tmp
FILE_PREFIX=.ETC_REPO
FILE_LIST=${FILE_PREFIX}.File.list
FILE_PKG_LIST=${FILE_PREFIX}.Pkg.list
FILE_PKG_PRIME_LIST=${FILE_PREFIX}.Pkg-Prime.list

cd $REPO_DIR

function diffedOutFile() {

  local _file=$1

  if [ -f ${REPO_DIR}/${_file} ]; then
    diff ${REPO_DIR}/${_file} ${TMP_DIR}/${_file}.tmp >/dev/null
    if [ $? -eq 0 ]; then
      rm ${TMP_DIR}/${_file}.tmp
      return
    fi
  fi
  mv ${TMP_DIR}/${_file}.tmp ${REPO_DIR}/${_file}

}

pkg query -e '%a = 0' '%n::%o::%R' >${TMP_DIR}/${FILE_PKG_PRIME_LIST}.tmp
diffedOutFile ${FILE_PKG_PRIME_LIST}

pkg info >${TMP_DIR}/${FILE_PKG_LIST}.tmp
diffedOutFile ${FILE_PKG_LIST}

find ${REPO_DIR} | grep -v '^./.git' | grep -v "^./${FILE_PREFIX}" | grep -v '^\.$' | xargs ls -aldT >${TMP_DIR}/${FILE_LIST}.tmp
diffedOutFile ${FILE_LIST}

git add -A
git commit -m "${_msg}" -a
git push

