#!/usr/bin/env bash

# Which branch should we compare HEAD with for changed files? (defaults: 'development')
BRANCH='development'
DIRS='app lib'

while getopts 'b:d:' optname
do
  case "$optname" in
    "b")
      BRANCH=$OPTARG
      ;;
    "d")
      DIRS=$OPTARG
      ;;
  esac
done

# Get a list of all files that have changed on this branch in app and lib directories.
CHANGED_FILES=$(git diff --name-only $BRANCH -- $DIRS)

# A string with the name of each changed file
EXISTING_FILES=""

# Iterate over each changed file
for FILEPATH in $CHANGED_FILES
do
  # Append this filename if the file still exists (in case the file has been deleted)
  if [ -f $FILEPATH ]; then
    EXISTING_FILES+=" $FILEPATH"
  fi
done

# If there are no files that have been changed...
if [ -z "$EXISTING_FILES" ]
then
  # Print a message and exit
  echo "Rubocop changed: No matching files have changed."
  exit 0
else
  # Run Rubocop against the files that have chagned
  rubocop -p $EXISTING_FILES
fi
