#!/usr/bin/env bash # This file is part of FreeAMO # Copyright (C) 2018 David Hedlund # # FreeAMO is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # FreeAMO is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . function latest_debranded_trisquel_version { # All debranded programs starts with "i" so all of them are in Trisquels "/i/" directory wget -qO- "http://archive.trisquel.info/trisquel/pool/main/i/$debranded_package/?C=N;O=D" | sed "s|\"|\\n|g; s|-|\\n|g" | grep "$debranded_package"_ | head -n 1 | sed "s|"$debranded_package"_||" } function check_files { if [ ! -f "$run_path/FreeAMO-$check_type" ]; then echo "$run_path/FreeAMO-$check_type doesn't exist."; echo "Exiting" && exit else # Make sure all links are using SSL if grep -q "http://addons.mozilla.org/" "$run_path/FreeAMO-$check_type"; then echo "Change http://addons.mozilla.org/ to https://addons.mozilla.org/ (https)." echo "Exiting" && exit fi fi } function line_status { if [ "$file" == "$previous_file" ]; then ((++line)) else line="0"; # Should not be 1 fi } # Begin locale code function do-locale { echo "####################" tmp__en_US=$(jq ".results[$entry].$locale_description" "$file" | sed "s|en-US|en_US|" | jq -r .en_US ) tmp__en_GB=$(jq ".results[$entry].$locale_description" "$file" | sed "s|en-GB|en_GB|" | jq -r .en_GB ) # Use the first avalible if English is not avaliable tmp=$(jq -r ".results[$entry] | select(.$locale_description != null) | .$locale_description[]" "$file" | head -n 1) || [[ $? == 141 ]] # Avoid `head -n 1` error `returned 141` if [ "$tmp__en_US" != "null" ]; then if [ "$locale_description" == "name" ]; then name="$tmp__en_US"; elif [ "$locale_description" == "summary" ]; then summary="$tmp__en_US"; elif [ "$locale_description" == "description" ]; then description="$tmp__en_US"; elif [ "$locale_description" == "homepage" ]; then homepage="$tmp__en_US"; elif [ "$locale_description" == "support_url" ]; then support_url="$tmp__en_US"; fi elif [ "$tmp__en_GB" != "null" ]; then if [ "$locale_description" == "name" ]; then name="$tmp__en_GB"; elif [ "$locale_description" == "summary" ]; then summary="$tmp__en_GB"; elif [ "$locale_description" == "description" ]; then description="$tmp__en_GB"; elif [ "$locale_description" == "homepage" ]; then homepage="$tmp__en_GB"; elif [ "$locale_description" == "support_url" ]; then support_url="$tmp__en_GB"; fi elif [ "$tmp" != "null" ]; then if [ "$locale_description" == "name" ]; then name="$tmp"; elif [ "$locale_description" == "summary" ]; then summary="$tmp"; elif [ "$locale_description" == "description" ]; then description="$tmp"; elif [ "$locale_description" == "homepage" ]; then homepage="$tmp"; elif [ "$locale_description" == "support_url" ]; then support_url="$tmp"; fi fi # Use summary if description is not provided if [ "$description" == "" ]; then description="$summary" fi } # End locale code function amo_variables() { id="$(jq ".results[$entry].id" "$file")"; average_daily_users="$(jq ".results[$entry].average_daily_users" "$file")"; has_eula="$(jq ".results[$entry].has_eula" "$file")"; slug="$(jq -r ".results[$entry].slug" "$file")"; current_version__id=$(jq ".results[$entry].current_version.id" "$file"); source "$run_path/src/main_functions" locale_description="name" do-locale if jq .results[$entry].current_version.files[0].permissions "$file" | grep -q "nativeMessaging"; then nativeMessaging__pass=false; else nativeMessaging__pass=true; fi } function amo_variables__licenses { license__amo_full_name="$(jq ".license.name" "$run_path/build/json/current_versions/$current_version__id.json" | sed "s|en-US|en_US|;" | jq -r .en_US)" } function essential_addon { if [ "$has_eula" = false ] && [ "$nativeMessaging__pass" = true ] && [ "$average_daily_users" -ge "$minimum_average_daily_users" ]; then essential_addon=true; else essential_addon=false; fi } #function hard_to_evaluate_addon { # curl "https://addons.mozilla.org/api/v3/addons/addon/nemid-nøglefilsprogram/" | jq .current_version.files[0].permissions | grep "nativeMessaging # API data: Add software dependencies - https://github.com/mozilla/addons-server/issues/8668 # The API should be fixed. there are to many add-ons to keep track on if they have or not have software dependencies. # Old solution: # 1: Add this to FreeAMO-dependencies: #belgium-eid eid-mw # 2: Uncomment this code: # depends_on_external_program=false; # while IFS= read -r dependencies; do # # dependency_slug=$(echo $dependencies | awk '{print $1}'); # dependency=$(echo "$dependencies" | cut -f 2); # # if [ "$dependency_slug" == "$slug" ]; then # # depends_on_external_program=true; # # fi # # done < $run_path/FreeAMO-dependencies #} function pv__progress { if [ ! "$pv__discard" = true ] && ! $debug; then (pv --progress --line-mode --size "$pv__size" --timer) > /dev/null else tee fi } function format_description__mixed_html_to_mediawiki { sed " # Remove Mozilla tracking links s|https://outgoing.prod.mozaws.net/v1/.\\{65\\}||g; s|%3A|:|g; s|%23|#|g # Remove reduntant backslashes. Pandoc will convert quotes regardless. s|\\\\\\\"|\\\"|g " } function format_description__after_pandoc { sed " ### Fix formatting that cannot be fixed by Pandoc since it's not HTML # Fix line breaks. s|\\\\n|\\n|g # Remove \t s|\\\\t||g " # Change local links to external links } function format_description { format_description__mixed_html_to_mediawiki | pandoc -f html -t mediawiki | format_description__after_pandoc }