tridactyl/scripts/version.js

91 lines
2.7 KiB
JavaScript
Raw Normal View History

2017-11-12 01:12:57 +00:00
#!/usr/bin/env node
const { exec } = require("child_process")
2017-11-12 01:12:57 +00:00
function bump_version(versionstr, component = 2) {
const versionarr = versionstr.split(".")
2017-11-12 01:12:57 +00:00
versionarr[component] = Number(versionarr[component]) + 1
2017-11-18 03:46:59 +00:00
for (let smaller = component + 1; smaller <= 2; smaller++) {
versionarr[smaller] = 0
}
return versionarr.join(".")
2017-11-12 01:12:57 +00:00
}
async function add_beta(versionstr) {
return new Promise((resolve, err) => {
exec("git rev-list --count HEAD", (execerr, stdout, stderr) => {
2017-11-12 01:12:57 +00:00
if (execerr) err(execerr)
resolve(versionstr + "pre" + stdout.trim())
})
})
}
function make_update_json(versionstr) {
return {
addons: {
"tridactyl.vim.betas@cmcaine.co.uk": {
updates: [
{
version: versionstr,
update_link:
"https://tridactyl.cmcaine.co.uk/betas/tridactyl-" +
versionstr +
"-an+fx.xpi",
},
],
},
},
2018-04-13 12:17:02 +01:00
}
}
2017-11-28 02:52:10 +00:00
function save_manifest(filename, manifest) {
// Save file
const fs = require("fs")
2017-11-28 02:52:10 +00:00
fs.writeFileSync(filename, JSON.stringify(manifest, null, 4))
}
2017-11-12 01:12:57 +00:00
async function main() {
let filename, manifest
switch (process.argv[2]) {
case "bump":
2017-11-12 01:12:57 +00:00
// Load src manifest and bump
filename = "./src/manifest.json"
manifest = require("." + filename)
manifest.version = bump_version(
manifest.version,
Number(process.argv[3]),
)
2017-11-28 02:52:10 +00:00
save_manifest(filename, manifest)
exec(
`git add ${filename} && git commit -m 'release ${
manifest.version
}' && git tag ${manifest.version}`,
)
console.log(
`Make sure you use the release checklist before committing this.`,
)
console.log(`https://github.com/tridactyl/tridactyl/issues/714`)
2017-11-12 01:12:57 +00:00
break
case "beta":
filename = "./build/manifest.json"
manifest = require("." + filename)
2017-11-12 01:12:57 +00:00
manifest.version = await add_beta(manifest.version)
manifest.applications.gecko.update_url =
"https://tridactyl.cmcaine.co.uk/betas/updates.json"
2018-04-13 12:17:02 +01:00
// Make and write updates.json
save_manifest(
"../public_html/betas/updates.json",
make_update_json(manifest.version),
)
2018-04-13 12:17:02 +01:00
// Save manifest.json
2017-11-28 02:52:10 +00:00
save_manifest(filename, manifest)
2017-11-12 01:12:57 +00:00
break
default:
throw "Unknown command!"
}
}
main()