diff options
Diffstat (limited to 'tools/make-mv3.sh')
-rwxr-xr-x | tools/make-mv3.sh | 116 |
1 files changed, 66 insertions, 50 deletions
diff --git a/tools/make-mv3.sh b/tools/make-mv3.sh index 8b1b2ab..13f82f4 100755 --- a/tools/make-mv3.sh +++ b/tools/make-mv3.sh @@ -13,28 +13,30 @@ for i in "$@"; do case $i in quick) QUICK="yes" - shift # past argument=value ;; full) FULL="yes" - shift # past argument=value ;; firefox) PLATFORM="firefox" - shift # past argument=value ;; chromium) PLATFORM="chromium" - shift # past argument=value ;; - (uBOLite_+([0-9]).+([0-9]).+([0-9]).+([0-9])) + uBOLite_+([0-9]).+([0-9]).+([0-9]).+([0-9])) TAGNAME="$i" FULL="yes" - shift # past argument=value + ;; + 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 @@ -46,9 +48,9 @@ cd $DES DES=$(pwd) cd - > /dev/null -mkdir -p $DES/css/fonts -mkdir -p $DES/js -mkdir -p $DES/img +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" @@ -65,60 +67,74 @@ else 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 -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 "$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 -R "$UBO_DIR/src/img/flags-of-the-world" "$DES"/img -cp LICENSE.txt $DES/ +cp LICENSE.txt "$DES"/ echo "*** uBOLite.mv3: Copying mv3-specific files" if [ "$PLATFORM" = "firefox" ]; then - cp platform/mv3/firefox/background.html $DES/ + 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/ +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 + mkdir -p "$TMPDIR" if [ "$PLATFORM" = "chromium" ]; then - cp platform/mv3/chromium/manifest.json $DES/ + cp platform/mv3/chromium/manifest.json "$DES"/ elif [ "$PLATFORM" = "firefox" ]; then - cp platform/mv3/firefox/manifest.json $DES/ + 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.json "$TMPDIR"/ + cp "$UBO_DIR"/assets/resources/scriptlets.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 - ./tools/make-nodejs.sh $TMPDIR - cp platform/mv3/package.json $TMPDIR/ - cp platform/mv3/*.js $TMPDIR/ - cp platform/mv3/extension/js/utils.js $TMPDIR/js/ - cp $UBO_DIR/assets/assets.json $TMPDIR/ - cp $UBO_DIR/assets/resources/scriptlets.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" cd - > /dev/null - rm -rf $TMPDIR + rm -rf "$TMPDIR" fi echo "*** uBOLite.mv3: extension ready" echo "Extension location: $DES/" +# Local build: use a different extension id than the official one +if [ -z "$TAGNAME" ] && [ "$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 + if [ "$FULL" = "yes" ]; then EXTENSION="zip" if [ "$PLATFORM" = "firefox" ]; then @@ -126,7 +142,7 @@ if [ "$FULL" = "yes" ]; then fi echo "*** uBOLite.mv3: Creating publishable package..." if [ -z "$TAGNAME" ]; then - TAGNAME="uBOLite_$(jq -r .version $DES/manifest.json)" + TAGNAME="uBOLite_$(jq -r .version "$DES"/manifest.json)" else tmp=$(mktemp) jq --arg version "${TAGNAME:8}" '.version = $version' "$DES/manifest.json" > "$tmp" \ @@ -134,12 +150,12 @@ if [ "$FULL" = "yes" ]; then fi PACKAGENAME="$TAGNAME.$PLATFORM.mv3.$EXTENSION" TMPDIR=$(mktemp -d) - mkdir -p $TMPDIR - cp -R $DES/* $TMPDIR/ - cd $TMPDIR > /dev/null - zip $PACKAGENAME -qr ./* + 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 + cp "$TMPDIR"/"$PACKAGENAME" dist/build/ + rm -rf "$TMPDIR" echo "Package location: $(pwd)/dist/build/$PACKAGENAME" fi |