aboutsummaryrefslogtreecommitdiff
path: root/subprojects/freeamo/src/unmaintained/make-repository-list
diff options
context:
space:
mode:
Diffstat (limited to 'subprojects/freeamo/src/unmaintained/make-repository-list')
-rw-r--r--subprojects/freeamo/src/unmaintained/make-repository-list93
1 files changed, 93 insertions, 0 deletions
diff --git a/subprojects/freeamo/src/unmaintained/make-repository-list b/subprojects/freeamo/src/unmaintained/make-repository-list
new file mode 100644
index 0000000..d043659
--- /dev/null
+++ b/subprojects/freeamo/src/unmaintained/make-repository-list
@@ -0,0 +1,93 @@
+#!/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 <http://www.gnu.org/licenses/>.
+
+# It is ok to distribute only-free programs on addons.mozilla.org even if they distribute nonfree programs.
+# This function requires _much_ less maintainance for custom add-on's, you don't need to manually sync
+# your addons.mozilla.org collection list with a separate text file.
+
+# https://github.com/mozilla/addons/issues/722
+# Cannot list collections in desired formats
+# Cannot get a list of names of Collections from other users like https://addons.mozilla.org/collections/mozilla/ without authenication (see https://addons-server.readthedocs.io/en/latest/topics/api/collections.html#list).
+# So we have to parse it from HTML.
+
+
+# Get the links to the collections
+
+function get_repositories {
+
+ check_type="repositories";
+ check_files
+
+ cd build/ || exit
+
+ for i in $(cat ../FreeAMO-repositories); do
+
+ user=$(echo $i | sed "s|https://addons.mozilla.org/en-US/firefox/collections/||; s|/||;");
+ rm -f repository-$user
+
+
+ function wget_repository {
+
+ match="^ <a href=\"/en-US/firefox/collections/"
+ wget -qO- $i$wget_repository__page_extension | grep "$match" | sed "s|$match|https://addons.mozilla.org/en-US/firefox/collections/|; s|\">||" >> repository-$user
+
+ }
+
+ # Figure out if there are several pages
+ number_of_pages=$(wget -qO- $i | grep "?page=" | tail -n 2 | head -n 1 | sed "s|page=|\npage=|g; s|\"|\n\"|g" | grep "page=" | sed "s|page=||");
+
+ if [ -z "$number_of_pages" ]; then
+
+ echo "$i doesn't have any sub pages";
+ wget_repository
+
+ else
+
+ echo "$i has sub pages";
+
+ page_number=1;
+
+ while [ $page_number -le $number_of_pages ]
+ do
+
+ wget_repository__page_extension="?page=$page_number";
+ echo "$wget_repository__page_extension"
+ wget_repository
+ page_number=$(( $page_number + 1 ))
+
+ done
+
+ fi
+
+ done
+}
+get_repositories
+
+
+# Download the JSON files from the collections
+
+cd ..
+for x in $(find build/ -name repository* | sort); do
+
+ for i in $(cat $x); do
+
+ collection_name=$(echo $i | sed "s|https://addons.mozilla.org/en-US/firefox/collections/||; s|/|-|; s|/$||");
+ wget $i"format%3Ajson" -O "build/collection-$collection_name.json"
+
+ done
+
+done