You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
1.6 KiB
62 lines
1.6 KiB
#!/usr/bin/env node |
|
|
|
const fs = require("fs"); |
|
const cp = require("child_process"); |
|
const ARGUMENTS = process.argv.slice(2); |
|
|
|
const versions = { |
|
patch: "patch", |
|
minor: "minor", |
|
major: "major" |
|
}; |
|
|
|
if (!ARGUMENTS[0]) { |
|
console.log( |
|
[ |
|
"esy version:prepare, prepare a new fnm version", |
|
"", |
|
"Usage:", |
|
"------", |
|
"", |
|
" esy version:prepare patch - to prepare a patch version (X.X.X+1)", |
|
" esy version:prepare minor - to prepare a minor version (X.X+1.0)", |
|
" esy version:prepare major - to prepare a major version (X+1.0.0)" |
|
].join("\n") |
|
); |
|
process.exit(1); |
|
} |
|
const versionType = versions[ARGUMENTS[0].toLowerCase()]; |
|
if (!versionType) { |
|
throw new Error("Version (argument 0) must be one of major/minor/patch."); |
|
} |
|
|
|
const pkgJson = JSON.parse(fs.readFileSync("./package.json", "utf8")); |
|
pkgJson.version = changeVersion(versionType, pkgJson.version); |
|
fs.writeFileSync("./package.json", JSON.stringify(pkgJson, null, 2)); |
|
|
|
exec("git fetch origin"); |
|
exec("esy update-fnm-package"); |
|
exec("esy verify-fnm-package"); |
|
exec("esy build"); |
|
exec("./docs/record_screen.sh"); |
|
exec(`esy changelog`, { NEXT_VERSION: `v${pkgJson.version}` }); |
|
|
|
function exec(command, env) { |
|
console.log(`$ ${command}`); |
|
return cp.execSync(command, { |
|
stdio: "inherit", |
|
env: { ...process.env, ...env } |
|
}); |
|
} |
|
|
|
function changeVersion(type, version) { |
|
const [major, minor, patch] = version.split(".").map(x => parseFloat(x, 10)); |
|
switch (type) { |
|
case "patch": |
|
return [major, minor, patch + 1].join("."); |
|
case "minor": |
|
return [major, minor + 1, 0].join("."); |
|
case "major": |
|
return [major + 1, 0, 0].join("."); |
|
} |
|
}
|
|
|