summaryrefslogtreecommitdiff
path: root/libexec
diff options
context:
space:
mode:
authorTrygve Laugstøl <trygvis@inamo.no>2013-11-12 13:39:41 +0100
committerTrygve Laugstøl <trygvis@inamo.no>2013-11-12 13:39:41 +0100
commit5dd16e14dd41f1565687142ba7cefa7c4cf64658 (patch)
treed571b793928cdf89feb6d040b359c3db2a00c766 /libexec
parent0d92ff5fd34d79b54c30c38ac41bc600acf7b7c4 (diff)
downloadappstore-5dd16e14dd41f1565687142ba7cefa7c4cf64658.tar.gz
appstore-5dd16e14dd41f1565687142ba7cefa7c4cf64658.tar.bz2
appstore-5dd16e14dd41f1565687142ba7cefa7c4cf64658.tar.xz
appstore-5dd16e14dd41f1565687142ba7cefa7c4cf64658.zip
Diffstat (limited to 'libexec')
-rwxr-xr-xlibexec/appstore-server-init (renamed from libexec/appstore-init-server)16
-rwxr-xr-xlibexec/appstore-server-sync99
2 files changed, 107 insertions, 8 deletions
diff --git a/libexec/appstore-init-server b/libexec/appstore-server-init
index 1417469..a220f83 100755
--- a/libexec/appstore-init-server
+++ b/libexec/appstore-server-init
@@ -8,13 +8,14 @@ APPSTORE_HOME=$(cd $(dirname "$0")/.. && pwd)
. $APPSTORE_HOME/lib/common
# HEADER END
-root=$1; shift
+repos=$1; shift
+appstores=$1; shift
name=$1; shift
-echo "Creating appstore $name"
+echo "Creating appstore: $name"
-repo="$root/repos/$name"
-apps="$root/appstores/$name"
+repo="$repos/$name"
+appstore="$appstores/$name"
if [ -e "$repo" ]
then
@@ -26,8 +27,8 @@ fi
git init -q --bare "$repo"
# Clone the repository
-git init -q "$apps"
-cd "$apps"
+git init -q "$appstore"
+cd "$appstore"
# Copy the template project
cp -r "$APPSTORE_HOME/template/"* .
@@ -40,11 +41,10 @@ cd ..
# Install the hooks
cd "$repo"
-pwd
rm hooks/*
rmdir hooks
ln -s "$APPSTORE_HOME/hooks" hooks
git config appstore.home "$APPSTORE_HOME"
-git config appstore.apps "$apps"
+git config appstore.apps "$appstore"
echo "config: repo.path=$repo"
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."