aboutsummaryrefslogtreecommitdiff
path: root/scripts/config
diff options
context:
space:
mode:
authorÉric Gaspar <46165813+ericgaspar@users.noreply.github.com>2024-06-07 14:26:42 +0200
committerÉric Gaspar <46165813+ericgaspar@users.noreply.github.com>2024-06-07 14:26:42 +0200
commit933849a6ff96cc7327558e4cabc1a00c957467bb (patch)
treeccc662f418e54df736f4e00f7e6417db22790c03 /scripts/config
First commit
Diffstat (limited to 'scripts/config')
-rw-r--r--scripts/config99
1 files changed, 99 insertions, 0 deletions
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"