diff options
Diffstat (limited to 'tools/release/helpers')
-rw-r--r-- | tools/release/helpers/cargo.ts | 30 | ||||
-rw-r--r-- | tools/release/helpers/deno_workspace.ts | 35 |
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); |