#!/bin/bash set -e set -u APPSTORE_HOME=$(git config appstore.home) . $APPSTORE_HOME/lib/common # HEADER END # stdin contains the refs pushed. conf_get() { name=$1; shift var=$1; shift value=$(app cat-conf -f "$APPS/appstore.config" -k "$var" | cut -f 2- -d =) eval ${name}='${value}' } check_app() { local app=$1; shift dir=$app conf_get resolver "${app}.resolver" conf_get resolver_args "${app}.resolver_args" conf_get version "${app}.version" conf_get state "${app}.state" if [[ -z $resolver ]] || [[ -z $resolver_args ]] || [[ -z $version ]] || [[ -z $state ]] then echo "$app: invalid configuration, missing one of ${app}.resolver, ${app}.resolver_args, ${app}.version, ${app}.state" return fi cd "$APPS" if [ -d "$dir" ] then cd "$dir" dir=`pwd` old_version=$(app conf get app.version) if [[ $new_version = $old_version ]] then echo "$dir: already at $version" continue fi echo "$dir: updating to $version" app conf set app.version "$version" app update else echo "$dir: new app" if [[ -r ${dir}.config ]] then append_config="${dir}.config" fi app init \ ${append_config:+-c} $append_config \ -d "$dir" \ "$resolver" "$resolver_args" cd "$dir" dir=`pwd` fi cd "$dir" if [[ $state = enabled ]] then app start || true else app stop || true fi } APPS="$(git config appstore.apps)" REPO="$(pwd)" cd "$APPS" unset GIT_DIR git pull -q "$REPO" master conf_get apps appstore.apps apps=$(echo "$apps" | sed "s/, */,/g") IFS=, for app in $apps do if [[ $app = "" ]] then continue fi assert_valid_app_name "$app" check_app "$app" || true done echo "Done."