|
7 | 7 | BASE="$PWD" |
8 | 8 | SRC="$BASE/src" |
9 | 9 | BUILD="$BASE/build" |
10 | | -CHROMIUM="$BASE/chromium" |
11 | 10 | MANIFEST_IN="$SRC/manifest.json" |
12 | 11 | MANIFEST_OUT="$BUILD/manifest.json" |
13 | 12 |
|
@@ -91,7 +90,6 @@ cp -p LICENSE COPYING "$BUILD"/ |
91 | 90 |
|
92 | 91 | BUILD_CMD="web-ext" |
93 | 92 | BUILD_OPTS="build --overwrite-dest" |
94 | | -CHROMIUM_BUILD_OPTS="$BUILD_OPTS" |
95 | 93 |
|
96 | 94 | if [[ $VER == *rc* ]]; then |
97 | 95 | sed -re 's/^(\s+)"strict_min_version":.*$/\1"update_url": "https:\/\/secure.informaction.com\/update\/?v='$VER'",\n\0/' \ |
|
132 | 130 |
|
133 | 131 | COMMON_BUILD_OPTS="--ignore-files=test/XSS_test.js --ignore-files=content/experiments.js" |
134 | 132 |
|
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 | + |
136 | 139 | SIGNED="$XPI_DIR/noscript_security_suite-$VER-an+fx.xpi" |
137 | 140 | if [ -f "$SIGNED" ]; then |
138 | 141 | mv "$SIGNED" "$XPI.xpi" |
139 | 142 | ../../we-publish "$XPI.xpi" |
140 | 143 | 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 |
143 | 151 | else |
144 | 152 | echo >&2 "ERROR: Could not create $XPI.xpi!" |
145 | 153 | exit 3 |
146 | 154 | fi |
147 | | -echo "Created $XPI.xpi" |
148 | 155 | ln -fs $XPI.xpi "$BASE/latest.xpi" |
| 156 | + |
149 | 157 | # 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" |
151 | 162 | strip_rc_ver "$MANIFEST_OUT" |
152 | 163 | # 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 | + |
153 | 170 | # skip "application" manifest key |
154 | 171 | (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'",' | \ |
156 | 175 | # skip embeddingDocument.js |
157 | | - grep -v 'content/embeddingDocument.js') | \ |
| 176 | + grep -v 'content/embeddingDocument.js' | \ |
158 | 177 | # add "debugger" permission for patchWorkers.js |
159 | | - sed -re 's/( *)"webRequestBlocking",/&\n\1"debugger",/' | \ |
| 178 | + sed -re 's/( *)"webRequestBlocking",/&\n\1'"$EXTRA_PERMS"'/' | \ |
160 | 179 | # add origin fallback for content scripts |
161 | 180 | sed -re 's/( *)"match_about_blank": *true/\1"match_origin_as_fallback": true,\n&/' > \ |
162 | 181 | "$MANIFEST_OUT".tmp && \ |
163 | 182 | 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