Browse Source

Merge pull request #850 from johnantoni/pow-fix

take in chris sexton's changes to the pow plugin
Robby Russell 12 years ago
parent
commit
512a6e54a3
1 changed files with 63 additions and 7 deletions
  1. 63 7
      plugins/pow/pow.plugin.zsh

+ 63 - 7
plugins/pow/pow.plugin.zsh

@@ -1,10 +1,66 @@
-# Thanks to Christopher Sexton
-# https://gist.github.com/965032
-function kapow {
-	touch ~/.pow/$1/tmp/restart.txt
-	if [ $? -eq 0 ]; then
-		echo "$fg[yellow]Pow restarting $1...$reset_color"
-	fi
+# 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
+
+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
+}
+
+# View the standard out (puts) from any pow app
+alias kaput="tail -f ~/Library/Logs/Pow/apps/*"