const fs = require("fs-extra"); const os = require("os"); const path = require("path"); const minimist = require("minimist"); const paths = require("./lib/paths"); const argv = minimist(process.argv.slice(2), { boolean: ["remove"], default: { remove: false } }); const CURRENT_MANIFEST_PATH = path.join(paths.DIST_PATH, paths.MANIFEST_NAME); if (!fs.existsSync(CURRENT_MANIFEST_PATH) && !argv.remove) { console.error("No manifest in dist/app/ to install."); process.exit(1); } const platform = os.platform(); const arch = os.arch(); switch (platform) { case "darwin": case "linux": { // Manifest location within home directory const destination = path.join( os.homedir(), platform === "linux" ? ".mozilla/native-messaging-hosts/" : paths.getManifestPath(platform, arch) ); if (argv.remove) { fs.remove(path.join(destination, paths.MANIFEST_NAME)); break; } // Install manifest fs.ensureDirSync(destination); fs.copyFileSync( CURRENT_MANIFEST_PATH, path.join(destination, paths.MANIFEST_NAME) ); break; } case "win32": { const { Registry } = require("rage-edit"); const REGISTRY_PATH = `HKCU\\SOFTWARE\\Mozilla\\NativeMessagingHosts\\${paths.REGISTRY_KEY}`; if (argv.remove) { Registry.delete(REGISTRY_PATH); break; } Registry.set(REGISTRY_PATH, "", CURRENT_MANIFEST_PATH, "REG_SZ"); break; } default: { console.error("Sorry, this installer does not yet support your OS"); process.exit(1); } }