I'd like to say that I write useful code all the time, but let's face facts... useful code doesn't come around all that often. In my new job I'm using Maven instead of SBT and I miss the cool tilde modifier in a big way. And now that I'm using the Artima book building strategy - which is based on Ant - I miss it even more.

So I finally wrote this little script that's saving my ass.

#!/bin/bash

command="$1"
shift
fileSpec="$@"
sentinel=/tmp/t.$$

touch -t197001010000 $sentinel
while :
do
  files=$(find . -newer $sentinel -a '(' $fileSpec ')')
  if [ $? != 0 ]; then
    exit 1;
  fi
  if [ "$files" != "" ]; then
    $command
    touch $sentinel
  fi
  sleep 0.1
done

I tend to use it in a number of different ways, but one of the simple ones is like this:

execOnChange.sh "mvn test" -name \*.java

And that's all she wrote.