aboutsummaryrefslogblamecommitdiff
path: root/subprojects/freeamo/src/unmaintained/sync-data/fsd-amo-bot
blob: 4947ae7f9d4d24290a071a91b00ebe8910a8db55 (plain) (tree)




















































































































                                                                                                                                                                                                                                           






                        

















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