From 933849a6ff96cc7327558e4cabc1a00c957467bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?E=CC=81ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Fri, 7 Jun 2024 14:26:42 +0200 Subject: First commit --- scripts/config | 99 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 scripts/config (limited to 'scripts/config') diff --git a/scripts/config b/scripts/config new file mode 100644 index 0000000..48be2ff --- /dev/null +++ b/scripts/config @@ -0,0 +1,99 @@ +#!/bin/bash +# In simple cases, you don't need a config script. + +# With a simple config_panel.toml, you can write in the app settings, in the +# upstream config file or replace complete files (logo ...) and restart services. + +# The config scripts allows you to go further, to handle specific cases +# (validation of several interdependent fields, specific getter/setter for a value, +# display dynamic informations or choices, pre-loading of config type .cube... ). + +#================================================= +# IMPORT GENERIC HELPERS +#================================================= + +source /usr/share/yunohost/helpers + +ynh_abort_if_errors + +#================================================= +# RETRIEVE ARGUMENTS +#================================================= + +install_dir=$(ynh_app_setting_get --app="$app" --key=install_dir) + +#================================================= +# SPECIFIC GETTERS FOR TOML SHORT KEY +#================================================= + +get__amount() { + # Here we can imagine to have an API call to stripe to know the amount of donation during a month + local amount=200 + + # It's possible to change some properties of the question by overriding it: + if [ "$amount" -gt 100 ]; then + cat << EOF +style: success +value: $amount +ask: + en: A lot of donation this month: **$amount €** +EOF + else + cat << EOF +style: danger +value: $amount +ask: + en: Not so much donation this month: $amount € +EOF + fi +} + +get__prices() { + local prices + prices="$(grep "DONATION\['" "$install_dir/settings.py" | sed -r "s@^DONATION\['([^']*)'\]\['([^']*)'\] = '([^']*)'@\1/\2/\3@g" | sed -z 's/\n/,/g;s/,$/\n/')" + if [ "$prices" == "," ]; then + # Return YNH_NULL if you prefer to not return a value at all. + echo YNH_NULL + else + echo "$prices" + fi +} + + +#================================================= +# SPECIFIC VALIDATORS FOR TOML SHORT KEYS +#================================================= +validate__publishable_key() { + + # We can imagine here we test if the key is really a publishable key + (is_secret_key "$publishable_key") && + echo 'This key seems to be a secret key' +} + +#================================================= +# SPECIFIC SETTERS FOR TOML SHORT KEYS +#================================================= +set__prices() { + + #--------------------------------------------- + # IMPORTANT: setters are triggered only if a change is detected + #--------------------------------------------- + for price in $(echo "$prices" | sed "s/,/ /"); do + frequency=$(echo "$price" | cut -d/ -f1) + currency=$(echo "$price" | cut -d/ -f2) + price_id=$(echo "$price" | cut -d/ -f3) + sed "d/DONATION\['$frequency'\]\['$currency'\]" "$install_dir/settings.py" + + echo "DONATION['$frequency']['$currency'] = '$price_id'" >> "$install_dir/settings.py" + done + + #--------------------------------------------- + # IMPORTANT: to be able to upgrade properly, you have to save the value in settings too + #--------------------------------------------- + ynh_app_setting_set --app="$app" --key=prices --value="$prices" +} + +#================================================= +# GENERIC FINALIZATION +#================================================= +ynh_app_config_run "$1" -- cgit v1.2.3