summaryrefslogtreecommitdiff
path: root/tools/release/helpers/cargo.ts
diff options
context:
space:
mode:
authorDavid Sherret <dsherret@users.noreply.github.com>2021-08-25 09:02:22 -0400
committerGitHub <noreply@github.com>2021-08-25 09:02:22 -0400
commitdce70d32a47801025b3b67a97ec9ebed90dfc8a2 (patch)
treef08176bdad18f931956f24cd7d3b92ba313c4493 /tools/release/helpers/cargo.ts
parentdccf4cbe36d66140f9e35a6ee755c3c440d745f9 (diff)
chore: add scripts for helping with a release (#11832)
Diffstat (limited to 'tools/release/helpers/cargo.ts')
-rw-r--r--tools/release/helpers/cargo.ts48
1 files changed, 48 insertions, 0 deletions
diff --git a/tools/release/helpers/cargo.ts b/tools/release/helpers/cargo.ts
new file mode 100644
index 000000000..619d7a0f7
--- /dev/null
+++ b/tools/release/helpers/cargo.ts
@@ -0,0 +1,48 @@
+// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license.
+
+import { runCommand } from "./helpers.ts";
+
+export interface CargoMetadata {
+ packages: CargoPackageMetadata[];
+ /** Identifiers in the `packages` array of the workspace members. */
+ "workspace_members": string[];
+ /** The absolute workspace root directory path. */
+ "workspace_root": string;
+}
+
+export interface CargoPackageMetadata {
+ id: string;
+ name: string;
+ version: string;
+ dependencies: CargoDependencyMetadata[];
+ /** Path to Cargo.toml */
+ "manifest_path": string;
+}
+
+export interface CargoDependencyMetadata {
+ name: string;
+ /** Version requrement (ex. ^0.1.0) */
+ req: string;
+}
+
+export async function getMetadata(directory: string) {
+ const result = await runCommand({
+ cwd: directory,
+ cmd: ["cargo", "metadata", "--format-version", "1"],
+ });
+ return JSON.parse(result!) as CargoMetadata;
+}
+
+export async function publishCrate(directory: string) {
+ const p = Deno.run({
+ cwd: directory,
+ cmd: ["cargo", "publish"],
+ stderr: "inherit",
+ stdout: "inherit",
+ });
+
+ const status = await p.status();
+ if (!status.success) {
+ throw new Error("Failed");
+ }
+}