const axios = require("axios") const fs = require("fs") const { spawnSync } = require("child_process") const runCommand = (command, args) => spawnSync(command, args) .stdout.toString() .replace(/\n/g, "") const FAIL_ON_ERROR = false const PW_BUILD_DATA_DIR = "./.postwoman" const IS_DEV_MODE = process.argv.includes("--dev") try { ;(async () => { // Create the build data directory if it does not exist. if (!fs.existsSync(PW_BUILD_DATA_DIR)) { fs.mkdirSync(PW_BUILD_DATA_DIR) } let version = {} // Get the current version name as the tag from Git. version.name = process.env.TRAVIS_TAG || runCommand("git", ["tag --sort=committerdate | tail -1"]) // FALLBACK: If version.name was unset, let's grab it from GitHub. if (!version.name) { version.name = ( await axios .get("https://api.github.com/repos/liyasthomas/postwoman/releases") // If we can't get it from GitHub, we'll resort to getting it from package.json .catch(ex => ({ data: [ { tag_name: require("./package.json").version, }, ], })) ).data[0]["tag_name"] } // Get the current version hash as the short hash from Git. version.hash = runCommand("git", ["rev-parse", "--short", "HEAD"]) // Get the 'variant' name as the branch, if it's not master. version.variant = process.env.TRAVIS_BRANCH || runCommand("git", ["branch"]) .split("* ")[1] .split(" ")[0] + (IS_DEV_MODE ? " - DEV MODE" : "") if (["", "master"].includes(version.variant)) { delete version.variant } // Write version data into a file fs.writeFileSync(`${PW_BUILD_DATA_DIR}/version.json`, JSON.stringify(version)) })() } catch (ex) { console.error(ex) process.exit(FAIL_ON_ERROR ? 1 : 0) }