#!/bin/bash set -e set -u export APPSH_HOME=$(cd $(dirname "$0")/.. && pwd) . $APPSH_HOME/lib/common # HEADER END usage_text() { echo "usage: $usage_app [-s group.name=value] -d dir " } dir= prepend_config= append_config= declare -A conf conf=() while getopts "d:C:c:s:" opt do case $opt in d) dir=$OPTARG shift 2 OPTIND=1 ;; C) prepend_config=$OPTARG if [[ ! prepend_config =~ ^/ ]] then prepend_config="`pwd`/$prepend_config" fi shift 2 OPTIND=1 ;; c) append_config=$OPTARG if [[ ! append_config =~ ^/ ]] then append_config="`pwd`/$append_config" fi shift 2 OPTIND=1 ;; s) keyvalue=$OPTARG re="^$key_expr\\.$key_expr=.*$" if [[ ! $keyvalue =~ $re ]] then usage "Invalid -s argument." fi key="${keyvalue%%=*}" value="${keyvalue#*=}" conf[$key]="$value" shift 2 OPTIND=1 ;; esac done if [ $# -lt 1 ] then usage fi resolver_name="$1"; shift if [ -z "$dir" ] then usage "-d is required" fi if [ -e "$dir" ] then fatal "Already initialized: $dir" 2>&1 fi resolver=`find_resolver "$resolver_name"` if [ -z "$resolver" ] then echo "No such resolver: $resolver_name" 2>&1 exit 1 fi mkdir -p -- "$dir" "$dir/.app" ok=no clean_dir=`cd "$dir" && pwd` trap '[[ $ok == yes ]] || rm -rf "$clean_dir"' EXIT cd "$dir" for key in "${!conf[@]}" do app-conf set $key "${conf[$key]}" done unset IFS app-conf set app.resolver "$resolver_name" "$resolver" init "$@" "$resolver" resolve-version resolved_version=`app-conf get app.resolved_version` if [[ $resolved_version == "" ]] then echo "Unable to resolve version" 2>&1 exit 1 fi echo "Resolved version to $resolved_version" "$resolver" download-version -v "$resolved_version" -f .app/latest.zip app-install-file \ -v "$resolved_version" \ ${prepend_config:+-C "$prepend_config"} \ ${append_config:+-c "$append_config"} \ -f .app/latest.zip ok=yes