diff --git a/edge/PREPARE b/edge/PREPARE new file mode 100644 index 0000000000000000000000000000000000000000..575ff42b096b6fc1eae4d37210413332be7dba79 --- /dev/null +++ b/edge/PREPARE @@ -0,0 +1,4 @@ +for size in 16 32 128 ; do + convert -density 256x256 -background transparent "$SHAREDDIR/icon.svg" \ + -resize ${size}x${size} "$targetdir/icon${size}x${size}.png" +done diff --git a/edge/TARGET b/edge/TARGET new file mode 100644 index 0000000000000000000000000000000000000000..dbfb8f931b33282ce7d78b6ea117eba71390087d --- /dev/null +++ b/edge/TARGET @@ -0,0 +1 @@ +firefox diff --git a/edge/manifest.override.json b/edge/manifest.override.json new file mode 100644 index 0000000000000000000000000000000000000000..8e2830636b450096ade982f6b07c653c2a82da4b --- /dev/null +++ b/edge/manifest.override.json @@ -0,0 +1,7 @@ +{ + "icons": { + "16": "icon16x16.png", + "32": "icon32x32.png", + "128": "icon128x128.png" + } +} diff --git a/firefox/manifest.beta.part.json b/firefox/manifest.beta.merge.json similarity index 100% rename from firefox/manifest.beta.part.json rename to firefox/manifest.beta.merge.json diff --git a/firefox/manifest.part.json b/firefox/manifest.merge.json similarity index 100% rename from firefox/manifest.part.json rename to firefox/manifest.merge.json diff --git a/scripts/build.sh b/scripts/build.sh index 00539a35f1cd4c12b0ec00f5da6b3560207c170a..b2c75cd13d9e5316cf860faa281c9c34cef184dd 100644 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -2,6 +2,10 @@ set -eu +TARGETS=(thunderbird firefox edge) +BASEDIR="$( cd "$(dirname "${BASH_SOURCE[0]}")/.." >/dev/null 2>&1 && pwd )" + + usage() { cat <<EOF Usage: $0 [--beta] [--debug] [--version VERSION] @@ -56,9 +60,6 @@ done [ "$version" ] || usage -TARGETS=(thunderbird firefox) - -BASEDIR="$( cd "$(dirname "${BASH_SOURCE[0]}")/.." >/dev/null 2>&1 && pwd )" BUILDDIR="$BASEDIR/build" SHAREDDIR="$BASEDIR/shared" @@ -74,22 +75,36 @@ else version_name="$version" fi -declare -a manifests +declare -a merge +declare -a override for target in "${TARGETS[@]}" ; do targetdir="$BUILDDIR/$target" sourcedir="$BASEDIR/$target" xpifile="safelinks-cleaner-$target.xpi" outputfile="$BUILDDIR/$xpifile" + origdir= - echo "[+] building target '$target'" + echo -n "[+] building target '$target'" + if [ -f "$sourcedir/TARGET" ] ; then + echo " (alias for $(cat $sourcedir/TARGET))" + origdir="$sourcedir" + sourcedir="$BASEDIR/$(cat $sourcedir/TARGET)" + else + echo + fi + [ -d "$targetdir" ] && rm -r "$targetdir" mkdir -p "$targetdir" + [ -f "$origdir/PREPARE" ] && source "$origdir/PREPARE" + cp -r "$SHAREDDIR"/* "$targetdir" cp -r "$sourcedir"/* "$targetdir" - rm -f "$targetdir"/manifest.part.json \ - "$targetdir"/manifest.beta.part.json \ + rm -f "$targetdir"/*.merge.json \ + "$targetdir"/*.override.json \ + "$targetdir"/PREPARE \ + "$targetdir"/TARGET \ "$targetdir"/*~ \ "$targetdir"/#* @@ -99,15 +114,26 @@ for target in "${TARGETS[@]}" ; do done fi - manifests=("$SHAREDDIR/manifest.part.json" - "$sourcedir/manifest.part.json") - - if [ "$beta" -a -f "$sourcedir/manifest.beta.part.json" ] ; then - manifests+=("$sourcedir/manifest.beta.part.json") - fi + merge=("$SHAREDDIR/manifest.merge.json") + [ -f "$sourcedir/manifest.merge.json" ] && \ + merge+=("$sourcedir/manifest.merge.json") + [ "$origdir" -a -f "$origdir/manifest.merge.json" ] && \ + merge+=("$origdir/manifest.merge.json") + [ "$beta" -a "$sourcedir/manifest.beta.merge.json" ] && \ + merge+=("$sourcedir/manifest.beta.merge.json") + [ "$origdir" -a "$beta" -a "$sourcedir/manifest.beta.merge.json" ] && \ + merge+=("$origdir/manifest.beta.merge.json") + + override=() + [ "$origdir" -a -f "$origdir/manifest.override.json" ] && \ + override+=("$origdir/manifest.override.json") + [ "$beta" -a "$sourcedir/manifest.beta.override.json" ] && \ + override+=("$sourcedir/manifest.beta.override.json") + [ "$origdir" -a "$beta" -a "$origdir/manifest.beta.override.json" ] && \ + override+=("$origdir/manifest.beta.override.json") python3 "$BASEDIR/scripts/makemanifest.py" \ - "${manifests[@]}" \ + --merge "${merge[@]}" --override "${override[@]}" \ > "$targetdir/manifest.json" sed -i -e "s|%XPIFILE%|$xpifile|g" "$targetdir/manifest.json" diff --git a/scripts/makemanifest.py b/scripts/makemanifest.py index 4b4a2945804e726eb620cc81f7cc42244f9245af..57faca838a377d49a9907664b2d630e44a085352 100644 --- a/scripts/makemanifest.py +++ b/scripts/makemanifest.py @@ -33,13 +33,13 @@ def deepmerge(data_a, data_b, *, path=""): def main(): """Main function.""" parser = argparse.ArgumentParser("Merge fragments of manifest.json files.") -# parser.add_argument('--output', required=True, help='path to output file') - parser.add_argument('files', nargs='+', help='input files') + parser.add_argument('--merge', nargs='+', help='input files to merge') + parser.add_argument('--override', nargs='*', default=[], help='override files') opts = parser.parse_args() result = {} errors = False - for path in opts.files: + for path in opts.merge: with open(path, 'r') as fp: try: data = json.load(fp) @@ -51,6 +51,16 @@ def main(): if errors: sys.exit(1) + + for path in opts.override: + with open(path, 'r') as fp: + try: + data = json.load(fp) + except json.decoder.JSONDecodeError as exc: + print('%s: %s' % (path, str(exc)), file=sys.stderr) + errors = True + if not errors: + result.update(data) print(json.dumps(result, indent=4)) diff --git a/scripts/update-version.py b/scripts/update-version.py index 6129dbefb6a32c964b22883c44a69e29b4dd33bd..c64c1082bd1355ee1aec5edf852ea3a2699c9fde 100644 --- a/scripts/update-version.py +++ b/scripts/update-version.py @@ -272,10 +272,12 @@ def main(): print(new_version) else: if increment: - print(f'git tag {new_version} {commit_ref}') - print(f'git push origin') + verbose(f'git tag {new_version} {commit_ref}') + verbose(f'git push origin') if opts.output: - print(f'echo "$new_version" > {opts.output}') + verbose(f'echo "{new_version}" > {opts.output}') + if not opts.verbose: + print(f"{new_version}") return 0 diff --git a/shared/manifest.part.json b/shared/manifest.merge.json similarity index 100% rename from shared/manifest.part.json rename to shared/manifest.merge.json diff --git a/thunderbird/manifest.beta.part.json b/thunderbird/manifest.beta.merge.json similarity index 100% rename from thunderbird/manifest.beta.part.json rename to thunderbird/manifest.beta.merge.json diff --git a/thunderbird/manifest.part.json b/thunderbird/manifest.merge.json similarity index 100% rename from thunderbird/manifest.part.json rename to thunderbird/manifest.merge.json