From 3ce94f39926512016b7f911084f37698daef07cb Mon Sep 17 00:00:00 2001 From: Maniack Crudelis Date: Tue, 12 Jan 2021 01:23:38 +0100 Subject: [PATCH] Fix YunoHost 4.1 Allow to choose compression algorithm --- conf/app.src | 6 +++--- config_panel.toml | 13 +++++++++++++ scripts/_variables | 2 +- scripts/config | 42 ++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 59 insertions(+), 4 deletions(-) diff --git a/conf/app.src b/conf/app.src index 280bf59..f667132 100644 --- a/conf/app.src +++ b/conf/app.src @@ -1,6 +1,6 @@ -SOURCE_URL=https://github.com/maniackcrudelis/archivist/archive/v1.0.1.tar.gz -SOURCE_SUM=56ec81447b7eb6d34c4af213b48530dc +SOURCE_URL=https://github.com/maniackcrudelis/archivist/archive/698b7f79bf98681fad7bdc4411a4eae4658b6f51.zip +SOURCE_SUM=89c471dab51cc46a38a9930285e181a3 SOURCE_SUM_PRG=md5sum -SOURCE_FORMAT=tar.gz +SOURCE_FORMAT=zip SOURCE_IN_SUBDIR=true SOURCE_FILENAME= diff --git a/config_panel.toml b/config_panel.toml index 132417d..23d641f 100644 --- a/config_panel.toml +++ b/config_panel.toml @@ -18,6 +18,19 @@ name = "Archivist configuration" optional = true help = "A password is needed if encryption is activated." + [main.compression] + name = "Compression algorithm" + + [main.compression.ynh] + ask = "Choose the compression algorithm for YunoHost backups" + choices = ["gzip", "lzop", "zstd", "bzip2", "lzma", "lzip", "xz", "No compression"] + default = "gzip" + + [main.compression.files] + ask = "Choose the compression algorithm for files and directories backups" + choices = ["gzip", "lzop", "zstd", "bzip2", "lzma", "lzip", "xz", "No compression"] + default = "gzip" + [main.backup_types] name = "Backup" diff --git a/scripts/_variables b/scripts/_variables index d675612..35efc56 100644 --- a/scripts/_variables +++ b/scripts/_variables @@ -1,4 +1,4 @@ #!/bin/bash # Dependencies -app_depencencies="rsync encfs sshpass ccrypt" +app_depencencies="rsync encfs sshpass ccrypt lzop zstd lzip" diff --git a/scripts/config b/scripts/config index 5c78fe0..97f4dff 100644 --- a/scripts/config +++ b/scripts/config @@ -51,6 +51,14 @@ old_encrypt_password="$(cat $passkey)" encrypt_password="${YNH_CONFIG_MAIN_ENCRYPTION_ENCRYPTION_PWD:-$old_encrypt_password}" ynh_print_ON +# Compression algorithms +old_ynh_compression="$(get_config_value ynh_compression_mode)" +old_ynh_compression=${old_ynh_compression:-gzip} +ynh_compression="${YNH_CONFIG_MAIN_COMPRESSION_YNH:-$old_ynh_compression}" +old_files_compression="$(get_config_value files_compression_mode)" +old_files_compression=${old_files_compression:-gzip} +files_compression="${YNH_CONFIG_MAIN_COMPRESSION_FILES:-$old_files_compression}" + # ynh_core_backup old_ynh_core_backup="$(get_config_value ynh_core_backup)" ynh_core_backup="${YNH_CONFIG_MAIN_BACKUP_TYPES_CORE_BACKUP:-$old_ynh_core_backup}" @@ -91,6 +99,9 @@ show_config() { ynh_return "YNH_CONFIG_MAIN_ENCRYPTION_ENCRYPT=$encrypt" ynh_return "YNH_CONFIG_MAIN_ENCRYPTION_ENCRYPTION_PWD=" + ynh_return "YNH_CONFIG_MAIN_COMPRESSION_YNH=$ynh_compression" + ynh_return "YNH_CONFIG_MAIN_COMPRESSION_FILES=$files_compression" + ynh_return "YNH_CONFIG_MAIN_BACKUP_TYPES_CORE_BACKUP=$ynh_core_backup" ynh_return "YNH_CONFIG_MAIN_BACKUP_TYPES_APPS_BACKUP=$ynh_app_backup" @@ -136,6 +147,37 @@ apply_config() { # MODIFY SETTINGS #================================================= + # Change the compression algorithms + # Replace "No compression" by "none" for the config file + if [ "$ynh_compression" == "No compression" ]; then + ynh_compression=none + fi + if [ "$ynh_compression" != "$old_ynh_compression" ] + then + # Update the config, or add the config if not yet existing + if grep "^ynh_compression_mode=" "$config_file" + then + ynh_replace_string --match_string="^ynh_compression_mode=.*" --replace_string="ynh_compression_mode=$ynh_compression" --target_file="$config_file" + else + echo "ynh_compression_mode=$ynh_compression" >> "$config_file" + fi + fi + # Replace "No compression" by "none" for the config file + if [ "$files_compression" == "No compression" ]; then + files_compression=none + fi + if [ "$files_compression" != "$old_files_compression" ] + then + # Update the config, or add the config if not yet existing + if grep "^files_compression_mode=" "$config_file" + then + ynh_replace_string --match_string="^files_compression_mode=.*" --replace_string="files_compression_mode=$files_compression" --target_file="$config_file" + else + echo "files_compression_mode=$files_compression" >> "$config_file" + fi + + fi + # Change ynh_core_backup in the config file ynh_replace_string --match_string="^ynh_core_backup=.*" --replace_string="ynh_core_backup=$ynh_core_backup" --target_file="$config_file"