Created
June 10, 2011 21:05
-
-
Save csexton/1019777 to your computer and use it in GitHub Desktop.
Zsh function to restart an app running under pow
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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 | |
# | |
# autoload -U compinit compinit | |
# | |
# Changes: | |
# | |
# Defaults to the current application, and will walk up the tree to find | |
# a config.ru file and restart the corresponding app | |
# | |
# Will Detect if a app does not exist in pow and print a (slightly) helpful | |
# error message | |
rack_root_detect(){ | |
setopt chaselinks | |
local orgdir=$(pwd) | |
local basedir=$(pwd) | |
while [[ $basedir != '/' ]]; do | |
test -e "$basedir/config.ru" && break | |
builtin cd ".." 2>/dev/null | |
basedir="$(pwd)" | |
done | |
builtin cd $orgdir 2>/dev/null | |
[[ ${basedir} == "/" ]] && return 1 | |
echo `basename $basedir | sed -E "s/.(com|net|org)//"` | |
} | |
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 | |
[ ! -d "~/.pow/${vhost}/tmp" ] && mkdir -p "~/.pow/$vhost/tmp" | |
touch ~/.pow/$vhost/tmp/restart.txt; | |
[ $? -eq 0 ] && echo "pow: restarting $vhost.dev" | |
} | |
compctl -W ~/.pow -/ kapow | |
# View the standard out (puts) from any pow app | |
alias kaput="tail -f ~/Library/Logs/Pow/apps/*" |
you could also add a command separately to "pow" an app if it hasn't been already
powit(){
local basedir=$(pwd)
local vhost=$1
[ ! -n "$vhost" ] && vhost=$(rack_root_detect)
if [ ! -h ~/.pow/$vhost ]
then
echo "pow: Symlinking your app with pow. ${vhost}"
[ ! -d ~/.pow/${vhost} ] && ln -s $basedir ~/.pow/$vhost
return 1
fi
}
Thanks for sharing, that was really helpful :)
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
The biggest problem I had with this was if the app was not symlink'd in pow at all, it would create the directory with
mkdir -p
-- I addressed this in 70dbb4.