[enh] A small config script
This commit is contained in:
parent
8afe35a53a
commit
8e21cb4df3
1 changed files with 66 additions and 38 deletions
104
scripts/config
104
scripts/config
|
@ -1,31 +1,64 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
# In simple cases, you don't need a config script.
|
||||||
# In most simple cases, you don't need a config script (or just to reload services).
|
|
||||||
|
|
||||||
# With a simple config_panel.toml, you can write in the app settings, in the
|
# With a simple config_panel.toml, you can write in the app settings, in the
|
||||||
# upstream config file or replace complete files (logo ...).
|
# upstream config file or replace complete files (logo ...) and restart services.
|
||||||
|
|
||||||
# The config scripts allows you to go further, to handle specific cases
|
# The config scripts allows you to go further, to handle specific cases
|
||||||
# (validation of several interdependent fields, specific getter/setter for a value,
|
# (validation of several interdependent fields, specific getter/setter for a value,
|
||||||
# pre-loading of config type .cube ).
|
# display dynamic informations or choices, pre-loading of config type .cube... ).
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# GENERIC STARTING
|
||||||
|
#=================================================
|
||||||
|
# IMPORT GENERIC HELPERS
|
||||||
|
#=================================================
|
||||||
|
|
||||||
|
source /usr/share/yunohost/helpers
|
||||||
|
|
||||||
|
ynh_abort_if_errors
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# RETRIEVE ARGUMENTS
|
||||||
|
#=================================================
|
||||||
|
|
||||||
|
final_path=$(ynh_app_setting_get $app final_path)
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# SPECIFIC GETTERS FOR TOML SHORT KEY
|
# SPECIFIC GETTERS FOR TOML SHORT KEY
|
||||||
#=================================================
|
#=================================================
|
||||||
get__user() {
|
|
||||||
if [ -s $final_path/keys/credentials ]
|
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
|
then
|
||||||
sed -n 1p $final_path/keys/credentials
|
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
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
get__passphrase() {
|
get__prices() {
|
||||||
if [ -s $final_path/keys/credentials ]
|
local prices = "$(grep "DONATION\['" "$final_path/settings.py" | sed -r "s@^DONATION\['([^']*)'\]\['([^']*)'\] = '([^']*)'@\1/\2/\3@g" | sed -z 's/\n/,/g;s/,$/\n/')"
|
||||||
|
if [ "$prices" == "," ];
|
||||||
then
|
then
|
||||||
sed -n 2p $final_path/keys/credentials
|
# Return YNH_NULL if you prefer to not return a value at all.
|
||||||
|
echo YNH_NULL
|
||||||
|
else
|
||||||
|
echo $prices
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -33,42 +66,37 @@ get__passphrase() {
|
||||||
#=================================================
|
#=================================================
|
||||||
# SPECIFIC VALIDATORS FOR TOML SHORT KEYS
|
# SPECIFIC VALIDATORS FOR TOML SHORT KEYS
|
||||||
#=================================================
|
#=================================================
|
||||||
validate__user() {
|
validate__publishable_key() {
|
||||||
[[ -n "$passphrase" && -z "$user" ]] &&
|
|
||||||
echo 'A Username is needed when you suggest a Password'
|
|
||||||
}
|
|
||||||
|
|
||||||
validate__passphrase() {
|
# We can imagine here we test if the key is really a publisheable key
|
||||||
[[ -n "$user" && -z "$passphrase" ]] &&
|
(is_secret_key $publishable_key) &&
|
||||||
echo 'A Password is needed when you suggest a Username'
|
echo 'This key seems to be a secret key'
|
||||||
}
|
}
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# SPECIFIC SETTERS FOR TOML SHORT KEYS
|
# SPECIFIC SETTERS FOR TOML SHORT KEYS
|
||||||
#=================================================
|
#=================================================
|
||||||
set__user() {
|
set__prices() {
|
||||||
if [ -z "$user" ]
|
|
||||||
then
|
|
||||||
echo "$user\n$passphrase" > $final_path/keys/credentials
|
|
||||||
else
|
|
||||||
echo "" > $final_path/keys/credentials
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
set__passphrase() {
|
#---------------------------------------------
|
||||||
:
|
# IMPORTANT: setter are trigger 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'\]" "$final_path/settings.py"
|
||||||
|
|
||||||
|
echo "DONATION['$frequency']['$currency'] = '$price_id'" >> "$final_path/settings.py"
|
||||||
#=================================================
|
done
|
||||||
# OVERWRITING APPLY STEP
|
|
||||||
#=================================================
|
|
||||||
ynh_panel_apply() {
|
|
||||||
|
|
||||||
_ynh_panel_apply
|
#---------------------------------------------
|
||||||
|
# IMPORTANT: to be able to upgrade properly, you have to saved the value in settings too
|
||||||
# Reload app service
|
#---------------------------------------------
|
||||||
systemctl reload APP
|
ynh_app_setting_set $app prices $prices
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# GENERIC FINALIZATION
|
||||||
|
#=================================================
|
||||||
|
ynh_app_config_run $1
|
||||||
|
|
Loading…
Reference in a new issue