#!/bin/sh

# delete_trailing_whitespace.sh
# 2010-08-16
# by Gernot WALZL

# Deletes all trailing whitespace
# recursively for all files with a given extension inside a folder.


path="$1"
ext="$2"

print_usage () {
  echo "Usage:"
  echo "  delete_trailing_whitespace.sh path extension"
  echo "  delete_trailing_whitespace.sh file"
}

delete_trailing_whitespace () {
  file="$1"
  if [ -w "${file}" ]; then
    sed 's/[ \t]*$//' "${file}" > "${file}.new"
    if [ $(diff "${file}" "${file}.new" | wc -l) -gt 0 ]; then
      echo "${file}"
      mv "${file}.new" "${file}"
    else
      rm "${file}.new"
    fi
  fi
}

if [ -d "$path" ]; then
  if [ -z "$ext" ]; then
    print_usage
    exit 1
  fi
  files=$(find "${path}" -name "*.${ext}")
  for file in $files; do
    delete_trailing_whitespace "$file"
  done
elif [ -f "$path" ]; then
  file="$path"
  delete_trailing_whitespace "$file"
else
  print_usage
  exit 1
fi