From 102cf5b63ed382efe9d7f1d83200380af3652102 Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Thu, 4 Aug 2022 16:54:00 +0200 Subject: [PATCH] Convert app to packaging v2 --- conf/nginx.conf | 2 +- manifest.json | 58 ---------------------------------------- manifest.toml | 47 ++++++++++++++++++++++++++++++++ scripts/install | 71 +++---------------------------------------------- scripts/remove | 26 ------------------ 5 files changed, 51 insertions(+), 153 deletions(-) delete mode 100644 manifest.json create mode 100644 manifest.toml diff --git a/conf/nginx.conf b/conf/nginx.conf index ec06c8e..3093431 100644 --- a/conf/nginx.conf +++ b/conf/nginx.conf @@ -2,7 +2,7 @@ location __PATH__/ { # Path to source - alias __FINALPATH__/; + alias __INSTALL_DIR__/; index index.html; diff --git a/manifest.json b/manifest.json deleted file mode 100644 index 914f216..0000000 --- a/manifest.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "name": "Hello World", - "id": "helloworld", - "packaging_format": 1, - "version": "0.1~ynh1", - "description": { - "en": "A dummy basic app to illustrate YunoHost's app packaging.", - "fr": "Une app simple et bidon pour illustrer comme le packaging d'app de YunoHost fonctionne" - }, - "license": "WTFPL", - "maintainer": { - "name": "alexAubin", - "email": "alex.aubin@mailoo.org" - }, - "requirements": { - "yunohost": ">= 3.6.0" - }, - "multi_instance": false, - "services": [ - "nginx" - ], - "arguments": { - "install" : [ - { - "name": "domain", - "type": "domain", - "ask": { - "en": "Choose a domain for HelloWorld", - "fr": "Choisissez un domaine pour HelloWorld" - }, - "example": "domain.tld" - }, - { - "name": "path", - "type": "path", - "ask": { - "en": "Choose a path for HelloWorld", - "fr": "Choisissez un chemin pour HelloWorld" - }, - "example": "/helloworld", - "default": "/helloworld" - }, - { - "name": "is_public", - "type": "boolean", - "ask": { - "en": "Is it a public application?", - "fr": "Est-ce une application publique ?" - }, - "help": { - "en": "A private app will only be accessible to logged-in users", - "fr": "Une app privée sera seulement accessible aux utilisateurs connectés" - }, - "default": true - } - ] - } -} diff --git a/manifest.toml b/manifest.toml new file mode 100644 index 0000000..a271292 --- /dev/null +++ b/manifest.toml @@ -0,0 +1,47 @@ +packaging_format = 2 + +id = "helloworld" +name = "Hello World" +description.en = "A dummy basic app to illustrate YunoHost's app packaging." +description.fr = "Une app simple et bidon pour illustrer comme le packaging d'app de YunoHost fonctionne" + +version = "0.1~ynh1" + +maintainers = ["alexAubin"] + +[upstream] +license = "WTFPL" + +[integration] +yunohost = ">= 3.6.0" +architectures = "all" +multi_instance = false +ldap = "not_relevant" +sso = "not_relevant" +disk = "1M" +ram.build = "1M" +ram.runtime = "1M" + +[install] + [install.domain] + # this is a generic question - ask strings are automatically handled by Yunohost's core + type = "domain" + + [install.path] + # this is a generic question - ask strings are automatically handled by Yunohost's core + type = "path" + default = "/helloworld" + + [install.init_main_permission] + help.en = "A private app will only be accessible to logged-in users" + help.fr = "Une app privée sera seulement accessible aux utilisateurs connectés" + type = "group" + default = "visitors" + +[resources] + [resources.system_user] + + [resources.install_dir] + + [resources.permissions] + main.url = "/" diff --git a/scripts/install b/scripts/install index a3454c8..4bfa064 100644 --- a/scripts/install +++ b/scripts/install @@ -1,59 +1,15 @@ #!/bin/bash -#================================================= -# GENERIC START -#================================================= -# IMPORT GENERIC HELPERS -#================================================= - source /usr/share/yunohost/helpers -#================================================= -# MANAGE SCRIPT FAILURE -#================================================= - -# Exit if an error occurs during the execution of the script -ynh_abort_if_errors - -#================================================= -# RETRIEVE ARGUMENTS FROM THE MANIFEST -#================================================= - -app=$YNH_APP_INSTANCE_NAME -domain=$YNH_APP_ARG_DOMAIN -path_url=$YNH_APP_ARG_PATH -is_public=$YNH_APP_ARG_IS_PUBLIC - -# Final path is the classic name for "where we will put the source of the app" -final_path=/var/www/$app - -#================================================= -# CHECK IF THE APP CAN BE INSTALLED WITH THESE ARGS -#================================================= -ynh_script_progression --message="Validating installation parameters..." --weight=1 - -# Check final_path availability -test ! -e "$final_path" || ynh_die "$final_path already exists, aborting" - -# Register (book) the web path -ynh_webpath_register $app $domain $path_url - -#================================================= -# STORE SETTINGS FROM MANIFEST -#================================================= -ynh_script_progression --message="Storing installation settings..." --weight=1 - -ynh_app_setting_set $app is_public $is_public -ynh_app_setting_set $app final_path $final_path - #================================================= # DOWNLOAD, CHECK AND UNPACK SOURCE #================================================= ynh_script_progression --message="Setting up source files..." --weight=1 -mkdir -p "$final_path" -echo "Hello world!" > $final_path/index.html -chown -R www-data: "$final_path" +mkdir -p "$install_dir" +echo "Hello world!" > $install_dir/index.html +chown -R www-data: "$install_dir" #================================================= # NGINX CONFIGURATION @@ -62,24 +18,3 @@ ynh_script_progression --message="Configuring nginx web server..." --weight=1 # Create a dedicated nginx config ynh_add_nginx_config - -#================================================= -# SETUP SSOWAT -#================================================= -ynh_script_progression --message="Configuring SSOwat..." --weight=1 - -# Make app public if necessary or protect it -if [ $is_public -eq 1 ] -then - # unprotected_uris allows SSO credentials to be passed anyway. - ynh_app_setting_set "$app" unprotected_uris "/" -fi - -#================================================= -# RELOAD NGINX -#================================================= -ynh_script_progression --message="Reloading nginx web server..." --weight=1 - -ynh_systemd_action --action=reload --service_name=nginx - -ynh_script_progression --message="Installation of $app completed" --last diff --git a/scripts/remove b/scripts/remove index ea3d660..295a003 100644 --- a/scripts/remove +++ b/scripts/remove @@ -1,36 +1,10 @@ #!/bin/bash -#================================================= -# GENERIC STARTING -#================================================= -# IMPORT GENERIC HELPERS -#================================================= - source /usr/share/yunohost/helpers -#================================================= -# LOAD SETTINGS -#================================================= -ynh_script_progression --message="Loading installation settings..." --weight=1 - -app=$YNH_APP_INSTANCE_NAME -domain=$(ynh_app_setting_get "$app" domain) -final_path=$(ynh_app_setting_get "$app" final_path) - -#================================================= -# REMOVE THE MAIN DIR OF THE APP -#================================================= -ynh_script_progression --message="Removing app main directory..." --weight=1 - -# Remove sources -ynh_secure_remove --file="$final_path" - #================================================= # REMOVE THE NGINX CONFIGURATION #================================================= ynh_script_progression --message="Removing nginx web server configuration..." --weight=1 ynh_remove_nginx_config -ynh_systemd_action --action=reload --service_name=nginx - -ynh_script_progression --message="Removal of $app completed" --last