mirror of
https://github.com/gorhill/uBlock.git
synced 2024-11-25 03:43:25 +01:00
ae4754415c
Related issue: https://github.com/uBlockOrigin/uBOL-home/issues/229 Add "Filter lists" pane in dashboard The DNR API now supports enabling 50 static rulesets put of a maximum of 100 (instead of 10 out of 50 originally). Thus given the potentially growing number of static rulesets, the available stock rulesets has been moved to its own pane, with the following improvements: - Support sublists - Support search Aditionally, "RU AdList: Counter" has been added as a stock ruleset. Other changes: - Do not re-evaluate regexes which failed validation - Better reduce `removeparam` rules
170 lines
4.7 KiB
Bash
Executable File
170 lines
4.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
#
|
|
# This script assumes a linux environment
|
|
|
|
set -e
|
|
shopt -s extglob
|
|
|
|
echo "*** uBOLite.mv3: Creating extension"
|
|
|
|
PLATFORM="chromium"
|
|
|
|
for i in "$@"; do
|
|
case $i in
|
|
quick)
|
|
QUICK="yes"
|
|
;;
|
|
full)
|
|
FULL="yes"
|
|
;;
|
|
firefox)
|
|
PLATFORM="firefox"
|
|
;;
|
|
chromium)
|
|
PLATFORM="chromium"
|
|
;;
|
|
uBOLite_+([0-9]).+([0-9]).+([0-9]).+([0-9]))
|
|
TAGNAME="$i"
|
|
FULL="yes"
|
|
;;
|
|
before=+([[:print:]]))
|
|
BEFORE="${i:7}"
|
|
;;
|
|
esac
|
|
done
|
|
|
|
echo "PLATFORM=$PLATFORM"
|
|
echo "TAGNAME=$TAGNAME"
|
|
echo "BEFORE=$BEFORE"
|
|
|
|
DES="dist/build/uBOLite.$PLATFORM"
|
|
|
|
if [ "$QUICK" != "yes" ]; then
|
|
rm -rf $DES
|
|
fi
|
|
|
|
mkdir -p $DES
|
|
cd $DES
|
|
DES=$(pwd)
|
|
cd - > /dev/null
|
|
|
|
mkdir -p "$DES"/css/fonts
|
|
mkdir -p "$DES"/js
|
|
mkdir -p "$DES"/img
|
|
|
|
if [ -n "$UBO_VERSION" ]; then
|
|
UBO_REPO="https://github.com/gorhill/uBlock.git"
|
|
UBO_DIR=$(mktemp -d)
|
|
echo "*** uBOLite.mv3: Fetching uBO $UBO_VERSION from $UBO_REPO into $UBO_DIR"
|
|
cd "$UBO_DIR"
|
|
git init -q
|
|
git remote add origin "https://github.com/gorhill/uBlock.git"
|
|
git fetch --depth 1 origin "$UBO_VERSION"
|
|
git checkout -q FETCH_HEAD
|
|
cd - > /dev/null
|
|
else
|
|
UBO_DIR=.
|
|
fi
|
|
|
|
echo "*** uBOLite.mv3: Copying common files"
|
|
cp -R "$UBO_DIR"/src/css/fonts/* "$DES"/css/fonts/
|
|
cp "$UBO_DIR"/src/css/themes/default.css "$DES"/css/
|
|
cp "$UBO_DIR"/src/css/common.css "$DES"/css/
|
|
cp "$UBO_DIR"/src/css/dashboard-common.css "$DES"/css/
|
|
cp "$UBO_DIR"/src/css/fa-icons.css "$DES"/css/
|
|
|
|
cp "$UBO_DIR"/src/js/dom.js "$DES"/js/
|
|
cp "$UBO_DIR"/src/js/fa-icons.js "$DES"/js/
|
|
cp "$UBO_DIR"/src/js/i18n.js "$DES"/js/
|
|
cp "$UBO_DIR"/src/lib/punycode.js "$DES"/js/
|
|
|
|
cp -R "$UBO_DIR/src/img/flags-of-the-world" "$DES"/img
|
|
|
|
cp LICENSE.txt "$DES"/
|
|
|
|
echo "*** uBOLite.mv3: Copying mv3-specific files"
|
|
if [ "$PLATFORM" = "firefox" ]; then
|
|
cp platform/mv3/firefox/background.html "$DES"/
|
|
fi
|
|
cp platform/mv3/extension/*.html "$DES"/
|
|
cp platform/mv3/extension/*.json "$DES"/
|
|
cp platform/mv3/extension/css/* "$DES"/css/
|
|
cp -R platform/mv3/extension/js/* "$DES"/js/
|
|
cp platform/mv3/extension/img/* "$DES"/img/
|
|
cp -R platform/mv3/extension/_locales "$DES"/
|
|
cp platform/mv3/README.md "$DES/"
|
|
|
|
if [ "$QUICK" != "yes" ]; then
|
|
echo "*** uBOLite.mv3: Generating rulesets"
|
|
TMPDIR=$(mktemp -d)
|
|
mkdir -p "$TMPDIR"
|
|
if [ "$PLATFORM" = "chromium" ]; then
|
|
cp platform/mv3/chromium/manifest.json "$DES"/
|
|
elif [ "$PLATFORM" = "firefox" ]; then
|
|
cp platform/mv3/firefox/manifest.json "$DES"/
|
|
fi
|
|
./tools/make-nodejs.sh "$TMPDIR"
|
|
cp platform/mv3/package.json "$TMPDIR"/
|
|
cp platform/mv3/*.js "$TMPDIR"/
|
|
cp platform/mv3/*.mjs "$TMPDIR"/
|
|
cp platform/mv3/extension/js/utils.js "$TMPDIR"/js/
|
|
cp "$UBO_DIR"/assets/assets.dev.json "$TMPDIR"/
|
|
cp "$UBO_DIR"/assets/resources/*.js "$TMPDIR"/
|
|
cp -R platform/mv3/scriptlets "$TMPDIR"/
|
|
mkdir -p "$TMPDIR"/web_accessible_resources
|
|
cp "$UBO_DIR"/src/web_accessible_resources/* "$TMPDIR"/web_accessible_resources/
|
|
cd "$TMPDIR"
|
|
node --no-warnings make-rulesets.js output="$DES" platform="$PLATFORM"
|
|
if [ -n "$BEFORE" ]; then
|
|
echo "*** uBOLite.mv3: salvaging rule ids to minimize diff size"
|
|
echo " before=$BEFORE/$PLATFORM"
|
|
echo " after=$DES"
|
|
node salvage-ruleids.mjs before="$BEFORE"/"$PLATFORM" after="$DES"
|
|
fi
|
|
cd - > /dev/null
|
|
rm -rf "$TMPDIR"
|
|
fi
|
|
|
|
echo "*** uBOLite.mv3: extension ready"
|
|
echo "Extension location: $DES/"
|
|
|
|
# Local build
|
|
if [ -z "$TAGNAME" ]; then
|
|
# Enable DNR rule debugging
|
|
tmp=$(mktemp)
|
|
jq '.permissions += ["declarativeNetRequestFeedback"]' \
|
|
"$DES/manifest.json" > "$tmp" \
|
|
&& mv "$tmp" "$DES/manifest.json"
|
|
# Use a different extension id than the official one
|
|
if [ "$PLATFORM" = "firefox" ]; then
|
|
tmp=$(mktemp)
|
|
jq '.browser_specific_settings.gecko.id = "uBOLite.dev@raymondhill.net"' "$DES/manifest.json" > "$tmp" \
|
|
&& mv "$tmp" "$DES/manifest.json"
|
|
fi
|
|
fi
|
|
|
|
if [ "$FULL" = "yes" ]; then
|
|
EXTENSION="zip"
|
|
if [ "$PLATFORM" = "firefox" ]; then
|
|
EXTENSION="xpi"
|
|
fi
|
|
echo "*** uBOLite.mv3: Creating publishable package..."
|
|
if [ -z "$TAGNAME" ]; then
|
|
TAGNAME="uBOLite_$(jq -r .version "$DES"/manifest.json)"
|
|
else
|
|
tmp=$(mktemp)
|
|
jq --arg version "${TAGNAME:8}" '.version = $version' "$DES/manifest.json" > "$tmp" \
|
|
&& mv "$tmp" "$DES/manifest.json"
|
|
fi
|
|
PACKAGENAME="$TAGNAME.$PLATFORM.mv3.$EXTENSION"
|
|
TMPDIR=$(mktemp -d)
|
|
mkdir -p "$TMPDIR"
|
|
cp -R "$DES"/* "$TMPDIR"/
|
|
cd "$TMPDIR" > /dev/null
|
|
zip "$PACKAGENAME" -qr ./*
|
|
cd - > /dev/null
|
|
cp "$TMPDIR"/"$PACKAGENAME" dist/build/
|
|
rm -rf "$TMPDIR"
|
|
echo "Package location: $(pwd)/dist/build/$PACKAGENAME"
|
|
fi
|