Skip to content
Browse files

take in csexton's changes

  • Loading branch information...
1 parent 741f674 commit c1a04eb61fcdd740bef52cd9da75fd72aeac3cf4 John Antoni Griffiths committed
Showing with 34 additions and 9 deletions.
  1. +34 −9 plugins/pow/pow.plugin.zsh
View
43 plugins/pow/pow.plugin.zsh
@@ -4,7 +4,6 @@
# Adds a kapow command that will restart an app
#
# $ kapow myapp
-# $ kapow # defaults to current directory
#
# Supports command completion.
#
@@ -12,14 +11,40 @@
#
# autoload -U compinit compinit
#
-# Thanks also to Christopher Sexton
-# https://gist.github.com/965032
+# Changes:
#
-function kapow {
- FOLDERNAME=$1
- if [ -z "$FOLDERNAME" ]; then; FOLDERNAME=${PWD##*/}; fi
- touch ~/.pow/$FOLDERNAME/tmp/restart.txt;
- if [ $? -eq 0 ]; then; echo "pow: restarting $FOLDERNAME" ; fi
+# 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
-compctl -W ~/.pow -/ kapow
+ [ ! -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

0 comments on commit c1a04eb

Please sign in to comment.
Something went wrong with that request. Please try again.