pow.plugin.zsh 2.08 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
# 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
cmar's avatar
cmar committed
11
#
12
13
#    autoload -U compinit compinit
#
14
# Changes:
15
#
cmar's avatar
cmar committed
16
# Defaults to the current application, and will walk up the tree to find
17
18
# a config.ru file and restart the corresponding app
#
cmar's avatar
cmar committed
19
# Will Detect if a app does not exist in pow and print a (slightly) helpful
20
21
# error message

cmar's avatar
cmar committed
22
rack_root(){
23
24
25
26
27
28
29
30
31
32
33
34
  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
cmar's avatar
cmar committed
35
36
37
38
39
  echo $basedir
}

rack_root_detect(){
  basedir=$(rack_root)
40
  echo `basename $basedir | sed -E "s/.(com|net|org)//"`
Andrew Hodges's avatar
Andrew Hodges committed
41
}
42

43
44
45
46
47
48
49
50
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
Andrew Hodges's avatar
Andrew Hodges committed
51

52
  [ ! -d ~/.pow/${vhost}/tmp ] && mkdir -p ~/.pow/$vhost/tmp
53
54
55
  touch ~/.pow/$vhost/tmp/restart.txt;
  [ $? -eq 0 ] &&  echo "pow: restarting $vhost.dev"
}
56
57
compctl -W ~/.pow -/ kapow

58
powit(){
cmar's avatar
cmar committed
59
  local basedir=$(pwd)
60
61
62
  local vhost=$1
  [ ! -n "$vhost" ] && vhost=$(rack_root_detect)
  if [ ! -h ~/.pow/$vhost ]
cmar's avatar
cmar committed
63
64
65
  then
    echo "pow: Symlinking your app with pow. ${vhost}"
    [ ! -d ~/.pow/${vhost} ] && ln -s $basedir ~/.pow/$vhost
66
67
68
69
    return 1
  fi
}

cmar's avatar
cmar committed
70
71
72
73
74
powed(){
  local basedir=$(rack_root)
  find ~/.pow/ -type l -lname "*$basedir*" -exec basename {}'.dev' \;
}

cmar's avatar
cmar committed
75
76
77
78
79
80
81
82
83
# Restart pow process
# taken from http://www.matthewratzloff.com/blog/2011/12/23/restarting-pow-when-dns-stops-responding
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"
}

84
# View the standard out (puts) from any pow app
cmar's avatar
cmar committed
85
alias kaput="tail -f ~/Library/Logs/Pow/apps/*"