deno.land / x / deno@v1.28.2 / tools / release / 01_bump_crate_versions.ts

01_bump_crate_versions.ts
نووسراو ببینە
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#!/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 { $, GitLogOutput, semver } from "./deps.ts";
const workspace = await DenoWorkspace.load();const repo = workspace.repo;const cliCrate = workspace.getCliCrate();const originalCliVersion = cliCrate.version;
// increment the cli versionif (Deno.args.some((a) => a === "--patch")) { await cliCrate.increment("patch");} else if (Deno.args.some((a) => a === "--minor")) { await cliCrate.increment("minor");} else if (Deno.args.some((a) => a === "--major")) { await cliCrate.increment("major");} else { await cliCrate.promptAndIncrement();}
// increment the dependency crate versionsfor (const crate of workspace.getCliDependencyCrates()) { await crate.increment("minor");}
// update the std version used in the code$.logStep("Updating std version...");await updateStdVersion();
// update the lock fileawait workspace.getCliCrate().cargoUpdate("--workspace");
// try to update the Releases.md markdown texttry { $.logStep("Updating Releases.md..."); await updateReleasesMd();} catch (err) { $.log(err); $.logError( "Error Updating Releases.md failed. Please manually run " + "`git log --oneline VERSION_FROM..VERSION_TO` and " + "use the output to update Releases.md", );}
async function updateReleasesMd() { const gitLog = await getGitLog(); const releasesMdFile = workspace.getReleasesMdFile(); releasesMdFile.updateWithGitLog({ version: cliCrate.version, gitLog, });
await workspace.runFormatter();}
async function getGitLog() { const originalVersion = semver.parse(originalCliVersion)!; const originalVersionTag = `v${originalCliVersion}`; // fetch the upstream tags await repo.gitFetchTags("upstream");
// make the repo unshallow so we can fetch the latest tag if (await repo.gitIsShallow()) { await repo.gitFetchUnshallow("origin"); }
// this means we're on the patch release const latestTag = await repo.gitLatestTag(); if (latestTag === originalVersionTag) { return await repo.getGitLogFromTags( "upstream", originalVersionTag, undefined, ); } else { // otherwise, get the history of the last release await repo.gitFetchHistory("upstream"); const lastMinorHistory = await repo.getGitLogFromTags( "upstream", `v${originalVersion.major}.${originalVersion.minor}.0`, originalVersionTag, ); const currentHistory = await repo.getGitLogFromTags( "upstream", latestTag, undefined, ); const lastMinorMessages = new Set( lastMinorHistory.lines.map((r) => r.message), ); return new GitLogOutput( currentHistory.lines.filter((l) => !lastMinorMessages.has(l.message)), ); }}
async function updateStdVersion() { const compatFilePath = $.path.join(cliCrate.folderPath, "deno_std.rs"); const text = await Deno.readTextFile(compatFilePath); const versionRe = /std@([0-9]+\.[0-9]+\.[0-9]+)/; const stdVersionText = versionRe.exec(text)?.[1]; if (stdVersionText == null) { throw new Error(`Could not find the deno_std version in ${compatFilePath}`); } const stdVersion = semver.parse(stdVersionText)!; const newStdVersion = stdVersion.inc("minor"); await Deno.writeTextFile( compatFilePath, text.replace(versionRe, `std@${newStdVersion}`), );}
deno

Version Info

Tagged at
a year ago