diff --git a/CHANGELOG.md b/CHANGELOG.md index 103d3cd..ff04030 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,10 +4,15 @@ Changelog ## Unreleased - Nothing for now... -## [1.0~ynh2](https://github.com/YunoHost-Apps/archivist_ynh/pull/) - 2019-12-05 +## [1.0.1~ynh1](https://github.com/YunoHost-Apps/archivist_ynh/pull/) - 2019-12-27 + +#### Changed +* [Update to v1.0.1 (b2 and encfs fixes)](https://github.com/YunoHost-Apps/archivist_ynh/pull//commits/) + +## [1.0~ynh2](https://github.com/YunoHost-Apps/archivist_ynh/pull/22) - 2019-12-05 #### Fixed -- [Add ccrypt to dependencies](https://github.com/YunoHost-Apps/archivist_ynh/pull//commits/) +- [Add ccrypt to dependencies](https://github.com/YunoHost-Apps/archivist_ynh/pull/22/commits/b630fc838954169554d8153feb1c52b01d6ddf2a) ## [1.0~ynh1](https://github.com/YunoHost-Apps/archivist_ynh/pull/21) - 2019-12-03 diff --git a/README.md b/README.md index 1e9d26c..4f82d4a 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ It can also makes backups of specified directories. Your backups can be send to many other places, local or distant. Archivist is automatically launched periodicaly to update your backups and send the modifications to the other places. -**Shipped version:** 1.0 +**Shipped version:** 1.0.1 ## Screenshots diff --git a/README_fr.md b/README_fr.md index 82602cd..97742a3 100644 --- a/README_fr.md +++ b/README_fr.md @@ -15,7 +15,7 @@ Il peut également faire des sauvegardes de répertoires spécifiques. Vos sauvegardes peuvent être envoyées à de nombreux autres endroits, locaux ou distants. Archivist est automatiquement lancé périodiquement pour mettre à jour vos sauvegardes et envoyer les modifications aux autres emplacements. -**Version embarquée:** 1.0 +**Version embarquée:** 1.0.1 ## Captures d'écran diff --git a/conf/app.src b/conf/app.src index 40ea796..280bf59 100644 --- a/conf/app.src +++ b/conf/app.src @@ -1,5 +1,5 @@ -SOURCE_URL=https://github.com/maniackcrudelis/archivist/archive/v1.0.tar.gz -SOURCE_SUM=1f98a67aae8b5c4f76e43cb027f4f3bf +SOURCE_URL=https://github.com/maniackcrudelis/archivist/archive/v1.0.1.tar.gz +SOURCE_SUM=56ec81447b7eb6d34c4af213b48530dc SOURCE_SUM_PRG=md5sum SOURCE_FORMAT=tar.gz SOURCE_IN_SUBDIR=true diff --git a/manifest.json b/manifest.json index b599b30..e6db7c0 100644 --- a/manifest.json +++ b/manifest.json @@ -6,7 +6,7 @@ "en": "Automatic backups.", "fr": "Sauvegardes automatiques." }, - "version": "1.0~ynh2", + "version": "1.0.1~ynh1", "url": "https://github.com/maniackcrudelis/archivist", "license": "GPL-3.0", "maintainer": { diff --git a/scripts/_common.sh b/scripts/_common.sh index 2621e6d..16239d7 100644 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -39,24 +39,6 @@ IS_PACKAGE_CHECK () { fi } -#================================================= -# BOOLEAN CONVERTER -#================================================= - -bool_to_01 () { - local var="$1" - [ "$var" = "true" ] && var=1 - [ "$var" = "false" ] && var=0 - echo "$var" -} - -bool_to_true_false () { - local var="$1" - [ "$var" = "1" ] && var=true - [ "$var" = "0" ] && var=false - echo "$var" -} - #================================================= # FUTUR OFFICIAL HELPERS #================================================= @@ -388,140 +370,64 @@ ynh_maintenance_mode_OFF () { #================================================= -# Create a changelog for an app after an upgrade from the file CHANGELOG.md. +# Create a changelog for an app after an upgrade. # -# usage: ynh_send_readme_to_admin [--format=markdown/html/plain] [--output=changelog_file] --changelog=changelog_source] -# | arg: -f --format= - Format in which the changelog will be printed -# markdown: Default format. -# html: Turn urls into html format. -# plain: Plain text changelog -# | arg: -o --output= - Output file for the changelog file (Default ./changelog) -# | arg: -c --changelog= - CHANGELOG.md source (Default ../CHANGELOG.md) +# The changelog is printed into the file ./changelog for the time of the upgrade. # -# The changelog is printed into the file ./changelog and ./changelog_lite +# In order to create a changelog, ynh_app_changelog will get info from /etc/yunohost/apps/$app/status.json +# In order to find the current commit use by the app. +# The remote repository, and the branch. +# The changelog will be only the commits since the current revision. +# +# Because of the need of those info, ynh_app_changelog works only +# with apps that have been installed from a list. +# +# usage: ynh_app_changelog ynh_app_changelog () { - # Declare an array to define the options of this helper. - local legacy_args=foc - declare -Ar args_array=( [f]=format= [o]=output= [c]=changelog= ) - local format - local output - local changelog - # Manage arguments with getopts - ynh_handle_getopts_args "$@" - format=${format:-markdown} - output=${output:-changelog} - changelog=${changelog:-../CHANGELOG.md} + get_value_from_settings () + { + local value="$1" + # Extract a value from the status.json file of an installed app. - local original_changelog="$changelog" - local temp_changelog="changelog_temp" - local final_changelog="$output" + grep "$value\": \"" /etc/yunohost/apps/$app/status.json | sed "s/.*$value\": \"\([^\"]*\).*/\1/" + } - if [ ! -n "$original_changelog" ] - then - echo "No changelog available..." > "$final_changelog" - echo "No changelog available..." > "${final_changelog}_lite" - return 0 - fi + local current_revision="$(get_value_from_settings revision)" + local repo="$(get_value_from_settings url)" + local branch="$(get_value_from_settings branch)" + # ynh_app_changelog works only with an app installed from a list. + if [ -z "$current_revision" ] || [ -z "$repo" ] || [ -z "$branch" ] + then + ynh_print_warn "Unable to build the changelog..." + touch changelog + return 0 + fi - local current_version=$(ynh_read_manifest --manifest="/etc/yunohost/apps/$YNH_APP_INSTANCE_NAME/manifest.json" --manifest_key="version") - local update_version=$(ynh_read_manifest --manifest="../manifest.json" --manifest_key="version") + # Fetch the history of the repository, without cloning it + mkdir git_history + (cd git_history + ynh_exec_warn_less git init + ynh_exec_warn_less git remote add -f origin $repo + # Get the line of the current commit of the installed app in the history. + local line_to_head=$(git log origin/$branch --pretty=oneline | grep --line-number "$current_revision" | cut -d':' -f1) + # Cut the history before the current commit, to keep only newer commits. + # Then use sed to reorganise each lines and have a nice list of commits since the last upgrade. + # This list is redirected into the file changelog + git log origin/$branch --pretty=oneline | head --lines=$(($line_to_head-1)) | sed 's/^\([[:alnum:]]*\)\(.*\)/*(\1) -> \2/g' > ../changelog) + # Remove 'Merge pull request' commits + sed -i '/Merge pull request #[[:digit:]]* from/d' changelog + # As well as conflict resolving commits + sed -i '/Merge branch .* into/d' changelog - # Get the line of the version to update to into the changelog - local update_version_line=$(grep --max-count=1 --line-number "^## $update_version" "$original_changelog" | cut -d':' -f1) - # If there's no entry for this version yet into the changelog - # Get the first available version - if [ -z "$update_version_line" ] - then - update_version_line=$(grep --max-count=1 --line-number "^##" "$original_changelog" | cut -d':' -f1) - fi + # Get the value of admin_mail_html + admin_mail_html=$(ynh_app_setting_get $app admin_mail_html) + admin_mail_html="${admin_mail_html:-0}" - # Get the length of the complete changelog. - local changelog_length=$(wc --lines "$original_changelog" | awk '{print $1}') - # Cut the file before the version to update to. - tail --lines=$(( $changelog_length - $update_version_line + 1 )) "$original_changelog" > "$temp_changelog" - - # Get the length of the troncated changelog. - changelog_length=$(wc --lines "$temp_changelog" | awk '{print $1}') - # Get the line of the current version into the changelog - # Keep only the last line found - local current_version_line=$(grep --line-number "^## $current_version" "$temp_changelog" | cut -d':' -f1 | tail --lines=1) - # If there's no entry for this version into the changelog - # Get the last available version - if [ -z "$current_version_line" ] - then - current_version_line=$(grep --line-number "^##" "$original_changelog" | cut -d':' -f1 | tail --lines=1) - fi - # Cut the file before the current version. - # Then grep the previous version into the changelog to get the line number of the previous version - local previous_version_line=$(tail --lines=$(( $changelog_length - $current_version_line )) \ - "$temp_changelog" | grep --max-count=1 --line-number "^##" | cut -d':' -f1) - # If there's no previous version into the changelog - # Go until the end of the changelog - if [ -z "$previous_version_line" ] - then - previous_version_line=$changelog_length - fi - - # Cut the file after the previous version to keep only the changelog between the current version and the version to update to. - head --lines=$(( $current_version_line + $previous_version_line - 1 )) "$temp_changelog" | tee "$final_changelog" - - if [ "$format" = "html" ] - then - # Replace markdown links by html links - ynh_replace_string --match_string="\[\(.*\)\](\(.*\)))" --replace_string="\1)" --target_file="$final_changelog" - ynh_replace_string --match_string="\[\(.*\)\](\(.*\))" --replace_string="\1" --target_file="$final_changelog" - elif [ "$format" = "plain" ] - then - # Change title format. - ynh_replace_string --match_string="^\(##.* \)(\[\(.*\)\](\(.*\)))" --replace_string="\1- \2 \3" --target_file="$final_changelog" - # Change modifications lines format. - ynh_replace_string --match_string="^\([-*]\).*\[\(.*\)\]\(.*\)" --replace_string="\1 \2 \3" --target_file="$final_changelog" - fi - # else markdown. As the file is already in markdown, nothing to do. - - # Keep only important changes into the changelog - # Remove all minor changes - sed '/^-/d' "$final_changelog" > "${final_changelog}_lite" - # Remove all blank lines (to keep a clear workspace) - sed --in-place '/^$/d' "${final_changelog}_lite" - # Add a blank line at the end - echo "" >> "${final_changelog}_lite" - - # Clean titles if there's no significative changes - local line - local previous_line="" - while read line <&3 - do - if [ -n "$previous_line" ] - then - # Remove the line if it's a title or a blank line, and the previous one was a title as well. - if ( [ "${line:0:1}" = "#" ] || [ ${#line} -eq 0 ] ) && [ "${previous_line:0:1}" = "#" ] - then - ynh_replace_special_string --match_string="${previous_line//[/.}" --replace_string="" --target_file="${final_changelog}_lite" - fi - fi - previous_line="$line" - done 3< "${final_changelog}_lite" - - # Remove all blank lines again - sed --in-place '/^$/d' "${final_changelog}_lite" - - # Restore changelog format with blank lines - ynh_replace_string --match_string="^##.*" --replace_string="\n\n&\n" --target_file="${final_changelog}_lite" - # Remove the 2 first blank lines - sed --in-place '1,2d' "${final_changelog}_lite" - # Add a blank line at the end - echo "" >> "${final_changelog}_lite" - - # If changelog are empty, add an info - if [ $(wc --words "$final_changelog" | awk '{print $1}') -eq 0 ] - then - echo "No changes from the changelog..." > "$final_changelog" - fi - if [ $(wc --words "${final_changelog}_lite" | awk '{print $1}') -eq 0 ] - then - echo "No significative changes from the changelog..." > "${final_changelog}_lite" - fi + # If a html email is required. Apply html to the changelog. + if [ "$admin_mail_html" -eq 1 ] + then + sed -in-place "s@\*(\([[:alnum:]]*\)) -> \(.*\)@* __URL_TAG1__\2__URL_TAG2__${repo}/commit/\1__URL_TAG3__@g" changelog + fi } #=================================================