You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
75 lines
1.7 KiB
75 lines
1.7 KiB
# Inspired by Christopher Sexton's |
|
# https://gist.github.com/1019777 |
|
# |
|
# Sorin Ionescu <sorin.ionescu@gmail.com> |
|
|
|
# Gets the root of the Rack application. |
|
function _pow-rack-root() { |
|
local rack_root="${PWD}" |
|
|
|
while [[ "${rack_root}" != '/' ]]; do |
|
# Rack applictions must have a config.ru file in the root directory. |
|
if [[ -f "${rack_root}/config.ru" ]]; then |
|
echo "${rack_root}" |
|
return 0 |
|
else |
|
rack_root="${rack_root:h}" |
|
fi |
|
done |
|
|
|
return 1 |
|
} |
|
|
|
# Adds a Rack application to Pow. |
|
function pow-add() { |
|
local app="${${1:A}:-$(_pow-rack-root)}" |
|
local vhost="${app:t}" |
|
|
|
if [[ ! -f "${app}/config.ru" ]]; then |
|
echo "${0}: ${vhost:-$PWD:t}: not a Rack application or config.ru is missing" >&2 |
|
return 1 |
|
fi |
|
|
|
if [[ -L "${HOME}/.pow/${vhost}" ]]; then |
|
echo "${0}: ${vhost}: already served at http://${vhost}.dev" |
|
return 1 |
|
fi |
|
|
|
ln -s "${app}" "${HOME}/.pow/${vhost}" |
|
echo "Serving ${vhost} at http://${vhost}.dev" |
|
} |
|
|
|
# Removes a Rack application from Pow. |
|
function pow-remove() { |
|
local symlink="${HOME}/.pow/${1}" |
|
if [[ -L "${symlink}" ]]; then |
|
unlink "${symlink}" |
|
echo "Stopped serving ${1}" |
|
else |
|
echo "${0}: ${1}: no such application" >&2 |
|
fi |
|
} |
|
|
|
# Restarts a Rack application. |
|
function pow-restart() { |
|
local vhost="${${1}:-$(_pow-rack-root):t}" |
|
local tmp="${HOME}/.pow/${vhost}/tmp" |
|
|
|
if [[ ! -L "${HOME}/.pow/${vhost}" ]]; then |
|
echo "${0}: ${1}: no such application" >&2 |
|
return 1 |
|
fi |
|
|
|
if [[ ! -d "${tmp}" ]]; then |
|
mkdir -p "${tmp}" |
|
fi |
|
|
|
if touch "${tmp}/restart.txt"; then |
|
echo "Restarted ${vhost}" |
|
fi |
|
} |
|
|
|
# Aliases |
|
# View the standard out (puts) from any pow application. |
|
alias pow-log="tail -f ${HOME}/Library/Logs/Pow/apps/*" |
|
|
|
|