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.
63 lines
1.6 KiB
63 lines
1.6 KiB
6 years ago
|
#!/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(".");
|
||
|
}
|
||
|
}
|