summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorDavid Sherret <dsherret@users.noreply.github.com>2021-08-30 13:35:48 -0400
committerGitHub <noreply@github.com>2021-08-30 13:35:48 -0400
commitca75752e5a9499a0a997809f02b18c2ba1ecd58d (patch)
tree9a1204e8f1445ad9f829d026a1e859c3224b6677 /tools
parent0aa6b1e79f2f4cabdb857daabc06791dfef3140b (diff)
chore: release scripts should update Cargo.lock file when bumping versions (#11879)
Diffstat (limited to 'tools')
-rw-r--r--tools/release/01_bump_dependency_crate_versions.ts2
-rw-r--r--tools/release/03_bump_cli_version.ts1
-rw-r--r--tools/release/helpers/cargo.ts30
-rw-r--r--tools/release/helpers/deno_workspace.ts35
4 files changed, 54 insertions, 14 deletions
diff --git a/tools/release/01_bump_dependency_crate_versions.ts b/tools/release/01_bump_dependency_crate_versions.ts
index 3bfe53d77..b5ee6968d 100644
--- a/tools/release/01_bump_dependency_crate_versions.ts
+++ b/tools/release/01_bump_dependency_crate_versions.ts
@@ -7,3 +7,5 @@ const workspace = await DenoWorkspace.load();
for (const crate of workspace.getDependencyCrates()) {
await crate.increment("minor");
}
+
+await workspace.updateLockFile();
diff --git a/tools/release/03_bump_cli_version.ts b/tools/release/03_bump_cli_version.ts
index 5ecf3bf6e..d652f933d 100644
--- a/tools/release/03_bump_cli_version.ts
+++ b/tools/release/03_bump_cli_version.ts
@@ -13,6 +13,7 @@ const originalVersion = cliCrate.version;
// increment the version
await cliCrate.increment(getVersionIncrement());
+await workspace.updateLockFile();
// output the Releases.md markdown text
console.log(
diff --git a/tools/release/helpers/cargo.ts b/tools/release/helpers/cargo.ts
index 619d7a0f7..2f750779c 100644
--- a/tools/release/helpers/cargo.ts
+++ b/tools/release/helpers/cargo.ts
@@ -33,10 +33,34 @@ export async function getMetadata(directory: string) {
return JSON.parse(result!) as CargoMetadata;
}
-export async function publishCrate(directory: string) {
+export function publishCrate(directory: string) {
+ return runCargoSubCommand({
+ directory,
+ args: ["publish"],
+ });
+}
+
+export function build(directory: string) {
+ return runCargoSubCommand({
+ directory,
+ args: ["build", "-vv"],
+ });
+}
+
+export function check(directory: string) {
+ return runCargoSubCommand({
+ directory,
+ args: ["check"],
+ });
+}
+
+async function runCargoSubCommand(params: {
+ args: string[];
+ directory: string;
+}) {
const p = Deno.run({
- cwd: directory,
- cmd: ["cargo", "publish"],
+ cwd: params.directory,
+ cmd: ["cargo", ...params.args],
stderr: "inherit",
stdout: "inherit",
});
diff --git a/tools/release/helpers/deno_workspace.ts b/tools/release/helpers/deno_workspace.ts
index f964d24b3..169394af9 100644
--- a/tools/release/helpers/deno_workspace.ts
+++ b/tools/release/helpers/deno_workspace.ts
@@ -2,12 +2,7 @@
import * as path from "https://deno.land/std@0.105.0/path/mod.ts";
import * as semver from "https://deno.land/x/semver@v1.4.0/mod.ts";
-import {
- CargoMetadata,
- CargoPackageMetadata,
- getMetadata,
- publishCrate,
-} from "./cargo.ts";
+import * as cargo from "./cargo.ts";
import { getCratesIoMetadata } from "./crates_io.ts";
import { withRetries } from "./helpers.ts";
@@ -21,10 +16,12 @@ export class DenoWorkspace {
}
static async load(): Promise<DenoWorkspace> {
- return new DenoWorkspace(await getMetadata(DenoWorkspace.rootDirPath));
+ return new DenoWorkspace(
+ await cargo.getMetadata(DenoWorkspace.rootDirPath),
+ );
}
- private constructor(metadata: CargoMetadata) {
+ private constructor(metadata: cargo.CargoMetadata) {
const crates = [];
for (const memberId of metadata.workspace_members) {
const pkg = metadata.packages.find((pkg) => pkg.id === memberId);
@@ -82,14 +79,22 @@ export class DenoWorkspace {
}
return crate;
}
+
+ build() {
+ return cargo.build(DenoWorkspace.rootDirPath);
+ }
+
+ updateLockFile() {
+ return cargo.check(DenoWorkspace.rootDirPath);
+ }
}
export class DenoWorkspaceCrate {
#workspace: DenoWorkspace;
- #pkg: CargoPackageMetadata;
+ #pkg: cargo.CargoPackageMetadata;
#isUpdatingManifest = false;
- constructor(workspace: DenoWorkspace, pkg: CargoPackageMetadata) {
+ constructor(workspace: DenoWorkspace, pkg: cargo.CargoPackageMetadata) {
this.#workspace = workspace;
this.#pkg = pkg;
}
@@ -141,7 +146,7 @@ export class DenoWorkspaceCrate {
// times before failing hard.
return await withRetries({
action: async () => {
- await publishCrate(this.directoryPath);
+ await cargo.publishCrate(this.directoryPath);
return true;
},
retryCount: 3,
@@ -149,6 +154,14 @@ export class DenoWorkspaceCrate {
});
}
+ build() {
+ return cargo.build(this.directoryPath);
+ }
+
+ updateLockFile() {
+ return cargo.check(this.directoryPath);
+ }
+
increment(part: "major" | "minor" | "patch") {
const newVersion = semver.parse(this.version)!.inc(part).toString();
return this.setVersion(newVersion);