ohmyzsh/plugins/pow/pow.plugin.zsh
2011-09-07 15:54:53 +02:00

81 lines
No EOL
2 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Thanks to Christopher Sexton
# https://gist.github.com/1019777
# 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 $basedir
}
kapow(){
local vhost=$1
[ ! -n "$vhost" ] && vhost=$(basename `rack_root_detect` | sed -E "s/.(com|net|org)//")
if [ ! -h ~/.pow/$vhost ]
then
echo "pow: This domain isnt 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"
}
# The powinit command symlinks a dir to ~/.pow
#
# $ powinit /path/to/myapp
#
# powinit alone uses the working dir:
#
# $ powinit
powinit(){
local full_path=$1
[ -n "$full_path" ] && full_path=$(echo $full_path(:A))
[ ! -n "$full_path" ] && full_path=$(rack_root_detect)
if [ ! -n "$full_path" ]
then
echo "pow: Not a rack app"
return 1
fi
local vhost=$(basename $full_path | sed -E "s/.(com|net|org)//")
if [ -h ~/.pow/$vhost ]
then
echo "pow: This domain is already set up. Remove the symlink in ~/.pow to reconfigure."
return 1
fi
ln -s $full_path ~/.pow/$vhost
echo "pow: Application set up on http://$vhost.dev"
}
compctl -W ~/.pow -/ kapow
# View the standard out (puts) from any pow app
alias kaput="tail -f ~/Library/Logs/Pow/apps/*"