#!/bin/sh

template=""
while getopts "t:" opt; do
  case "$opt" in
    t) template=$OPTARG;shift;shift;;
  esac
done

if [ ! -z "$template" ]; then
  gitignoredir="`dirname $0`/../etc/gitignore"
  available_templates() {
    find $gitignoredir -type f -name *.gitignore | xargs -i basename {} .gitignore | sort
  }
  selected_template() {
    available_templates | grep $template
  }
  count=$(selected_template | wc -w)
  case "$count" in
    0) echo "The pattern '$template' does not match any available templates." && available_templates | less && exit 1;;
    1) find $gitignoredir -name $(selected_template).gitignore -exec cat {} \; >> .gitignore && echo "... added patterns from template '$(selected_template)'";;
    *) echo "Be more specific. $count matches found:" && selected_template | grep --color $template && exit 2;;
  esac
fi

if test $# -eq 0; then
  test -z $template && test -f .gitignore && cat .gitignore
else
  for pattern in $@; do
    echo $pattern >> .gitignore
    echo "... added '$pattern'"
  done
fi
