#!/bin/sh # vim: sw=2 name=alms host=login.eecs.northwestern.edu remote=public_html/pubs/$name extensions=src/extensions.txt version="`awk '$0 ~ /^VERSION *= / { print $3 }' Makefile`" assert_has_argument () { local argument expected argument="$1"; shift expected="$1"; shift if [ -z "$argument" ]; then echo "$0 $cmd: $expected expected\nUsage: $0 $cmd $@" >&2 exit 1 fi } if [ -z "$1" ]; then set showVersion fi while [ -n "$1" ]; do cmd="$1"; shift case "$cmd" in release) assert_has_argument "$1" 'version number' VERSION ver="$1"; shift set version "$ver" clean dist send link "$@" ;; hackage-check) cabal upload -c $name-$version.tar.gz ;; hackage-upload) cabal upload $name-$version.tar.gz ;; hackage) set dist hackage-upload "$@" ;; clean) rm $name*.tar.gz ;; dist) make dist ;; send) scp -p $name-$version.tar.gz $host:$remote/ ;; link) ssh $host "cd $remote; DISPLAY='' ex -c '/$name-[0-9.]*[.]tar[.]gz/s/-[0-9.]*[.]tar/-$version.tar/|:wq' index.html; rm $name.tar.gz; ln -s '$name-$version.tar.gz' $name.tar.gz" ;; edit) ssh $host -t vim $remote/index.html ;; extensions) perl -pe 's/\n/ /; s/\b\w+\b/-X$&/' $extensions ;; ghci) ghci -isrc `$0 extensions` "$@" set -- ;; mv) assert_has_argument "$1" 'source path' SRC DST assert_has_argument "$2" 'destination path' SRC DST src="$1"; shift dst="$1"; shift git mv "$src" "$dst" && mv "$dst" "$src" && svn mv "$src" "$dst" ;; ci) git log svn-head..HEAD | svn ci -F - git tag -f svn-head ;; ci-m) assert_has_argument "$1" 'commit message' MESSAGE msg="$1"; shift git ca -m "$msg" set ci "$@" ;; add) assert_has_argument "$1" 'something to add' PATH... git add "$@" svn add "$@" set -- ;; version) assert_has_argument "$1" 'version number' VERSION version="$1"; shift git stash ex -c "/^VERSION *=/s/=.*/= $version/|:wq" Makefile make $name.cabal git add Makefile $name.cabal git commit -m "version bump: $version" git tag "$version" git stash apply set showVersion "$@" ;; showVersion) echo $version ;; *) echo "What does '$cmd' mean?" >&2 exit 1 ;; esac done