#!/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