2012-01-19 01:52:27 +08:00
|
|
|
|
# Restart a rack app running under pow
|
|
|
|
|
# http://pow.cx/
|
|
|
|
|
#
|
|
|
|
|
# Adds a kapow command that will restart an app
|
|
|
|
|
#
|
|
|
|
|
# $ kapow myapp
|
|
|
|
|
#
|
|
|
|
|
# Supports command completion.
|
|
|
|
|
#
|
|
|
|
|
# If you are not already using completion you might need to enable it with
|
2012-03-09 21:53:09 +08:00
|
|
|
|
#
|
2012-01-19 01:52:27 +08:00
|
|
|
|
# autoload -U compinit compinit
|
|
|
|
|
#
|
2012-01-19 01:58:13 +08:00
|
|
|
|
# Changes:
|
2012-01-19 01:52:27 +08:00
|
|
|
|
#
|
2012-03-09 21:53:09 +08:00
|
|
|
|
# Defaults to the current application, and will walk up the tree to find
|
2012-01-19 01:58:13 +08:00
|
|
|
|
# a config.ru file and restart the corresponding app
|
|
|
|
|
#
|
2012-03-09 21:53:09 +08:00
|
|
|
|
# Will Detect if a app does not exist in pow and print a (slightly) helpful
|
2012-01-19 01:58:13 +08:00
|
|
|
|
# error message
|
|
|
|
|
|
2012-03-09 21:53:09 +08:00
|
|
|
|
rack_root(){
|
2012-01-19 01:58:13 +08:00
|
|
|
|
setopt chaselinks
|
2014-10-09 19:55:50 +08:00
|
|
|
|
local orgdir="$PWD"
|
|
|
|
|
local basedir="$PWD"
|
2012-01-19 01:58:13 +08:00
|
|
|
|
|
|
|
|
|
while [[ $basedir != '/' ]]; do
|
|
|
|
|
test -e "$basedir/config.ru" && break
|
|
|
|
|
builtin cd ".." 2>/dev/null
|
2014-10-09 19:55:50 +08:00
|
|
|
|
basedir="$PWD"
|
2012-01-19 01:58:13 +08:00
|
|
|
|
done
|
|
|
|
|
|
2014-03-26 00:16:20 +08:00
|
|
|
|
builtin cd "$orgdir" 2>/dev/null
|
2012-01-19 01:58:13 +08:00
|
|
|
|
[[ ${basedir} == "/" ]] && return 1
|
2012-03-09 21:53:09 +08:00
|
|
|
|
echo $basedir
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
rack_root_detect(){
|
|
|
|
|
basedir=$(rack_root)
|
2012-01-19 01:58:13 +08:00
|
|
|
|
echo `basename $basedir | sed -E "s/.(com|net|org)//"`
|
2011-05-28 23:09:37 +08:00
|
|
|
|
}
|
2012-01-19 07:36:11 +08:00
|
|
|
|
|
2012-01-19 01:58:13 +08:00
|
|
|
|
kapow(){
|
|
|
|
|
local vhost=$1
|
|
|
|
|
[ ! -n "$vhost" ] && vhost=$(rack_root_detect)
|
|
|
|
|
if [ ! -h ~/.pow/$vhost ]
|
|
|
|
|
then
|
|
|
|
|
echo "pow: This domain isn’t set up yet. Symlink your application to ${vhost} first."
|
|
|
|
|
return 1
|
|
|
|
|
fi
|
2011-05-28 23:09:37 +08:00
|
|
|
|
|
2012-01-19 07:36:11 +08:00
|
|
|
|
[ ! -d ~/.pow/${vhost}/tmp ] && mkdir -p ~/.pow/$vhost/tmp
|
2012-01-19 01:58:13 +08:00
|
|
|
|
touch ~/.pow/$vhost/tmp/restart.txt;
|
|
|
|
|
[ $? -eq 0 ] && echo "pow: restarting $vhost.dev"
|
|
|
|
|
}
|
2012-01-19 03:18:09 +08:00
|
|
|
|
compctl -W ~/.pow -/ kapow
|
|
|
|
|
|
2012-01-19 07:36:11 +08:00
|
|
|
|
powit(){
|
2014-10-09 19:55:50 +08:00
|
|
|
|
local basedir="$PWD"
|
2012-01-19 07:36:11 +08:00
|
|
|
|
local vhost=$1
|
|
|
|
|
[ ! -n "$vhost" ] && vhost=$(rack_root_detect)
|
|
|
|
|
if [ ! -h ~/.pow/$vhost ]
|
2012-03-09 21:53:09 +08:00
|
|
|
|
then
|
|
|
|
|
echo "pow: Symlinking your app with pow. ${vhost}"
|
2014-03-26 00:16:20 +08:00
|
|
|
|
[ ! -d ~/.pow/${vhost} ] && ln -s "$basedir" ~/.pow/$vhost
|
2012-01-19 07:36:11 +08:00
|
|
|
|
return 1
|
|
|
|
|
fi
|
|
|
|
|
}
|
|
|
|
|
|
2012-03-09 21:53:09 +08:00
|
|
|
|
powed(){
|
2014-03-26 00:16:20 +08:00
|
|
|
|
local basedir="$(rack_root)"
|
2012-03-09 21:53:09 +08:00
|
|
|
|
find ~/.pow/ -type l -lname "*$basedir*" -exec basename {}'.dev' \;
|
|
|
|
|
}
|
|
|
|
|
|
2012-04-05 00:54:31 +08:00
|
|
|
|
# Restart pow process
|
|
|
|
|
# taken from http://www.matthewratzloff.com/blog/2011/12/23/restarting-pow-when-dns-stops-responding
|
|
|
|
|
repow(){
|
|
|
|
|
lsof | grep 20560 | awk '{print $2}' | xargs kill -9
|
|
|
|
|
launchctl unload ~/Library/LaunchAgents/cx.pow.powd.plist
|
|
|
|
|
launchctl load ~/Library/LaunchAgents/cx.pow.powd.plist
|
|
|
|
|
echo "restarted pow"
|
|
|
|
|
}
|
|
|
|
|
|
2012-01-19 03:18:09 +08:00
|
|
|
|
# View the standard out (puts) from any pow app
|
2014-03-26 00:16:20 +08:00
|
|
|
|
alias kaput="tail -f ~/Library/Logs/Pow/apps/*"
|