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) }