[enh] Add test for config panel

This commit is contained in:
ljf 2021-08-14 12:26:20 +02:00
parent d94c7054b2
commit cd40f1e76a
12 changed files with 341 additions and 0 deletions

View file

@ -0,0 +1,5 @@
<html>
<body>
This is a dummy app to test the change url feature.
</body>
</html>

View file

@ -0,0 +1,3 @@
location PATHTOCHANGE {
alias /var/www/FOLDER;
}

View file

View file

View file

View file

View file

View file

@ -0,0 +1,212 @@
version = "0.1"
name = "Configuration panel"
[main]
name = "Main section"
[main.components]
name = "Components"
[main.components.boolean]
ask = "Put a boolean"
type = "boolean"
choices = ["on", "off"]
default = "off"
[main.components.number]
ask = "Put a number"
type = "number"
min = 1
max = 100
[main.components.range]
ask = "Put a range"
type = "range"
min = 1
max = 100
[main.components.str]
ask = "Put a string with yunohost word"
type = "string"
pattern = "yunohost"
[main.components.text]
ask = "Put a text"
type = "text"
[main.components.password]
ask = "Put a password"
type = "password"
[main.components.custom_path]
ask = "Put a path"
type = "path"
[main.components.email]
ask = "Put a email"
type = "email"
[main.components.url]
ask = "Put a url"
type = "url"
[main.components.date]
ask = "Put a date"
type = "date"
[main.components.time]
ask = "Put a time"
type = "time"
[main.components.color]
ask = "Put a color"
type = "color"
[main.components.select]
ask = "Choose an option"
type = "select"
choices = ["option1", "option2", "option3"]
[main.components.custom_domain]
ask = "Put a domain"
type = "domain"
[main.components.user]
ask = "Put a user"
type = "user"
[main.components.tags]
ask = "Put some tags"
type = "tags"
[main.components.file]
ask = "Put a file"
type = "file"
accept = ".cube"
[main.messages]
name = "Read only components"
[main.messages.success]
ask = "This is a success message"
type = "success"
[main.messages.info]
ask = "This is an info message"
type = "info"
[main.messages.warning]
ask = "This is an warning message"
type = "warning"
[main.messages.error]
ask = "This is an error message"
type = "error"
[main.messages.display_text]
ask = "This is a simple text"
type = "display_text"
[main.messages.markdown]
ask = "This is a **markdown** text"
type = "markdown"
[main.generic]
name = "Generic options"
[main.generic.default]
ask = "This is a question with a default value"
type = "string"
default = "Camille"
[main.generic.example]
ask = "This is a question with an example value"
type = "string"
example = "Camille"
[main.generic.optional]
ask = "This is an optional value"
type = "string"
optional = true
[main.generic.help]
ask = "Here we add some help"
type = "string"
help = "You can feel this question with your keyboard (yes i know it's very useful)"
[main.generic.helpLink]
ask = "Here we add an help link"
type = "string"
help.href = "https://yunohost.org/doc"
help.text = "Yunohost Doc"
[main.generic.visibleIf]
ask = "Display if helpLink question is filled"
type = "string"
visibleIf = "helpLink"
[source]
name = "Source section"
[source.settings]
name = "App settings"
[source.settings.arg1]
ask = "Save app settings arg1"
type = "string"
[source.yml]
name = "YAML"
[source.yml.arg2]
ask = "Save arg2 in YAML"
type = "string"
source = "__FINALPATH__/test.yml"
[source.json]
name = "JSON"
[source.json.arg3]
ask = "Save arg3 in JSON"
type = "string"
source = "__FINALPATH__/test.json"
[source.ini]
name = "INI"
[conf.ini.arg4]
ask = "Save arg4 in INI"
type = "string"
source = "__FINALPATH__/test.ini"
[source.php]
name = "PHP"
[source.php.arg5]
ask = "Save arg5 in PHP file"
type = "string"
source = "__FINALPATH__/test.php"
[source.python]
name = "Python"
[source.python.arg6]
ask = "Save arg6 in python file"
type = "string"
source = "__FINALPATH__/test.py"
[source.file]
name = "File"
[source.file.arg7]
ask = "Save a cube file"
type = "file"
accept = ".cube"
source = "__FINALPATH__/test.cube"
[source.function]
name = "function"
[source.function.arg8]
ask = "Custom validate and save arg8 password"
type = "password"

View file

@ -0,0 +1,36 @@
{
"name": "Config panel",
"id": "config_app",
"description": {
"en": "Dummy app to test config panel"
},
"license": "GPL-3+",
"maintainer": {
"name": "ljf",
"email": "ljf+config_app@reflexlibre.net",
"url": "http://reflexlibre.net"
},
"requirements": {
"yunohost": ">> 4.2.7"
},
"multi_instance": false,
"arguments": {
"install" : [
{
"name": "domain",
"ask": {
"en": "Choose a domain"
},
"example": "domain.org"
},
{
"name": "path",
"ask": {
"en": "Choose a path"
},
"example": "/",
"default": "/"
}
]
}
}

View file

@ -0,0 +1,68 @@
#!/bin/bash
#=================================================
# GENERIC STARTING
#=================================================
# IMPORT GENERIC HELPERS
#=================================================
source _common.sh
source /usr/share/yunohost/helpers
#=================================================
# RETRIEVE ARGUMENTS
#=================================================
app=$YNH_APP_INSTANCE_NAME
final_path=$(ynh_app_setting_get $app final_path)
#=================================================
# SPECIFIC GETTERS FOR TOML SHORT KEY
#=================================================
get__arg8() {
echo ""
}
#=================================================
# SPECIFIC VALIDATORS FOR TOML SHORT KEYS
#=================================================
validate__arg8() {
[[ "$#arg8" -lt 8 ]] &&
echo 'Too short password'
}
#=================================================
# SPECIFIC SETTERS FOR TOML SHORT KEYS
#=================================================
set__arg8() {
if [ -z "$arg8" ]
then
python -c "import crypt; print(crypt.crypt(\"${arg8}\", \"\$6\$saltsalt\$\"))" > $final_path/password
fi
}
#=================================================
# OVERWRITING APPLY STEP
#=================================================
ynh_panel_apply() {
_ynh_panel_apply
systemctl restart nginx
}
#=================================================
# GENERIC FINALIZATION
#=================================================
# Please don't change that code.
# You can overwrite these functions if you need it
#=================================================
ynh_panel_init
case $1 in
show) ynh_panel_show;;
apply) ynh_panel_validate && ynh_panel_apply;;
esac

View file

@ -0,0 +1,10 @@
set -eux
# Source app helpers
source /usr/share/yunohost/helpers
app=$YNH_APP_INSTANCE_NAME
mkdir -p /var/www/$app
cp ../conf/* /var/www/$app/

View file

@ -0,0 +1,7 @@
set -eux
# See comments in install script
app=$YNH_APP_INSTANCE_NAME
rm -rf /var/www/$app