summaryrefslogtreecommitdiff
path: root/tools/release/00_start_release.ts
diff options
context:
space:
mode:
authorDavid Sherret <dsherret@users.noreply.github.com>2022-08-06 09:45:34 -0400
committerGitHub <noreply@github.com>2022-08-06 09:45:34 -0400
commit102595976ff3ec4a5f7e1cd2ca2bbaebf5a67132 (patch)
tree3ab9a079ec4db71af0c4ff84c65a7ab4e83fb6e1 /tools/release/00_start_release.ts
parent888b26819eb0b2b3ae2207d3f114feeac2e873dd (diff)
chore: use gist for release instruction checklist (#15414)
Diffstat (limited to 'tools/release/00_start_release.ts')
-rw-r--r--tools/release/00_start_release.ts49
1 files changed, 49 insertions, 0 deletions
diff --git a/tools/release/00_start_release.ts b/tools/release/00_start_release.ts
new file mode 100644
index 000000000..6c0c555a0
--- /dev/null
+++ b/tools/release/00_start_release.ts
@@ -0,0 +1,49 @@
+#!/usr/bin/env -S deno run -A --lock=tools/deno.lock.json
+// Copyright 2018-2022 the Deno authors. All rights reserved. MIT license.
+import { DenoWorkspace } from "./deno_workspace.ts";
+import { $, createOctoKit, semver } from "./deps.ts";
+
+$.logStep("Loading cli crate...");
+const workspace = await DenoWorkspace.load();
+const cliCrate = workspace.getCliCrate();
+const nextVersion = getNextVersion(semver.parse(cliCrate.version)!);
+
+$.logStep("Creating gist with instructions...");
+const octoKit = createOctoKit();
+const result = await octoKit.request("POST /gists", {
+ description: `Deno CLI v${nextVersion.toString()} release checklist`,
+ public: false,
+ files: {
+ "release_instructions.md": {
+ content: buildDenoReleaseInstructionsDoc(),
+ },
+ },
+});
+
+$.log("==============================================");
+$.log("Created gist with instructions!");
+$.log("");
+$.log(` ${result.url}`);
+$.log("");
+$.log("Please fork the gist and follow the checklist.");
+$.log("==============================================");
+
+function getNextVersion(originalVersion: semver.SemVer) {
+ if (Deno.args.some((a) => a === "--patch")) {
+ return originalVersion.inc("patch");
+ } else if (Deno.args.some((a) => a === "--minor")) {
+ return originalVersion.inc("minor");
+ } else if (Deno.args.some((a) => a === "--major")) {
+ return originalVersion.inc("major");
+ } else {
+ throw new Error("Missing argument");
+ }
+}
+
+function buildDenoReleaseInstructionsDoc() {
+ const currentDirPath = $.path.dirname($.path.fromFileUrl(import.meta.url));
+ const templateText = Deno.readTextFileSync(
+ $.path.join(currentDirPath, "release_doc_template.md"),
+ );
+ return `# Deno CLI ${nextVersion.toString()} Release Checklist\n\n${templateText}`;
+}