From 5dd16e14dd41f1565687142ba7cefa7c4cf64658 Mon Sep 17 00:00:00 2001 From: Trygve Laugstøl Date: Tue, 12 Nov 2013 13:39:41 +0100 Subject: wip --- libexec/appstore-server-sync | 99 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100755 libexec/appstore-server-sync (limited to 'libexec/appstore-server-sync') diff --git a/libexec/appstore-server-sync b/libexec/appstore-server-sync new file mode 100755 index 0000000..5938962 --- /dev/null +++ b/libexec/appstore-server-sync @@ -0,0 +1,99 @@ +#!/bin/bash + +set -e +set -u + +APPSTORE_HOME=$(cd $(dirname "$0")/.. && pwd) + +. $APPSTORE_HOME/lib/common +# HEADER END + +conf_get() { + name=$1; shift + var=$1; shift + value=$(app cat-conf -f "$APPSTORE/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 "$APPSTORE" + + if [[ -d $dir ]] + then + cd "$dir" + dir=`pwd` + + if [[ -r $APPSTORE/$app.config ]] + then + app conf import $APPSTORE/$app.config + fi + app conf set app.version "$version" + app upgrade + 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 +} + +REPO="$1"; shift +APPSTORE="$1"; shift + +make_absolute REPO +make_absolute APPSTORE + +cd "$APPSTORE" + +# This should probably be a git fetch && checkout origin/HEAD --force +# or whatever. +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." -- cgit v1.2.3