mobile-config-firefox/contrib/extract-search-engines.sh
Oliver Smith 75c57aa3aa
treewide: change license to MPL-2.0
Adjust the license to be able to upstream adjustments from this
repository to upstream Firefox. I've asked all contributors if they are
fine with the license change in the related issue.

Fixes: https://gitlab.com/postmarketOS/mobile-config-firefox/-/issues/31
2022-01-30 11:59:52 +01:00

72 lines
1.4 KiB
Bash
Executable file

#!/bin/sh -e
# Copyright 2021 Oliver Smith
# SPDX-License-Identifier: MPL-2.0
#
# Extract the search engine names found in your current Firefox installation,
# and create a list suitable for policies.json that removes all of them except
# for what's in remove_allowed_dirs(). Note that SearchEngines can only be
# configured via policies.json in the ESR version of firefox.
# Related: https://github.com/mozilla/policy-templates/blob/master/README.md
remove_allowed_dirs() {
rm -rf \
ddg \
wikipedia
}
get_names() {
grep \
'"name":' \
*/manifest.json \
| cut -d '"' -f 4 \
| grep -v '__MSG_extensionName__' \
| grep -v '^form$'
}
get_names_localized() {
grep \
-A1 \
'"extensionName":' \
*/_locales/*/messages.json \
| grep '"message":' \
| cut -d '"' -f 4
}
get_names_all_sorted() {
(get_names; get_names_localized) | sort -u
}
print_json() {
local first=1
echo ' "SearchEngines": {'
echo ' "Default": "DuckDuckGo",'
echo ' "Remove": ['
get_names_all_sorted | while IFS= read -r i; do
if [ "$first" -eq 1 ]; then
first=0
else
echo ","
fi
printf " \"$i\""
done
echo ''
echo ' ]'
echo ' },'
}
OMNI="/usr/lib/firefox/browser/omni.ja"
TMPDIR="$(mktemp -d "/tmp/extract-search-engines-XXXXXX")"
cd "$TMPDIR"
unzip -q "$OMNI"
cd "chrome/browser/search-extensions"
remove_allowed_dirs
print_json
cd ~
rm -r "$TMPDIR"