dgmike
2/3/2017 - 9:22 PM

Watch some paths and run rspec with defined arguments

Watch some paths and run rspec with defined arguments

# Watch some path and run rspec with defined arguments
#
# usage:
#   watch_rspec watch_path1 watch_path2 -- rspec_arguments
#
function watch_rspec
{
    local WATCH_FILES
    local ARGUMENTS

    while [ $# -ne 0 ]; do
      if [ "$1" == "--" ]; then
        shift
        break
      fi
      WATCH_FILES+="$1 "
      shift
    done
    ARGUMENTS=$*

    local NEW=
    local OLD=`gfind ${WATCH_FILES} -type f -printf '%T@ %S %M %h/%f\n' | md5`

    echo "+ watching ${WATCH_FILES}"

    while true; do
        NEW=`gfind ${WATCH_FILES} -type f -printf '%T@ %S %M %h/%f\n' | md5`
        if [ "$OLD" != "$NEW" ]; then
            echo "+ rspec" $ARGUMENTS
            rspec $ARGUMENTS
            OLD=$NEW
        fi
        sleep 1
    done
}

# vim: set ts=4 sw=4 tw=0 et :