diff options
Diffstat (limited to 'oh-my-zsh/plugins/pow')
-rw-r--r-- | oh-my-zsh/plugins/pow/README.md | 21 | ||||
-rw-r--r-- | oh-my-zsh/plugins/pow/pow.plugin.zsh | 85 |
2 files changed, 106 insertions, 0 deletions
diff --git a/oh-my-zsh/plugins/pow/README.md b/oh-my-zsh/plugins/pow/README.md new file mode 100644 index 0000000..1f8a9d1 --- /dev/null +++ b/oh-my-zsh/plugins/pow/README.md @@ -0,0 +1,21 @@ +# pow plugin + +This plugin adds completion and commands for [pow](http://pow.cx/), a +zero-configuration Rack server for macOS. + +To use it, add pow to the plugins array of your zshrc file: + +```sh +plugins=(... pow) +``` + +## Commands + +- `kapow` will restart an app. + + ```bash + kapow myapp + ``` + +- `kaput` will show the standard output from any pow app. +- `repow` will restart the pow process. diff --git a/oh-my-zsh/plugins/pow/pow.plugin.zsh b/oh-my-zsh/plugins/pow/pow.plugin.zsh new file mode 100644 index 0000000..0b8ccd1 --- /dev/null +++ b/oh-my-zsh/plugins/pow/pow.plugin.zsh @@ -0,0 +1,85 @@ +# 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(){ + 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 +} + +rack_root_detect(){ + basedir=$(rack_root) + 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 + +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 +} + +powed(){ + local basedir="$(rack_root)" + find ~/.pow/ -type l -lname "*$basedir*" -exec basename {}'.dev' \; +} + +# Restart pow process +# taken from https://www.matthewratzloff.com +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" +} + +# View the standard out (puts) from any pow app +alias kaput="tail -f ~/Library/Logs/Pow/apps/*" |