Browse Source

take in csexton's changes

https://gist.github.com/1019777/70dbb46db9bd5b346faf543a9dd4edac4782adda
John Antoni Griffiths 13 years ago
parent
commit
c1a04eb61f
1 changed files with 34 additions and 9 deletions
  1. 34 9
      plugins/pow/pow.plugin.zsh

+ 34 - 9
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