diff options
author | David Sherret <dsherret@users.noreply.github.com> | 2022-08-06 09:45:34 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-08-06 09:45:34 -0400 |
commit | 102595976ff3ec4a5f7e1cd2ca2bbaebf5a67132 (patch) | |
tree | 3ab9a079ec4db71af0c4ff84c65a7ab4e83fb6e1 /tools/release/00_start_release.ts | |
parent | 888b26819eb0b2b3ae2207d3f114feeac2e873dd (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.ts | 49 |
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}`; +} |