diff options
author | David Sherret <dsherret@users.noreply.github.com> | 2022-03-01 15:40:32 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-03-01 15:40:32 -0500 |
commit | 4be0365fb8251a8614f16e6162f4f43c9885d2a3 (patch) | |
tree | 22a9a476053487c8ac22e53e20aea4bb483fbb97 /tools/release/helpers/helpers.ts | |
parent | 6a030a5396f9c838b4d4523f43ab2d9e2f502e04 (diff) |
chore(tools): use automation scripts from automation repo (#13796)
Diffstat (limited to 'tools/release/helpers/helpers.ts')
-rw-r--r-- | tools/release/helpers/helpers.ts | 104 |
1 files changed, 0 insertions, 104 deletions
diff --git a/tools/release/helpers/helpers.ts b/tools/release/helpers/helpers.ts deleted file mode 100644 index 454a66373..000000000 --- a/tools/release/helpers/helpers.ts +++ /dev/null @@ -1,104 +0,0 @@ -// Copyright 2018-2022 the Deno authors. All rights reserved. MIT license. - -import type { DenoWorkspaceCrate } from "./deno_workspace.ts"; - -export function getCratesPublishOrder(crates: DenoWorkspaceCrate[]) { - const pendingCrates = [...crates]; - const sortedCrates = []; - - while (pendingCrates.length > 0) { - for (let i = pendingCrates.length - 1; i >= 0; i--) { - const crate = pendingCrates[i]; - const hasPendingDependency = crate.getDependencies() - .some((c) => pendingCrates.includes(c)); - if (!hasPendingDependency) { - sortedCrates.push(crate); - pendingCrates.splice(i, 1); - } - } - } - - return sortedCrates; -} - -export function getGitLogFromTag(directory: string, tagName: string) { - return runCommand({ - cwd: directory, - cmd: ["git", "log", "--oneline", `${tagName}..`], - }); -} - -const IGNORED_COMMIT_PREFIX = [ - "build", - "chore", - "ci", - "docs", - "refactor", - "test", -]; - -export function formatGitLogForMarkdown(text: string) { - return text.split(/\r?\n/) - .map((line) => line.replace(/^[a-f0-9]{9} /i, "").trim()) - .filter((l) => { - return !IGNORED_COMMIT_PREFIX.some((prefix) => l.startsWith(prefix)) && - l.length > 0; - }) - .sort() - .map((line) => `- ${line}`) - .join("\n"); -} - -export async function runCommand(params: { - cwd: string; - cmd: string[]; -}) { - const p = Deno.run({ - cwd: params.cwd, - cmd: params.cmd, - stderr: "piped", - stdout: "piped", - }); - - const [status, stdout, stderr] = await Promise.all([ - p.status(), - p.output(), - p.stderrOutput(), - ]); - p.close(); - - if (!status.success) { - throw new Error( - `Error executing ${params.cmd[0]}: ${new TextDecoder().decode(stderr)}`, - ); - } - - return new TextDecoder().decode(stdout); -} - -export async function withRetries<TReturn>(params: { - action: () => Promise<TReturn>; - retryCount: number; - retryDelaySeconds: number; -}) { - for (let i = 0; i < params.retryCount; i++) { - if (i > 0) { - console.log( - `Failed. Trying again in ${params.retryDelaySeconds} seconds...`, - ); - await delay(params.retryDelaySeconds * 1000); - console.log(`Attempt ${i + 1}/${params.retryCount}...`); - } - try { - return await params.action(); - } catch (err) { - console.error(err); - } - } - - throw new Error(`Failed after ${params.retryCount} attempts.`); -} - -function delay(ms: number) { - return new Promise((resolve) => setTimeout(resolve, ms)); -} |