forked from 0k/0k-charms
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
76 lines
2.2 KiB
76 lines
2.2 KiB
|
|
|
|
APP_NAME=monujo
|
|
VERSION=0.0.2
|
|
SOURCE_URL="https://docker.0k.io/downloads/$APP_NAME-$VERSION.tar.bz2"
|
|
LOCATION="$SERVICE_DATASTORE/opt/apps/$APP_NAME"
|
|
CONFIGFILE="$LOCATION/config.json"
|
|
|
|
|
|
monujo:code_init() {
|
|
mkdir -p "$LOCATION"
|
|
if dir_is_empty "$LOCATION"; then
|
|
cd "$LOCATION"
|
|
wget -q "$SOURCE_URL" -O file.tar.bz2
|
|
tar xjf file.tar.bz2
|
|
rm file.tar.bz2
|
|
chown root:root "$LOCATION" -R
|
|
fi
|
|
}
|
|
|
|
|
|
monujo:code_config_base() {
|
|
|
|
MONUJO_OPTIONS=(
|
|
lokapi-host:string
|
|
lokapi-db:string
|
|
map-url:string
|
|
local-password-retention-time:string
|
|
)
|
|
|
|
MONUJO_OPTIONS_CONCAT=" ${MONUJO_OPTIONS[*]} "
|
|
|
|
service_def=$(get_compose_service_def "$SERVICE_NAME") || return 1
|
|
echo "{}" > "$CONFIGFILE"
|
|
## XXXvlab: Should probably offer some lib to do this
|
|
while read-0 key val; do
|
|
key_option=${key//-/_}
|
|
case "$MONUJO_OPTIONS_CONCAT" in
|
|
*" ${key_option}:bool "*)
|
|
case "${val,,}" in
|
|
true|ok|yes|y)
|
|
val=yes
|
|
;;
|
|
false|ko|nok|no|n)
|
|
val=no
|
|
;;
|
|
*)
|
|
die "Invalid value for ${WHITE}$key$NORMAL, please use a boolean value."
|
|
;;
|
|
esac
|
|
;;
|
|
*" ${key_option}:numeric "*)
|
|
if ! is_int "$val"; then
|
|
die "Invalid value for ${WHITE}$key$NORMAL, please use numeric value."
|
|
fi
|
|
;;
|
|
*" ${key_option}:string "*)
|
|
:
|
|
;;
|
|
*)
|
|
key_option=$(echo "$key_option" | sed 's/_\([a-z0-9]\)/\U\1/g')
|
|
printf "%s %s\0" "$key_option" "$val"
|
|
;;
|
|
esac
|
|
done < <(printf "%s" "$service_def" | shyaml key-values-0 options) |
|
|
jq -R 'split("\u0000") | map(split(" ") | {key: .[0], value: .[1]}) | from_entries' > \
|
|
"$CONFIGFILE"
|
|
|
|
}
|
|
|
|
|
|
monujo:config_merge() {
|
|
local old_config new_config="$1"
|
|
old_config=$(cat "$CONFIGFILE")
|
|
e "$old_config" "$new_config" | jq -s 'reduce .[] as $x ({}; . * $x)' > "$CONFIGFILE"
|
|
}
|