diff --git a/tools/update-version.js b/tools/update-version.js new file mode 100755 index 0000000000000000000000000000000000000000..e948a14d151686547badc60e0cb22fa22020b4e8 --- /dev/null +++ b/tools/update-version.js @@ -0,0 +1,70 @@ +#!/usr/bin/env node + +// from https://gitlab.com/staltz/manyverse/blob/master/tools/update-version.js + +/* Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ */ + +const ReactNativeVersion = require('react-native-version') +const readline = require('readline') +const leftPad = require('left-pad') +const path = require('path') +const fs = require('fs') + +const currentVersion = JSON.parse(fs.readFileSync('./package.json')).version + +const rl = readline.createInterface({ + input: process.stdin, + output: process.stdout, +}) + +function createTodaysVersion(attempt) { + const today = new Date() + const yy = today.getFullYear() - 2000 // So it's two digits + const mm = leftPad(today.getMonth() + 1, 2, '0') + const d = today.getDate() + if (attempt === 0) { + return `0.${yy}${mm}.${d}-beta` + } else { + const letter = String.fromCharCode(97 + attempt) // 0=a, 1=b, 2=c, ... + return `0.${yy}${mm}.${d}-beta.${letter}` + } +} + +let nextVersion +for (let i = 0 /* letter a */; i <= 25 /* letter z */; i++) { + nextVersion = createTodaysVersion(i) + if (nextVersion !== currentVersion) break +} +if (nextVersion === currentVersion) { + console.error('I dont know what else to generate beyong ' + nextVersion) + process.exit(1) +} + +rl.question('Next version will be `' + nextVersion + '`, okay? y/n ', yn => { + if (yn !== 'y' && yn !== 'Y') { + console.log('Release cancelled.\n') + process.exit(1) + return + } + + const pkgJSON = JSON.parse(fs.readFileSync('./package.json')) + const pkgLockJSON = JSON.parse(fs.readFileSync('./package-lock.json')) + pkgJSON.version = nextVersion + pkgLockJSON.version = nextVersion + fs.writeFileSync('./package.json', JSON.stringify(pkgJSON, null, 2)) + fs.writeFileSync('./package-lock.json', JSON.stringify(pkgLockJSON, null, 2)) + + ReactNativeVersion.version( + { + neverAmend: true, + target: 'android', + }, + path.resolve(__dirname, '../'), + ).catch(err => { + console.error(err) + process.exit(1) + }) + + rl.close() +})