summaryrefslogtreecommitdiff
path: root/tools/release/helpers
diff options
context:
space:
mode:
Diffstat (limited to 'tools/release/helpers')
-rw-r--r--tools/release/helpers/cargo.ts30
-rw-r--r--tools/release/helpers/deno_workspace.ts35
2 files changed, 51 insertions, 14 deletions
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);