1# Restart a rack app running under pow 2# http://pow.cx/ 3# 4# Adds a kapow command that will restart an app 5# 6# $ kapow myapp 7# 8# Supports command completion. 9# 10# If you are not already using completion you might need to enable it with 11# 12# autoload -U compinit compinit 13# 14# Changes: 15# 16# Defaults to the current application, and will walk up the tree to find 17# a config.ru file and restart the corresponding app 18# 19# Will Detect if a app does not exist in pow and print a (slightly) helpful 20# error message 21 22rack_root(){ 23 setopt chaselinks 24 local orgdir="$PWD" 25 local basedir="$PWD" 26 27 while [[ $basedir != '/' ]]; do 28 test -e "$basedir/config.ru" && break 29 builtin cd ".." 2>/dev/null 30 basedir="$PWD" 31 done 32 33 builtin cd "$orgdir" 2>/dev/null 34 [[ ${basedir} == "/" ]] && return 1 35 echo $basedir 36} 37 38rack_root_detect(){ 39 basedir=$(rack_root) 40 echo `basename $basedir | sed -E "s/.(com|net|org)//"` 41} 42 43kapow(){ 44 local vhost=$1 45 [ ! -n "$vhost" ] && vhost=$(rack_root_detect) 46 if [ ! -h ~/.pow/$vhost ] 47 then 48 echo "pow: This domain isn’t set up yet. Symlink your application to ${vhost} first." 49 return 1 50 fi 51 52 [ ! -d ~/.pow/${vhost}/tmp ] && mkdir -p ~/.pow/$vhost/tmp 53 touch ~/.pow/$vhost/tmp/restart.txt; 54 [ $? -eq 0 ] && echo "pow: restarting $vhost.dev" 55} 56compctl -W ~/.pow -/ kapow 57 58powit(){ 59 local basedir="$PWD" 60 local vhost=$1 61 [ ! -n "$vhost" ] && vhost=$(rack_root_detect) 62 if [ ! -h ~/.pow/$vhost ] 63 then 64 echo "pow: Symlinking your app with pow. ${vhost}" 65 [ ! -d ~/.pow/${vhost} ] && ln -s "$basedir" ~/.pow/$vhost 66 return 1 67 fi 68} 69 70powed(){ 71 local basedir="$(rack_root)" 72 find ~/.pow/ -type l -lname "*$basedir*" -exec basename {}'.dev' \; 73} 74 75# Restart pow process 76# taken from https://www.matthewratzloff.com 77repow(){ 78 lsof | grep 20560 | awk '{print $2}' | xargs kill -9 79 launchctl unload ~/Library/LaunchAgents/cx.pow.powd.plist 80 launchctl load ~/Library/LaunchAgents/cx.pow.powd.plist 81 echo "restarted pow" 82} 83 84# View the standard out (puts) from any pow app 85alias kaput="tail -f ~/Library/Logs/Pow/apps/*" 86