#!/bin/bash assert_is_instance() { local usage=$1 local name=$2 local instance=$3 local check_link=$4 if [ -z "$name" ] then $usage "Missing required option -n." fi if [ -z "$instance" ] then $usage "Missing required option -i." fi if [ ! -d $name/$instance ] then echo "No such instance: $name/$instance." >&2 exit 1 fi if [ "$check_link" != "no" ] then if [ ! -e $name/$instance/current ] then echo "Missing 'current' link." >&2 exit 1 fi fi } list_apps() { filter_name=$1; shift filter_instnace=$1; shift vars="$@" sort $apps/.app/var/list | while read line do echo $line | (IFS=:; while read name instance version junk do if [ -n "$filter_name" -a "$filter_name" != "$name" ] then continue fi if [ -n "$filter_instance" -a "$filter_instance" != "$instance" ] then continue fi local line="" IFS=" "; for var in $vars do case $var in name) x=$name;; instance) x=$instance;; version) x=$version;; current_version) x=`find_current_version $name $instance`;; *) x="";; esac if [ -z "$line" ] then line="$line$x" else line="$line:$x" fi done echo $line done) done } find_current_version() { name=$1 instance=$2 if [ ! -L $apps/$name/$instance/current ] then return 0 fi ( cd $apps/$name/$instance ls -l current | sed -n "s,.* current -> versions/\(.*\)/root,\1,p" ) } find_versions() { name=$1 instance=$2 if [ ! -d $apps/$name/$instance/versions ] then return 0 fi ( cd $apps/$name/$instance/versions ls -1d * ) }