1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-12-11 10:07:54 -05:00
denoland-deno/tools/release/03_bump_cli_version.ts
2022-01-20 16:10:16 +09:00

56 lines
1.6 KiB
TypeScript
Executable file

#!/usr/bin/env -S deno run --allow-read --allow-write --allow-run=cargo,git
// Copyright 2018-2022 the Deno authors. All rights reserved. MIT license.
import {
DenoWorkspace,
formatGitLogForMarkdown,
getGitLogFromTag,
} from "./helpers/mod.ts";
const workspace = await DenoWorkspace.load();
const cliCrate = workspace.getCliCrate();
const originalVersion = cliCrate.version;
// increment the version
await cliCrate.increment(getVersionIncrement());
await workspace.updateLockFile();
// output the Releases.md markdown text
console.log(
"You may use the following as a template for updating Releases.md:\n",
);
console.log(await getReleasesMdText());
function getVersionIncrement() {
if (confirm("Increment patch?")) {
return "patch";
} else if (confirm("Increment minor?")) {
return "minor";
} else if (confirm("Increment major?")) {
return "major";
} else {
throw new Error("No decision.");
}
}
async function getReleasesMdText() {
const gitLogOutput = await getGitLogFromTag(
DenoWorkspace.rootDirPath,
`v${originalVersion}`,
);
const formattedGitLog = formatGitLogForMarkdown(gitLogOutput);
const formattedDate = getFormattedDate(new Date());
return `### ${cliCrate.version} / ${formattedDate}\n\n` +
`${formattedGitLog}`;
function getFormattedDate(date: Date) {
const formattedMonth = padTwoDigit(date.getMonth() + 1);
const formattedDay = padTwoDigit(date.getDate());
return `${date.getFullYear()}.${formattedMonth}.${formattedDay}`;
function padTwoDigit(val: number) {
return val.toString().padStart(2, "0");
}
}
}