From a5f0734921e38a64c562a88b1e125f7f23e31799 Mon Sep 17 00:00:00 2001 From: hensm Date: Sat, 1 Dec 2018 08:10:39 +0000 Subject: [PATCH] Don't package extension for normal builds --- .gitignore | 1 + README.md | 8 ++++---- ext/build.js | 27 ++++++++++++++++++++------- 3 files changed, 25 insertions(+), 11 deletions(-) diff --git a/.gitignore b/.gitignore index a6a7a29..38217f3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ node_modules/ dist/ app/node_modules/ +app/build ext/node_modules/ test/ChromeProfile/ .idea/ diff --git a/README.md b/README.md index 4e28fdf..9576318 100644 --- a/README.md +++ b/README.md @@ -61,7 +61,7 @@ This will build the ext and app, outputting to `dist/`: * #### `dist/app/` ... contains the bridge binary and manifest with the path pointing that binary. `install-manifest` copies this manifest to the proper location (or adds its current location to the registry). * #### `dist/ext/` - ... contains the built extension in the format `fx_cast-.zip` in addition to the unpacked extension at `dist/ext/unpacked/`. + ... contains the unpacked extension. Watching ext changes: @@ -80,9 +80,9 @@ npm run start --prefix ./ext Packaging currently only possible for macOS/Linux. macOS packages can only be created on macOS, Linux .deb/.rpm packages can be built on any platform with `dpkg-deb` and `rpmbuild` binaries. * #### `dist/app/` - ... contains the installer package: `fx_cast_bridge.pkg` (macOS). + ... contains the installer package: `fx_cast_bridge.(pkg|deb|rpm|exe)` * #### `dist/ext/` - ... contains the built extension. + ... contains the built extension in the format `fx_cast-.zip`. Build and package app and extension for current platform: @@ -99,7 +99,7 @@ npm run package --prefix ./app -- --platform=linux --packageType=rpm ##### Package script arguments -* `--platform` `"win"`,`"macos"`,`"linux"` +* `--platform` `"win"`,`"mac"`,`"linux"` Select the platform to build for. * `--packageType` `"deb"`,`"rpm"` Select the package type. Defaults to `deb`. Only relevant when building for Linux. diff --git a/ext/build.js b/ext/build.js index 67a92ff..ff309aa 100644 --- a/ext/build.js +++ b/ext/build.js @@ -25,8 +25,15 @@ const extensionName = "fx_cast"; const extensionId = "fx_cast@matt.tf"; const extensionVersion = "0.0.1"; +const DIST_PATH = path.join(__dirname, "../dist/ext"); +const UNPACKED_PATH = path.join(DIST_PATH, "unpacked"); + // Clean -fs.removeSync(path.join(__dirname, "../dist/ext/")); +fs.removeSync(DIST_PATH); + +const buildCmd = `web-ext build --overwrite-dest ` + + `--source-dir ${UNPACKED_PATH} ` + + `--artifacts-dir ${DIST_PATH} `; const child = spawn( `webpack --env.extensionName=${extensionName} ` @@ -34,11 +41,8 @@ const child = spawn( + `--env.extensionVersion=${extensionVersion} ` + `--env.mirroringAppId=${argv.mirroringAppId} ` + `--mode=${argv.mode} ` - + `${argv.watch ? "--watch" : ""} && ` - - + `web-ext build --overwrite-dest ` - + `--source-dir ../dist/ext/unpacked ` - + `--artifacts-dir ../dist/ext ` + + `${argv.watch ? "--watch" : ""} ` + + `${argv.package ? "&&" + buildCmd : ""} ` , { shell: true } ); @@ -47,6 +51,15 @@ child.stderr.pipe(process.stderr); child.on("exit", () => { if (argv.package) { - fs.remove(path.join(__dirname, "../dist/ext/unpacked")); + fs.remove(UNPACKED_PATH); + } else { + for (const file of fs.readdirSync(UNPACKED_PATH)) { + fs.moveSync(path.join(UNPACKED_PATH, file) + , path.join(DIST_PATH, file) + , { overwrite: true }); + } + + // Remove empty unpacked directory + fs.remove(UNPACKED_PATH); } });