holy-project/scaffold/auto-update
Yann Esposito (Yogsototh) d9d3297c23 fix the auto-update script
2014-04-18 20:21:33 +02:00

51 lines
1.4 KiB
Bash
Executable file

#!/usr/bin/env zsh
autoload colors
colors
for COLOR in RED GREEN YELLOW BLUE MAGENTA CYAN BLACK WHITE; do
eval $COLOR='$fg_no_bold[${(L)COLOR}]'
eval BOLD_$COLOR='$fg_bold[${(L)COLOR}]'
done
eval RESET='$reset_color'
latestThread=0
relaunchCompilation() {
while read line; do
if (( $( print -- $line | grep '.cabal-sandbox' | wc -l) == 0 )); then
(($latestThread>0)) && \
(( $(ps x | awk "\$1 == $latestThread" | wc -l)>0 )) && {
print -- "\n${RED}STOPPED${RESET}"
kill $latestThread
}
print "${BLUE}$line${RESET}"
{ cabal install && \
./.cabal-sandbox/bin/test-{{projectName}} } &
latestThread=$!
fi
done
}
echo "First launch" | relaunchCompilation
case $(uname) in
Darwin)
# On mac OS X, use hobbes (cabal install hobbes)
# launch a cabal install and cabal test after each
# small haskell file modification
{hobbes "*.hs" | relaunchCompilation } &
hobbes "*.cabal" | relaunchCompilation
;;
*) # On other Unixes
tmp=$(date +"%s")
t=$tmp
while true; do
tmp=$(( $t - 1 ))
t=$(date +"%s")
for fic in {src,test}/**/*.hs(.) *.cabal; do
# note to use on OS X, use "stat -f %m $checkfile" instead
modtime=$(stat --printf %Y $fic)
(( $modtime > $tmp )) && print $fic
done
sleep 1
done | relaunchCompilation
;;
esac