SBT's automatic recompile when a file changes made me realize that I wanted that functionality with everything I do, and so I scripted it.
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.