import commandLineArgs from "command-line-args"; import fs from "fs/promises"; import path from "path"; import { fileURLToPath } from "url"; // https://github.com/75lb/command-line-args const optionDefinitions = [ { name: "version", alias: "v", type: String, required: true, }, ]; const cliArgs = commandLineArgs(optionDefinitions); const root = path.join(path.dirname(fileURLToPath(import.meta.url)), "../.."); const appPaths = { root, electronPackage: path.join(root, "./electron/package.json"), constants: path.join(root, "./src/Constants.ts"), sphinxConf: path.join(root, "./doc/source/conf.py"), }; async function main(version) { console.log(`Updating app files to match v${version}`); const [major, minor] = version.split("."); const shortVersion = `${major}.${minor}`; const modifiedElectronPackage = (await fs.readFile(appPaths.electronPackage, "utf8")).replace( /(^\s*"version":\s)"(.*)",$/m, `$1"${version}",`, ); await fs.writeFile(appPaths.electronPackage, modifiedElectronPackage); console.log(`> Modified ${appPaths.electronPackage}`); let modifiedConstants = (await fs.readFile(appPaths.constants, "utf8")).replace( /(^\s*?VersionString:\s)"(.*)",/m, `$1"${version}",`, ); await fs.writeFile(appPaths.constants, modifiedConstants); console.log(`> Modified ${appPaths.constants}`); let modifiedSphinxConfig = (await fs.readFile(appPaths.sphinxConf, "utf8")).replace( /(^version = ')(.*)'$/m, `$1${shortVersion}'`, ); modifiedSphinxConfig = modifiedSphinxConfig.replace(/(^release = ')(.*)'$/m, `$1${version}'`); await fs.writeFile(appPaths.sphinxConf, modifiedSphinxConfig); console.log(`> Modified ${appPaths.sphinxConf}`); } main(cliArgs.version).then(() => console.log("Done"));