Skip to content

Commit 6493544

Browse files
committed
MS Edge support.
1 parent 40641eb commit 6493544

1 file changed

Lines changed: 41 additions & 12 deletions

File tree

build.sh

Lines changed: 41 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
BASE="$PWD"
88
SRC="$BASE/src"
99
BUILD="$BASE/build"
10-
CHROMIUM="$BASE/chromium"
1110
MANIFEST_IN="$SRC/manifest.json"
1211
MANIFEST_OUT="$BUILD/manifest.json"
1312

@@ -91,7 +90,6 @@ cp -p LICENSE COPYING "$BUILD"/
9190

9291
BUILD_CMD="web-ext"
9392
BUILD_OPTS="build --overwrite-dest"
94-
CHROMIUM_BUILD_OPTS="$BUILD_OPTS"
9593

9694
if [[ $VER == *rc* ]]; then
9795
sed -re 's/^(\s+)"strict_min_version":.*$/\1"update_url": "https:\/\/secure.informaction.com\/update\/?v='$VER'",\n\0/' \
@@ -132,34 +130,65 @@ fi
132130

133131
COMMON_BUILD_OPTS="--ignore-files=test/XSS_test.js --ignore-files=content/experiments.js"
134132

135-
"$BUILD_CMD" $BUILD_OPTS --source-dir="$WEBEXT_IN" --artifacts-dir="$WEBEXT_OUT" $COMMON_BUILD_OPTS
133+
build() {
134+
"$BUILD_CMD" $BUILD_OPTS --source-dir="$WEBEXT_IN" --artifacts-dir="$WEBEXT_OUT" $COMMON_BUILD_OPTS
135+
}
136+
137+
build
138+
136139
SIGNED="$XPI_DIR/noscript_security_suite-$VER-an+fx.xpi"
137140
if [ -f "$SIGNED" ]; then
138141
mv "$SIGNED" "$XPI.xpi"
139142
../../we-publish "$XPI.xpi"
140143
elif [ -f "$XPI.zip" ]; then
141-
[[ "$VER" == *rc* ]] && xpicmd="mv" || xpicmd="cp"
142-
$xpicmd "$XPI.zip" "$XPI.xpi"
144+
if unzip -l "$XPI.xpi" | grep "META-INF/mozilla.rsa" >/dev/null 2>&1; then
145+
echo "A signed $XPI.xpi already exists, not overwriting."
146+
else
147+
[[ "$VER" == *rc* ]] && xpicmd="mv" || xpicmd="cp"
148+
$xpicmd "$XPI.zip" "$XPI.xpi"
149+
echo "Created $XPI.xpi"
150+
fi
143151
else
144152
echo >&2 "ERROR: Could not create $XPI.xpi!"
145153
exit 3
146154
fi
147-
echo "Created $XPI.xpi"
148155
ln -fs $XPI.xpi "$BASE/latest.xpi"
156+
149157
# create Chromium pre-release
150-
rm -rf "$CHROMIUM"
158+
159+
CHROMIUM_UNPACKED="$BASE/chromium"
160+
EDGE_UPDATE_URL="https://edge.microsoft.com/extensionwebstorebase/v1/crx"
161+
rm -rf "$CHROMIUM_UNPACKED"
151162
strip_rc_ver "$MANIFEST_OUT"
152163
# manifest.json patching for Chromium:
164+
165+
EXTRA_PERMS=""
166+
if grep 'patchWorkers.js' "$MANIFEST_OUT" >/dev/null 2>&1; then
167+
EXTRA_PERMS='"debugger",'
168+
fi
169+
153170
# skip "application" manifest key
154171
(grep -B1000 '"name": "NoScript"' "$MANIFEST_OUT"; \
155-
grep -A2000 '"version":' "$MANIFEST_OUT" | \
172+
grep -A2000 '"version":' "$MANIFEST_OUT") | \
173+
# auto-update URL for the Edge version on the Microsoft Store
174+
sed -e '/"name":/a\' -e ' "update_url": "'$EDGE_UPDATE_URL'",' | \
156175
# skip embeddingDocument.js
157-
grep -v 'content/embeddingDocument.js') | \
176+
grep -v 'content/embeddingDocument.js' | \
158177
# add "debugger" permission for patchWorkers.js
159-
sed -re 's/( *)"webRequestBlocking",/&\n\1"debugger",/' | \
178+
sed -re 's/( *)"webRequestBlocking",/&\n\1'"$EXTRA_PERMS"'/' | \
160179
# add origin fallback for content scripts
161180
sed -re 's/( *)"match_about_blank": *true/\1"match_origin_as_fallback": true,\n&/' > \
162181
"$MANIFEST_OUT".tmp && \
163182
mv "$MANIFEST_OUT.tmp" "$MANIFEST_OUT"
164-
mv "$BUILD" "$CHROMIUM"
165-
web-ext $CHROMIUM_BUILD_OPTS --source-dir="$CHROMIUM" --artifacts-dir="$WEBEXT_OUT" $COMMON_BUILD_OPTS
183+
184+
build
185+
186+
if [ -f "$XPI.zip" ]; then
187+
mv "$XPI.zip" "$XPI-edge.zip"
188+
# remove Edge-specific manifest lines and package for generic Chromium
189+
grep -v '"update_url":' "$MANIFEST_OUT" > "$MANIFEST_OUT.tmp" && \
190+
mv "$MANIFEST_OUT.tmp" "$MANIFEST_OUT" && \
191+
build
192+
fi
193+
194+
mv "$BUILD" "$CHROMIUM_UNPACKED"

0 commit comments

Comments
 (0)