#!/bin/bash -e case "$(basename $0)" in bump) true ;; *) hst_this=$(hostname -s) if ! echo "$hst_this" | egrep -q "^(admin|develop)"; then # unless the .ao_no_proxy file exists if [[ ! -f ".ao_no_proxy" ]]; then # ssh into deploy host and run from there exec bin/proxy $(basename $0) "$@" exit 1 fi fi ;; esac export LOCAL_ONLY=true default_pod=$(cat /etc/podname 2>&- || true) case "$(basename $0)" in invoke) export COMMAND="$1"; shift if [[ -n $1 ]]; then set $(for a in "$@"; do if [[ $default_pod = $a ]]; then echo "default.app"; else echo $a.app; fi; done) fi LOCAL_ONLY= tmp_invoke=$(mktemp -t XXXXXXXXX) bundle exec cap "$@" invoke 2>&1 | perl -pe 's{.\[\d+m}{}g' | perl -ne 'm{^\s*\*+\s*\[(out|err)\s*::\s*([^]]+)\] ?(.*)} && print "$1 $2 $3\n"' > $tmp_invoke 2>&1 cat $tmp_invoke | awk '{print $2}' | sort -u | while read -r nm_host; do egrep "^(out|err) $nm_host" $tmp_invoke || true echo done rm -f $tmp_invoke ;; *) if [[ -n $1 ]]; then set $(for a in "$@"; do if [[ $default_pod = $a ]]; then echo "default"; else echo $a; fi; done) fi case "$(basename $0)" in debug) if [[ -z $1 ]]; then set "world" fi if [[ -n $1 ]]; then cap $(for a in "$@"; do echo $a.echo; done) fi ;; hosts) { if [[ -n $1 ]]; then cap $(for a in "$@"; do echo $a.echo; done) fi } 2>&1 | grep eea914aaa8dde6fdae29242b1084a2b0415eefaf | awk '{print $NF}' | sort -u ;; dna) { echo "eea914aaa8dde6fdae29242b1084a2b0415eefaf ---" if [[ -n $1 ]]; then cap $(for a in "$@"; do echo $a.yaml; done) fi } 2>&1 | grep eea914aaa8dde6fdae29242b1084a2b0415eefaf | sed 's#eea914aaa8dde6fdae29242b1084a2b0415eefaf ##' ;; bump) case "$1" in patch|minor|major) bump=$1; shift set $(cat VERSION | sed 's#\.# #g') case "$bump" in patch) echo "$1.$2.$(($3 + 1))" ;; minor) echo "$1.$(($2 + 1)).0" ;; major) echo "$(($1 + 1)).0.0" ;; esac > VERSION ;; *) ver_new=$1; shift set $(echo "$ver_new" | sed 's#\.# #g') 0 M=$1; shift m=$1; shift p=$1; shift tmp_version=$(mktemp -t XXXXXXXXX) (echo "$(($M+0)).$(($m+0)).$(($p+0))" > $tmp_version) 2>&- ver_new_same=$(cat $tmp_version) rm -f $tmp_version if [[ $ver_new = $ver_new_same ]]; then echo "$ver_new" > VERSION else echo "ERROR: invalid version: $ver_new" 1>&2 exit 1 fi ;; esac if [[ -f Gemfile ]]; then bundle check 2>&1 >/dev/null || { bundle --quiet install --local --path vendor/bundle || bundle check > /dev/null; } git add Gemfile.lock fi git add VERSION ver_bumped=$(cat VERSION) git commit -m "bump: $ver_bumped" git tag "v$ver_bumped" echo $ver_bumped ;; *) LOCAL_ONLY= if [[ -n $1 ]]; then set $(for a in "$@"; do echo $a.app; done) fi case "$(basename $0)" in deploy) bundle exec cap "$@" deploy:lock deploy ;; release) bundle exec cap "$@" deploy:lock deploy ;; stage) bundle exec cap "$@" deploy:lock deploy:update_code deploy:symlink_next ;; restart) bundle exec cap "$@" deploy:lock deploy:restart ;; config) bundle exec cap "$@" deploy:lock deploy:config ;; build) bundle exec cap "$@" deploy:lock deploy:build ;; dist) bundle exec cap "$@" deploy:lock deploy:dist ;; activate) bundle exec cap "$@" deploy:lock deploy:symlink deploy:restart ;; rollback) bundle exec cap "$@" deploy:lock deploy:rollback ;; check) bundle exec cap "$@" deploy:lock deploy:check ;; plan) bundle exec cap "$@" deploy:lock deploy:plan ;; lock) bundle exec cap "$@" deploy:dont_unlock deploy:lock ;; unlock) bundle exec cap "$@" deploy:unlock ;; shell) bundle exec cap "$@" shell ;; compare) bundle exec cap "$@" deploy:compare ;; migrate) bundle exec cap "$@" deploy:migrate ;; *) bundle exec cap "$@" ;; esac esac ;; esac