diff options
Diffstat (limited to 'subprojects/freeamo/src/unmaintained/sync-data/fsd-amo-bot')
-rwxr-xr-x | subprojects/freeamo/src/unmaintained/sync-data/fsd-amo-bot | 142 |
1 files changed, 142 insertions, 0 deletions
diff --git a/subprojects/freeamo/src/unmaintained/sync-data/fsd-amo-bot b/subprojects/freeamo/src/unmaintained/sync-data/fsd-amo-bot new file mode 100755 index 0000000..4947ae7 --- /dev/null +++ b/subprojects/freeamo/src/unmaintained/sync-data/fsd-amo-bot @@ -0,0 +1,142 @@ +#!/bin/bash + +# Copyright 2016, 2017 David Hedlund +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# https://addons-server.readthedocs.io/en/latest/topics/api/addons.html +# Add to wiki and remove: echo "|Name=$(xmlstarlet sel -t -v "addon/name" test.xml)" + +SCRIPTSRC=$(readlink -f "$0" || echo "$0") +RUN_PATH=$(dirname "${SCRIPTSRC}" || echo .) + +if [ ! -f /usr/bin/jq ]; then echo "/usr/bin/jq not found!"; exit=true; fi +if [ ! -f /usr/bin/wget ]; then echo "/usr/bin/wget not found!"; exit=true; fi + +if [[ $exit == true ]]; then exit 1; fi + + +if [ ! -d "build" ]; then mkdir -p build; fi + +retrive () { + api="$(echo "$url" | sed "s|https://addons.mozilla.org/en-US/firefox/addon/|https://addons.mozilla.org/api/v3/addons/addon/|g;")"; + slug="$(echo "$url" | sed "s|https://addons.mozilla.org/en-US/firefox/addon/||g; s|/||g")"; +} + +xpi () { + cd build/ || exit + echo "$download" > tmp.txt + sed -i "s|/addon-|\naddon-|" tmp.txt + xpi=$(grep ".xpi" tmp.txt); + fbname=$(basename "$xpi" | cut -d. -f1); +} + + +case "$1" in + --get-json) + + if [ ! -d "build/amo/json" ]; then mkdir -p build/amo/json; fi + if [ ! -d "build/amo/json.versions" ]; then mkdir -p build/amo/json.versions; fi + cd build/amo/ || exit + + while read -r url; do + + retrive + wget "$api" -O json/$slug.json + wget $api\versions/$(cat json/$slug.json | jq '.current_version.id')/ -O json.versions/$slug.json + + done < ../../amo-repo.txt + + # List obsoleted projects + find json/ -size 0 -print + + ;; + --get-xpi-url) + + cd build/ || exit + rm -f amo_repo-latest_download.txt + for i in $(find amo/json/ -maxdepth 1 -type f); do echo "https://addons.mozilla.org/firefox/downloads/latest/$(basename $i | sed "s|.json||")/addon-$(cat $i | jq '.current_version.id').xpi" >> amo_repo-latest_download.txt; done + + ;; + + --get-xpi) + + if [ ! -d "build/amo/xpi" ]; then mkdir -p build/amo/xpi; fi + + while read download; do + + xpi + + if [ ! -f amo/xpi/$xpi ]; then + + cd amo/xpi/ || exit + wget $download + cd .. + + fi + + cd .. + + + done < build/amo_repo-latest_download.txt + + ;; + + --xpi-extract) + + if [ ! -d "build/amo/xpi.extracted" ]; then mkdir -p build/amo/xpi.extracted; fi + + while read download; do + + xpi + + if [ ! -d amo/xpi.extracted/$fbname ]; then + + mkdir -p amo/xpi.extracted/$fbname + cd amo/xpi.extracted/$fbname || exit + unzip ../../xpi/$xpi + cd ../../ + + fi + + cd .. + + done < build/amo_repo-latest_download.txt + + ;; + + + --all) + + $0 --get-json + $0 --get-xpi-url + $0 --get-xpi + $0 --xpi-extract + ;; + + *) + + echo $"$0 [OPTION] + +OPTIONS + --all + --get-json + --get-xpi-url + --get-xpi + --xpi-extract + --make-xml" + exit 1 + +esac + +exit 0 |