#!/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 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
}
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 ".results[$entry].slug" "$file" | sed "s|^\"||; s|\"$||;")";
current_version__id=$(jq ".results[$entry].current_version.id" "$file");
# Names
name__enUS=$(jq ".results[$entry].name" "$file" | sed "s|-||;" | jq .enUS | sed "s|^\"||; s|\"$||;" )
name__enGB=$(jq ".results[$entry].name" "$file" | sed "s|-||;" | jq .enGB | sed "s|^\"||; s|\"$||;" )
if [ "$name__enUS" != "null" ]; then name="$name__enUS";
elif [ "$name__enGB" != "null" ]; then name="$name__enGB";
else name=$(jq ".results[$entry].name[]" "$file" | sed "s|-||;" | jq . | sed "s|^\"||; s|\"$||;"); # Use the first avalible name if English is not avaliable
fi
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|enUS|;" | jq .enUS | sed "s|^\"||; s|\"$||;")"
}
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 progress {
(>&2 echo -en "\r"; pv --progress --line-mode --size $pv__size --eta --timer) > /dev/null
}
function html_to_mediawiki {
sed "
# Remove Mozilla tracking links
s|https://outgoing.prod.mozaws.net/v1/.\{65\}||g; s|%3A|:|g; s|%23|#|g
# Fix general links
s|| |g
s||]|g
# Fix line breaks
s|\\\\n|\\n|g
# Fix quotes
s|\\\\\\\"|\\\"|g
# Fix bullets, many developers failed to use
needed to make line break
s|\\n- |\\n* |g
"
}