diff --git a/conf/app.src b/conf/app.src new file mode 100644 index 0000000..cad8577 --- /dev/null +++ b/conf/app.src @@ -0,0 +1,3 @@ +SOURCE_URL=https://github.com/os-js/OS.js/archive/v2.0.0-97.tar.gz +SOURCE_SUM=e48c016033554e17ac91a73cc62cc43e +SOURCE_SUM_PRG=md5sum diff --git a/scripts/_common.sh b/scripts/_common.sh index e051ad6..601f96c 100644 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -1,5 +1,10 @@ #!/bin/bash +#================================================= +# COMMON VARIABLES +#================================================= +NODEJS_VERSION="8.2.1" + #================================================= #================================================= # TESTING @@ -156,35 +161,66 @@ ALL_QUIET () { # Redirige la sortie standard et d'erreur dans /dev/null # BACKUP #================================================= -BACKUP_FAIL_UPGRADE () { - WARNING echo "Upgrade failed." +# Restore a previous backup if the upgrade process failed +# +# usage: +# ynh_backup_before_upgrade +# ynh_clean_setup () { +# ynh_backup_after_failed_upgrade +# } +# ynh_abort_if_errors +# +ynh_backup_after_failed_upgrade () { + echo "Upgrade failed." >&2 app_bck=${app//_/-} # Replace all '_' by '-' - if sudo yunohost backup list | grep -q $app_bck-pre-upgrade$backup_number; then # Vérifie l'existence de l'archive avant de supprimer l'application et de restaurer - sudo yunohost app remove $app # Supprime l'application avant de la restaurer. - sudo yunohost backup restore --ignore-hooks $app_bck-pre-upgrade$backup_number --apps $app --force # Restore the backup if upgrade failed + # Check if a existing backup can be found before remove and restore the application. + if sudo yunohost backup list | grep -q $app_bck-pre-upgrade$backup_number + then + # Remove the application then restore it + sudo yunohost app remove $app + # Restore the backup if the upgrade failed + sudo yunohost backup restore --ignore-hooks $app_bck-pre-upgrade$backup_number --apps $app --force ynh_die "The app was restored to the way it was before the failed upgrade." fi } -BACKUP_BEFORE_UPGRADE () { # Backup the current version of the app, restore it if the upgrade fails +# Make a backup in case of failed upgrade +# +# usage: +# ynh_backup_before_upgrade +# ynh_clean_setup () { +# ynh_backup_after_failed_upgrade +# } +# ynh_abort_if_errors +# +ynh_backup_before_upgrade () { backup_number=1 old_backup_number=2 app_bck=${app//_/-} # Replace all '_' by '-' - if sudo yunohost backup list | grep -q $app_bck-pre-upgrade1; then # Vérifie l'existence d'une archive déjà numéroté à 1. - backup_number=2 # Et passe le numéro de l'archive à 2 + # Check if a backup already exist with the prefix 1. + if sudo yunohost backup list | grep -q $app_bck-pre-upgrade1 + then + # Prefix become 2 to preserve the previous backup + backup_number=2 old_backup_number=1 fi - sudo yunohost backup create --ignore-hooks --apps $app --name $app_bck-pre-upgrade$backup_number # Créer un backup différent de celui existant. - if [ "$?" -eq 0 ]; then # Si le backup est un succès, supprime l'archive précédente. - if sudo yunohost backup list | grep -q $app_bck-pre-upgrade$old_backup_number; then # Vérifie l'existence de l'ancienne archive avant de la supprimer, pour éviter une erreur. - QUIET sudo yunohost backup delete $app_bck-pre-upgrade$old_backup_number + # Create another backup + sudo yunohost backup create --ignore-hooks --apps $app --name $app_bck-pre-upgrade$backup_number + if [ "$?" -eq 0 ] + then + # If the backup succedded, remove the previous backup + if sudo yunohost backup list | grep -q $app_bck-pre-upgrade$old_backup_number + then + # Remove the previous backup only if it exists + sudo yunohost backup delete $app_bck-pre-upgrade$old_backup_number > /dev/null fi - else # Si le backup a échoué + else ynh_die "Backup failed, the upgrade process was aborted." fi } + HUMAN_SIZE () { # Transforme une taille en Ko en une taille lisible pour un humain human=$(numfmt --to=iec --from-unit=1K $1) echo $human @@ -248,7 +284,7 @@ ynh_use_nodejs () { load_n_path="[[ :$PATH: == *\":$n_install_dir/bin:\"* ]] || PATH=\"$n_install_dir/bin:$PATH\"" - nodejs_use_version="n $nodejs_version" + nodejs_use_version="n -q $nodejs_version" # "Load" a version of node eval $load_n_path; $nodejs_use_version @@ -884,13 +920,6 @@ ynh_find_port () { echo $port } -extract_source() { - final_path=/var/www/$app - sudo rm -rf $final_path - sudo git clone https://github.com/os-js/OS.js.git $final_path \ - || ynh_die "Unable to download source" -} - pre_inst_os.js() { # Add user if not exist id -g "$app" &>/dev/null || sudo addgroup "$app" --system --quiet diff --git a/scripts/install b/scripts/install index 68f0ec5..51c4dc1 100644 --- a/scripts/install +++ b/scripts/install @@ -102,7 +102,8 @@ ynh_use_logrotate #================================================= final_path=/var/www/$app -extract_source +ynh_app_setting_set $app final_path $final_path +ynh_setup_source $final_path #================================================= # Files owned by root, www-data can just read