diff --git a/app/bin/build.js b/app/bin/build.js index fbb7191..5b0a908 100644 --- a/app/bin/build.js +++ b/app/bin/build.js @@ -1,6 +1,7 @@ const fs = require("fs-extra"); const os = require("os"); const path = require("path"); +const minimist = require("minimist"); const { spawnSync } = require("child_process"); const { exec: pkgExec } = require("pkg"); @@ -10,42 +11,48 @@ const { executableName , manifestName , manifestPath , pkgPlatform - , DIST_DIR_PATH } = require("./lib/paths"); - -const argv = require("minimist")(process.argv.slice(2)); + , DIST_PATH } = require("./lib/paths"); -const BUILD_DIR_PATH = path.join(__dirname, "../build"); +const argv = minimist(process.argv.slice(2), { + boolean: [ "package" ] + , string: [ "platform" ] + , default: { + platform: os.platform() + , package: false + } +}); + +const BUILD_PATH = path.join(__dirname, "../build"); + // Clean -fs.removeSync(DIST_DIR_PATH); +fs.removeSync(DIST_PATH); // Make directories -fs.ensureDirSync(BUILD_DIR_PATH); -fs.ensureDirSync(DIST_DIR_PATH, { recursive: true }); +fs.ensureDirSync(BUILD_PATH); +fs.ensureDirSync(DIST_PATH, { recursive: true }); async function build () { - const platform = argv.platform || os.platform(); - // Run Babel - spawnSync(`babel src -d ${BUILD_DIR_PATH} --copy-files ` + spawnSync(`babel src -d ${BUILD_PATH} --copy-files ` , { shell: true }); // Add either installed path or dist path to app manifest const manifest = JSON.parse(fs.readFileSync(manifestName, "utf8")); manifest.path = argv.package - ? path.join(executablePath[platform], executableName[platform]) - : path.join(DIST_DIR_PATH, executableName[platform]); + ? path.join(executablePath[argv.platform], executableName[argv.platform]) + : path.join(DIST_PATH, executableName[argv.platform]); // Write manifest - fs.writeFileSync(path.join(BUILD_DIR_PATH, manifestName) + fs.writeFileSync(path.join(BUILD_PATH, manifestName) , JSON.stringify(manifest, null, 4)); // File permissions - for (const file of fs.readdirSync(BUILD_DIR_PATH)) { - fs.chmodSync(path.resolve(BUILD_DIR_PATH, file), 0o755); + for (const file of fs.readdirSync(BUILD_PATH)) { + fs.chmodSync(path.resolve(BUILD_PATH, file), 0o755); } @@ -59,35 +66,35 @@ async function build () { } }; - fs.writeFileSync(path.join(BUILD_DIR_PATH, "package.json") + fs.writeFileSync(path.join(BUILD_PATH, "package.json") , JSON.stringify(pkgInfo)) // Package executable await pkgExec([ - BUILD_DIR_PATH - , "--target", pkgPlatform[platform] - , "--output", path.join(BUILD_DIR_PATH, executableName[platform]) + BUILD_PATH + , "--target", pkgPlatform[argv.platform] + , "--output", path.join(BUILD_PATH, executableName[argv.platform]) ]); if (argv.package) { - const installerName = await buildInstaller(platform); + const installerName = await buildInstaller(argv.platform); // Move installer to dist - fs.moveSync(path.join(BUILD_DIR_PATH, installerName) - , path.join(DIST_DIR_PATH, installerName) + fs.moveSync(path.join(BUILD_PATH, installerName) + , path.join(DIST_PATH, installerName) , { overwrite: true }); } else { // Move binary / app manifest - fs.moveSync(path.join(BUILD_DIR_PATH, manifestName) - , path.join(DIST_DIR_PATH, manifestName) + fs.moveSync(path.join(BUILD_PATH, manifestName) + , path.join(DIST_PATH, manifestName) , { overwrite: true }); - fs.moveSync(path.join(BUILD_DIR_PATH, executableName[platform]) - , path.join(DIST_DIR_PATH, executableName[platform]) + fs.moveSync(path.join(BUILD_PATH, executableName[argv.platform]) + , path.join(DIST_PATH, executableName[argv.platform]) , { overwrite: true }); } // Remove build directory - fs.removeSync(BUILD_DIR_PATH); + fs.removeSync(BUILD_PATH); } async function buildInstaller (platform) { @@ -95,13 +102,13 @@ async function buildInstaller (platform) { case "darwin": { const installerName = "fx_cast_bridge.pkg"; const componentName = "fx_cast_bridge_default.pkg"; - const installerPath = path.join(BUILD_DIR_PATH, installerName); - const componentPath = path.join(BUILD_DIR_PATH, componentName); + const installerPath = path.join(BUILD_PATH, installerName); + const componentPath = path.join(BUILD_PATH, componentName); const packagingDir = path.join(__dirname, "../packaging/macos/"); // Create pkgbuild root - const rootPath = path.join(BUILD_DIR_PATH, "root"); + const rootPath = path.join(BUILD_PATH, "root"); const rootExecutablePath = path.join(rootPath , executablePath[platform]); const rootManifestPath = path.join(rootPath @@ -112,9 +119,9 @@ async function buildInstaller (platform) { fs.ensureDirSync(rootManifestPath, { recursive: true }); // Move files to root - fs.moveSync(path.join(BUILD_DIR_PATH, executableName[platform]) + fs.moveSync(path.join(BUILD_PATH, executableName[platform]) , path.join(rootExecutablePath, executableName[platform])); - fs.moveSync(path.join(BUILD_DIR_PATH, manifestName) + fs.moveSync(path.join(BUILD_PATH, manifestName) , path.join(rootManifestPath, manifestName)); // Build component package @@ -132,7 +139,7 @@ async function buildInstaller (platform) { // Build installer package spawnSync( `productbuild --distribution ${distFilePath} ` - + `--package-path ${BUILD_DIR_PATH} ` + + `--package-path ${BUILD_PATH} ` + `${installerPath}` , { shell: true }); diff --git a/app/bin/install-manifest.js b/app/bin/install-manifest.js index 22676d0..4caaebc 100644 --- a/app/bin/install-manifest.js +++ b/app/bin/install-manifest.js @@ -1,15 +1,22 @@ const fs = require("fs-extra"); const os = require("os"); const path = require("path"); +const minimist = require("minimist"); const { manifestName , manifestPath - , DIST_DIR_PATH } = require("./lib/paths"); - -const argv = require("minimist")(process.argv.slice(2)); + , DIST_PATH } = require("./lib/paths"); -const CURRENT_MANIFEST_PATH = path.join(DIST_DIR_PATH, manifestName); +const argv = minimist(process.argv.slice(2), { + boolean: [ "remove" ] + , default: { + remove: false + } +}); + + +const CURRENT_MANIFEST_PATH = path.join(DIST_PATH, manifestName); const WIN_REGISTRY_KEY = "fx_cast_bridge"; diff --git a/app/bin/lib/paths.js b/app/bin/lib/paths.js index b45ab38..3075fc9 100644 --- a/app/bin/lib/paths.js +++ b/app/bin/lib/paths.js @@ -1,6 +1,6 @@ const path = require("path"); -exports.DIST_DIR_PATH = path.join(__dirname, "../../../dist/app"); +exports.DIST_PATH = path.join(__dirname, "../../../dist/app"); exports.executableName = { win32: "bridge.exe" diff --git a/ext/build.js b/ext/build.js index c1b49c8..67a92ff 100644 --- a/ext/build.js +++ b/ext/build.js @@ -1,22 +1,29 @@ const fs = require("fs-extra"); const path = require("path"); const { spawn } = require("child_process"); -const argv = require("minimist")(process.argv.slice(2)); +const minimist = require("minimist"); -const extensionName = "fx_cast"; -const extensionId = "fx_cast@matt.tf"; -const extensionVersion = "0.0.1"; - +const argv = minimist(process.argv.slice(2), { + boolean: [ "package", "watch" ] + , string: [ "mirroringAppId", "mode" ] + , default: { + package: false + , watch: false + , mirroringAppId: "19A6F4AE" + , mode: "development" + } +}); if (argv.package) { argv.mode = "production"; argv.watch = false; } -// Default argument values -const { mirroringAppId = "19A6F4AE" - , mode = "development" } = argv; + +const extensionName = "fx_cast"; +const extensionId = "fx_cast@matt.tf"; +const extensionVersion = "0.0.1"; // Clean fs.removeSync(path.join(__dirname, "../dist/ext/")); @@ -25,12 +32,13 @@ const child = spawn( `webpack --env.extensionName=${extensionName} ` + `--env.extensionId=${extensionId} ` + `--env.extensionVersion=${extensionVersion} ` - + `--env.mirroringAppId=${mirroringAppId} ` - + `--mode=${mode} ` - + `${argv.watch ? "--watch" : ""} ` - + `&& web-ext build --overwrite-dest ` - + `--source-dir ../dist/ext/unpacked ` - + `--artifacts-dir ../dist/ext ` + + `--env.mirroringAppId=${argv.mirroringAppId} ` + + `--mode=${argv.mode} ` + + `${argv.watch ? "--watch" : ""} && ` + + + `web-ext build --overwrite-dest ` + + `--source-dir ../dist/ext/unpacked ` + + `--artifacts-dir ../dist/ext ` , { shell: true } );