#!/bin/sh
set -e

if [ "$VCS" = git ] && [ ! -e .gitignore ]; then
	file=.gitignore
elif [ "$VCS" = hg ] && [ ! -e .hgignore ]; then
	file=.hgignore
fi

if [ -z "$file" ] || [ -e "$file" ]; then
	exit 0
fi

nl() {
	echo >>$file
}

comment() {
	comment="$1"
	echo "# $comment" >>$file
}

ignore() {
	glob="$1"
	
	case "$VCS" in
		git)
			echo "$glob" >> $file
		;;
		hg)
			# rather than converting the glob to a regexp, just
			# configure hg to use globs
			if [ -z "$hg_syntax_printed" ]; then
				comment "use glob syntax"
				echo "syntax: glob" >> $file
				nl
				hg_syntax_printed=1
			fi
			echo "$glob" >> $file
		;;
	esac
}

if [ "$LOWLEVEL_PACKAGE_MANAGER" = dpkg ]; then
	comment "new and old versions of conffiles, stored by dpkg"
	ignore "*.dpkg-*"
	nl
elif [ "$LOWLEVEL_PACKAGE_MANAGER" = "rpm" ]; then
	comment "new and old versions of conffiles, stored by apt/rpm"
	ignore "*.rpm*"
	nl
elif [ "$LOWLEVEL_PACKAGE_MANAGER" = "pacman-g2" ]; then
	comment "new and old versions of conffiles, stored by pacman"
	ignore "*.pacnew"
	ignore "*.pacorig"
	ignore "*.pacsave"
	nl
fi

ignore "*~"
nl

comment "mount(8) records system state here, no need to store these"
ignore blkid.tab
ignore blkid.tab.old
nl

comment "some other files in /etc that typically do not need to be tracked"
ignore nologin
ignore ld.so.cache
ignore mtab
ignore .pwd.lock
ignore network/run
ignore adjtime
ignore lvm/cache
nl
