diff --git a/scripts/install b/scripts/install index 7e87b1b..5a352bd 100644 --- a/scripts/install +++ b/scripts/install @@ -1,58 +1,82 @@ #!/bin/bash -# vim:set noexpandtab: -# Exit on command errors and treat unset variables as an error -set -eu +#================================================= +# GENERIC START +#================================================= +# IMPORT GENERIC HELPERS +#================================================= -source .fonctions # Loads the generic functions usually used in the script -source /usr/share/yunohost/helpers # Source app helpers +source _common.sh +source /usr/share/yunohost/helpers -CLEAN_SETUP () { - # Clean installation residues that are not supported by the remove script. - # Clean hosts - echo "" -} -TRAP_ON # Active trap to stop the script if an error is detected. +#================================================= +# MANAGE SCRIPT FAILURE +#================================================= + +# Exit if an error occurs during the execution of the script +ynh_abort_if_errors + +#================================================= +# RETRIEVE ARGUMENTS FROM THE MANIFEST +#================================================= -# Retrieve arguments domain=$YNH_APP_ARG_DOMAIN -path=$YNH_APP_ARG_PATH +path_url=$YNH_APP_ARG_PATH is_public=$YNH_APP_ARG_IS_PUBLIC app=$YNH_APP_INSTANCE_NAME script_dir=$PWD -# Check variables are not empty -CHECK_VAR "$app" "app name not set" -CHECK_VAR "$script_dir" "script_dir not set" +#================================================= +# CHECK IF THE APP CAN BE INSTALLED WITH THESE ARGS +#================================================= -CHECK_PATH # Check and fix path syntax -CHECK_DOMAINPATH # Check and fix domain disponibility +final_path=/var/www/$app +test ! -e "$final_path" || ynh_die "This path already contains a folder" -CHECK_FINALPATH # Check final path +# Normalize the url path syntax +path_url=$(ynh_normalize_url_path $path_url) -# Check domain with regex -domain_regex=$(echo "$domain" | sed 's@-@.@g') -CHECK_VAR "$domain_regex" "domain_regex empty" +# Check web path availability +ynh_webpath_available $domain $path_url +# Register (book) web path +ynh_webpath_register $app $domain $path_url -FIND_PORT 8096 # Check port availability +#================================================= +# STORE SETTINGS FROM MANIFEST +#================================================= -# Save app settings ynh_app_setting_set $app domain $domain +ynh_app_setting_set $app path $path_url ynh_app_setting_set $app is_public $is_public + +#================================================= +# STANDARD MODIFICATIONS +#================================================= +# FIND AND OPEN A PORT +#================================================= + +# Find a free port +port=$(ynh_find_port 8096) +# Open this port +yunohost firewall allow --no-upnp TCP $port 2>&1 ynh_app_setting_set $app port $port -# Install dependencies -ynh_package_update -ynh_package_install build-essential libssl-dev libpq-dev +#================================================= +# INSTALL DEPENDENCIES +#================================================= + +ynh_install_app_dependencies build-essential libssl-dev libpq-dev libpng-dev +#================================================= +# DOWNLOAD, CHECK AND UNPACK SOURCE +#================================================= -# Copy files to the right place -sudo mkdir "${final_path}" ynh_app_setting_set $app final_path $final_path +# Download, check integrity, uncompress and patch the source from app.src +ynh_setup_source "$final_path" -# Get source -SETUP_SOURCE +#Refactoring : end of part one. # Copy it to Nginx conf directory sudo cp ../conf/nginx.conf /etc/nginx/conf.d/$domain.d/$app.conf