@dbx-tools/cli 0.6.223 → 0.6.225

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -40,6 +40,9 @@ and the operating system, then installs it as
40
40
  `~/.dbx-tools/bin/<binary>_<major>_<minor>_<patch>`. Later invocations reuse
41
41
  that versioned executable. Root help never downloads a binary, and all command
42
42
  arguments are forwarded directly to the Rust CLI.
43
+ The registry and installer live in
44
+ [`@dbx-tools/rust-binary`](../../node/rust-binary) so server packages can use a
45
+ native release binary without installing this CLI's command graph.
43
46
 
44
47
  ## Bootstrap A Workspace
45
48
 
@@ -138,6 +141,7 @@ should run the `dbx` bin.
138
141
  - `bootstrap` - empty-workspace bootstrap, toolchain seeding, and the initial synth.
139
142
  - `root` - workspace-root detection and bootstrap/install checks.
140
143
  - `bun` - bun discovery, workspace install, registry forcing, and projen delegation.
144
+ - `rust-binary` - compatibility re-export of `@dbx-tools/rust-binary`.
141
145
 
142
146
  The reusable project classes and generators live in
143
147
  [`@dbx-tools/projen`](../../../../projen).
package/index.ts CHANGED
@@ -3,7 +3,7 @@
3
3
  // Hand edits are overwritten on the next watch; this file is read-only.
4
4
 
5
5
  export const PACKAGE_IDENTIFIER = "@dbx-tools/cli";
6
- export const PACKAGE_VERSION = "0.6.223";
6
+ export const PACKAGE_VERSION = "0.6.225";
7
7
  export * as bootstrap from "./src/bootstrap.ts";
8
8
  export * as bun from "./src/bun.ts";
9
9
  export * as cli from "./src/cli.ts";
@@ -11,4 +11,3 @@ export * as root from "./src/root.ts";
11
11
  export * as rustBinary from "./src/rust-binary.ts";
12
12
  export { resolveBunArgv } from "./src/bun.ts";
13
13
  export { workspaceRoot } from "./src/root.ts";
14
- export type { RustReleaseBinaryAsset, RustReleaseBinaryCommand, RustReleaseBinaryOptions } from "./src/rust-binary.ts";
package/lib/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  export declare const PACKAGE_IDENTIFIER = "@dbx-tools/cli";
2
- export declare const PACKAGE_VERSION = "0.6.223";
2
+ export declare const PACKAGE_VERSION = "0.6.225";
3
3
  export * as bootstrap from "./src/bootstrap.ts";
4
4
  export * as bun from "./src/bun.ts";
5
5
  export * as cli from "./src/cli.ts";
@@ -7,4 +7,3 @@ export * as root from "./src/root.ts";
7
7
  export * as rustBinary from "./src/rust-binary.ts";
8
8
  export { resolveBunArgv } from "./src/bun.ts";
9
9
  export { workspaceRoot } from "./src/root.ts";
10
- export type { RustReleaseBinaryAsset, RustReleaseBinaryCommand, RustReleaseBinaryOptions } from "./src/rust-binary.ts";
package/lib/index.js CHANGED
@@ -2,7 +2,7 @@
2
2
  // Regenerated from the exporting modules in ./src.
3
3
  // Hand edits are overwritten on the next watch; this file is read-only.
4
4
  export const PACKAGE_IDENTIFIER = "@dbx-tools/cli";
5
- export const PACKAGE_VERSION = "0.6.223";
5
+ export const PACKAGE_VERSION = "0.6.225";
6
6
  export * as bootstrap from "./src/bootstrap.js";
7
7
  export * as bun from "./src/bun.js";
8
8
  export * as cli from "./src/cli.js";
@@ -10,4 +10,4 @@ export * as root from "./src/root.js";
10
10
  export * as rustBinary from "./src/rust-binary.js";
11
11
  export { resolveBunArgv } from "./src/bun.js";
12
12
  export { workspaceRoot } from "./src/root.js";
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxnQkFBZ0IsQ0FBQztBQUNuRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxTQUFTLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxLQUFLLEdBQUcsTUFBTSxjQUFjLENBQUM7QUFDcEMsT0FBTyxLQUFLLEdBQUcsTUFBTSxjQUFjLENBQUM7QUFDcEMsT0FBTyxLQUFLLElBQUksTUFBTSxlQUFlLENBQUM7QUFDdEMsT0FBTyxLQUFLLFVBQVUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzlDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBHRU5FUkFURUQgYnkgcHJvamVuIHdhdGNoIC0gRE8gTk9UIEVESVQuXG4vLyBSZWdlbmVyYXRlZCBmcm9tIHRoZSBleHBvcnRpbmcgbW9kdWxlcyBpbiAuL3NyYy5cbi8vIEhhbmQgZWRpdHMgYXJlIG92ZXJ3cml0dGVuIG9uIHRoZSBuZXh0IHdhdGNoOyB0aGlzIGZpbGUgaXMgcmVhZC1vbmx5LlxuXG5leHBvcnQgY29uc3QgUEFDS0FHRV9JREVOVElGSUVSID0gXCJAZGJ4LXRvb2xzL2NsaVwiO1xuZXhwb3J0IGNvbnN0IFBBQ0tBR0VfVkVSU0lPTiA9IFwiMC42LjIyM1wiO1xuZXhwb3J0ICogYXMgYm9vdHN0cmFwIGZyb20gXCIuL3NyYy9ib290c3RyYXAudHNcIjtcbmV4cG9ydCAqIGFzIGJ1biBmcm9tIFwiLi9zcmMvYnVuLnRzXCI7XG5leHBvcnQgKiBhcyBjbGkgZnJvbSBcIi4vc3JjL2NsaS50c1wiO1xuZXhwb3J0ICogYXMgcm9vdCBmcm9tIFwiLi9zcmMvcm9vdC50c1wiO1xuZXhwb3J0ICogYXMgcnVzdEJpbmFyeSBmcm9tIFwiLi9zcmMvcnVzdC1iaW5hcnkudHNcIjtcbmV4cG9ydCB7IHJlc29sdmVCdW5Bcmd2IH0gZnJvbSBcIi4vc3JjL2J1bi50c1wiO1xuZXhwb3J0IHsgd29ya3NwYWNlUm9vdCB9IGZyb20gXCIuL3NyYy9yb290LnRzXCI7XG5leHBvcnQgdHlwZSB7IFJ1c3RSZWxlYXNlQmluYXJ5QXNzZXQsIFJ1c3RSZWxlYXNlQmluYXJ5Q29tbWFuZCwgUnVzdFJlbGVhc2VCaW5hcnlPcHRpb25zIH0gZnJvbSBcIi4vc3JjL3J1c3QtYmluYXJ5LnRzXCI7XG4iXX0=
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxnQkFBZ0IsQ0FBQztBQUNuRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxTQUFTLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxLQUFLLEdBQUcsTUFBTSxjQUFjLENBQUM7QUFDcEMsT0FBTyxLQUFLLEdBQUcsTUFBTSxjQUFjLENBQUM7QUFDcEMsT0FBTyxLQUFLLElBQUksTUFBTSxlQUFlLENBQUM7QUFDdEMsT0FBTyxLQUFLLFVBQVUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzlDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBHRU5FUkFURUQgYnkgcHJvamVuIHdhdGNoIC0gRE8gTk9UIEVESVQuXG4vLyBSZWdlbmVyYXRlZCBmcm9tIHRoZSBleHBvcnRpbmcgbW9kdWxlcyBpbiAuL3NyYy5cbi8vIEhhbmQgZWRpdHMgYXJlIG92ZXJ3cml0dGVuIG9uIHRoZSBuZXh0IHdhdGNoOyB0aGlzIGZpbGUgaXMgcmVhZC1vbmx5LlxuXG5leHBvcnQgY29uc3QgUEFDS0FHRV9JREVOVElGSUVSID0gXCJAZGJ4LXRvb2xzL2NsaVwiO1xuZXhwb3J0IGNvbnN0IFBBQ0tBR0VfVkVSU0lPTiA9IFwiMC42LjIyNVwiO1xuZXhwb3J0ICogYXMgYm9vdHN0cmFwIGZyb20gXCIuL3NyYy9ib290c3RyYXAudHNcIjtcbmV4cG9ydCAqIGFzIGJ1biBmcm9tIFwiLi9zcmMvYnVuLnRzXCI7XG5leHBvcnQgKiBhcyBjbGkgZnJvbSBcIi4vc3JjL2NsaS50c1wiO1xuZXhwb3J0ICogYXMgcm9vdCBmcm9tIFwiLi9zcmMvcm9vdC50c1wiO1xuZXhwb3J0ICogYXMgcnVzdEJpbmFyeSBmcm9tIFwiLi9zcmMvcnVzdC1iaW5hcnkudHNcIjtcbmV4cG9ydCB7IHJlc29sdmVCdW5Bcmd2IH0gZnJvbSBcIi4vc3JjL2J1bi50c1wiO1xuZXhwb3J0IHsgd29ya3NwYWNlUm9vdCB9IGZyb20gXCIuL3NyYy9yb290LnRzXCI7XG4iXX0=
@@ -1,34 +1,6 @@
1
- import { bin } from "@dbx-tools/core";
2
- /** One release archive available to the current Node runtime. */
3
- export interface RustReleaseBinaryAsset {
4
- readonly os: string;
5
- readonly cpu: string;
6
- readonly name: string;
7
- }
8
- /** Generated registration for one `dbx` Rust command. */
9
- export interface RustReleaseBinaryCommand {
10
- readonly command: string;
11
- readonly description: string;
12
- readonly binaryName: string;
13
- readonly repository: string;
14
- readonly assets: readonly RustReleaseBinaryAsset[];
15
- }
16
- /** Overrides used by tests and callers that install under a custom home. */
17
- export interface RustReleaseBinaryOptions {
18
- readonly homeDir?: string;
19
- readonly platform?: NodeJS.Platform;
20
- readonly arch?: string;
21
- readonly version?: string;
22
- }
23
- /** Return every Rust command registered by the synthesized workspace. */
24
- export declare function rustReleaseBinaryCommands(): readonly RustReleaseBinaryCommand[];
25
- /** Resolve one registered Rust command by its `dbx` subcommand. */
26
- export declare function rustReleaseBinaryCommand(command: string): RustReleaseBinaryCommand;
27
- /** Select the archive for an OS and CPU pair. */
28
- export declare function rustReleaseBinaryAsset(command: RustReleaseBinaryCommand, platform: NodeJS.Platform, arch: string): RustReleaseBinaryAsset;
29
- /** Build the GitHub release URL for a generated archive entry. */
30
- export declare function rustReleaseBinaryUrl(command: RustReleaseBinaryCommand, asset: RustReleaseBinaryAsset, version: string): string;
31
- /** Install the release binary matching this CLI version and host platform. */
32
- export declare function ensureRustReleaseBinary(command: RustReleaseBinaryCommand, options?: RustReleaseBinaryOptions): Promise<bin.BinContext>;
33
- /** Install and run a Rust command with inherited terminal I/O. */
34
- export declare function runRustReleaseBinary(command: RustReleaseBinaryCommand, args: readonly string[], options?: RustReleaseBinaryOptions): Promise<number>;
1
+ /**
2
+ * Compatibility export for Rust release binary helpers.
3
+ *
4
+ * @module
5
+ */
6
+ export * from "@dbx-tools/rust-binary";
@@ -1,103 +1,7 @@
1
1
  /**
2
- * Lazy installation and transparent execution of Rust release binaries.
2
+ * Compatibility export for Rust release binary helpers.
3
3
  *
4
4
  * @module
5
5
  */
6
- import { spawn } from "node:child_process";
7
- import { constants as osConstants, homedir } from "node:os";
8
- import { join } from "node:path";
9
- import { bin } from "@dbx-tools/core";
10
- import { RUST_RELEASE_BINARY_COMMANDS } from "./_rust-release-binaries.js";
11
- /** Return every Rust command registered by the synthesized workspace. */
12
- export function rustReleaseBinaryCommands() {
13
- return RUST_RELEASE_BINARY_COMMANDS;
14
- }
15
- /** Resolve one registered Rust command by its `dbx` subcommand. */
16
- export function rustReleaseBinaryCommand(command) {
17
- const resolved = RUST_RELEASE_BINARY_COMMANDS.find((candidate) => candidate.command === command);
18
- if (!resolved)
19
- throw new Error(`Unknown Rust release command: ${command}`);
20
- return resolved;
21
- }
22
- function repositoryName(repository) {
23
- const parsed = new URL(repository.replace(/^git\+/, ""));
24
- const name = parsed.pathname.replace(/^\/+|\/+$/g, "").replace(/\.git$/, "");
25
- if (parsed.hostname !== "github.com" || name.split("/").length !== 2) {
26
- throw new Error(`Rust release repository must be a GitHub owner/repository: ${repository}`);
27
- }
28
- return name;
29
- }
30
- async function packageVersion() {
31
- return (await import("../index.js")).PACKAGE_VERSION;
32
- }
33
- function versionedBinaryName(binaryName, version, platform) {
34
- const suffix = version.replace(/[^0-9A-Za-z]+/g, "_");
35
- const extension = platform === "win32" ? ".exe" : "";
36
- return `${binaryName}_${suffix}${extension}`;
37
- }
38
- /** Select the archive for an OS and CPU pair. */
39
- export function rustReleaseBinaryAsset(command, platform, arch) {
40
- const asset = command.assets.find((candidate) => candidate.os === platform && candidate.cpu === arch);
41
- if (!asset) {
42
- throw new Error(`${command.command} has no release binary for ${platform}/${arch}`);
43
- }
44
- return asset;
45
- }
46
- /** Build the GitHub release URL for a generated archive entry. */
47
- export function rustReleaseBinaryUrl(command, asset, version) {
48
- return `https://github.com/${repositoryName(command.repository)}/releases/download/v${version}/${asset.name}`;
49
- }
50
- /** Install the release binary matching this CLI version and host platform. */
51
- export async function ensureRustReleaseBinary(command, options = {}) {
52
- const platform = options.platform ?? process.platform;
53
- const arch = options.arch ?? process.arch;
54
- const version = options.version ?? (await packageVersion());
55
- const asset = rustReleaseBinaryAsset(command, platform, arch);
56
- const root = join(options.homeDir ?? homedir(), ".dbx-tools");
57
- const binDir = join(root, "bin");
58
- const destination = {
59
- root,
60
- binDir,
61
- path: join(binDir, versionedBinaryName(command.binaryName, version, platform)),
62
- };
63
- return bin.ensure(command.binaryName, () => rustReleaseBinaryUrl(command, asset, version), {
64
- autoUnpackage: true,
65
- destination,
66
- minVersion: version,
67
- versionParser: (output) => {
68
- const installed = bin.parseVersion(output);
69
- return installed === version ? installed : undefined;
70
- },
71
- });
72
- }
73
- function signalExitCode(signal) {
74
- return 128 + (osConstants.signals[signal] ?? 0);
75
- }
76
- /** Install and run a Rust command with inherited terminal I/O. */
77
- export async function runRustReleaseBinary(command, args, options = {}) {
78
- const installed = await ensureRustReleaseBinary(command, options);
79
- const child = spawn(installed.path, args, { stdio: "inherit" });
80
- const signals = ["SIGINT", "SIGTERM", "SIGHUP"];
81
- const handlers = new Map();
82
- for (const signal of signals) {
83
- const handler = () => {
84
- if (!child.killed)
85
- child.kill(signal);
86
- };
87
- handlers.set(signal, handler);
88
- process.on(signal, handler);
89
- }
90
- try {
91
- return await new Promise((resolve, reject) => {
92
- child.once("error", reject);
93
- child.once("close", (code, signal) => {
94
- resolve(signal ? signalExitCode(signal) : (code ?? 1));
95
- });
96
- });
97
- }
98
- finally {
99
- for (const [signal, handler] of handlers)
100
- process.off(signal, handler);
101
- }
102
- }
103
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVzdC1iaW5hcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcnVzdC1iaW5hcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUNILE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxJQUFJLFdBQVcsRUFBRSxPQUFPLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDNUQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVqQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEMsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUEwQjNFLHlFQUF5RTtBQUN6RSxNQUFNLFVBQVUseUJBQXlCO0lBQ3ZDLE9BQU8sNEJBQTRCLENBQUM7QUFDdEMsQ0FBQztBQUVELG1FQUFtRTtBQUNuRSxNQUFNLFVBQVUsd0JBQXdCLENBQUMsT0FBZTtJQUN0RCxNQUFNLFFBQVEsR0FBRyw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEtBQUssT0FBTyxDQUFDLENBQUM7SUFDakcsSUFBSSxDQUFDLFFBQVE7UUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLGlDQUFpQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQzNFLE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUM7QUFFRCxTQUFTLGNBQWMsQ0FBQyxVQUFrQjtJQUN4QyxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3pELE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FB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QVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzlCLE9BQU8sQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFDRCxJQUFJLENBQUM7UUFDSCxPQUFPLE1BQU0sSUFBSSxPQUFPLENBQVMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDbkQsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDNUIsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLEVBQUU7Z0JBQ25DLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6RCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztZQUFTLENBQUM7UUFDVCxLQUFLLE1BQU0sQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLElBQUksUUFBUTtZQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3pFLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBMYXp5IGluc3RhbGxhdGlvbiBhbmQgdHJhbnNwYXJlbnQgZXhlY3V0aW9uIG9mIFJ1c3QgcmVsZWFzZSBiaW5hcmllcy5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cbmltcG9ydCB7IHNwYXduIH0gZnJvbSBcIm5vZGU6Y2hpbGRfcHJvY2Vzc1wiO1xuaW1wb3J0IHsgY29uc3RhbnRzIGFzIG9zQ29uc3RhbnRzLCBob21lZGlyIH0gZnJvbSBcIm5vZGU6b3NcIjtcbmltcG9ydCB7IGpvaW4gfSBmcm9tIFwibm9kZTpwYXRoXCI7XG5cbmltcG9ydCB7IGJpbiB9IGZyb20gXCJAZGJ4LXRvb2xzL2NvcmVcIjtcbmltcG9ydCB7IFJVU1RfUkVMRUFTRV9CSU5BUllfQ09NTUFORFMgfSBmcm9tIFwiLi9fcnVzdC1yZWxlYXNlLWJpbmFyaWVzLnRzXCI7XG5cbi8qKiBPbmUgcmVsZWFzZSBhcmNoaXZlIGF2YWlsYWJsZSB0byB0aGUgY3VycmVudCBOb2RlIHJ1bnRpbWUuICovXG5leHBvcnQgaW50ZXJmYWNlIFJ1c3RSZWxlYXNlQmluYXJ5QXNzZXQge1xuICByZWFkb25seSBvczogc3RyaW5nO1xuICByZWFkb25seSBjcHU6IHN0cmluZztcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xufVxuXG4vKiogR2VuZXJhdGVkIHJlZ2lzdHJhdGlvbiBmb3Igb25lIGBkYnhgIFJ1c3QgY29tbWFuZC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUnVzdFJlbGVhc2VCaW5hcnlDb21tYW5kIHtcbiAgcmVhZG9ubHkgY29tbWFuZDogc3RyaW5nO1xuICByZWFkb25seSBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICByZWFkb25seSBiaW5hcnlOYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHJlcG9zaXRvcnk6IHN0cmluZztcbiAgcmVhZG9ubHkgYXNzZXRzOiByZWFkb25seSBSdXN0UmVsZWFzZUJpbmFyeUFzc2V0W107XG59XG5cbi8qKiBPdmVycmlkZXMgdXNlZCBieSB0ZXN0cyBhbmQgY2FsbGVycyB0aGF0IGluc3RhbGwgdW5kZXIgYSBjdXN0b20gaG9tZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUnVzdFJlbGVhc2VCaW5hcnlPcHRpb25zIHtcbiAgcmVhZG9ubHkgaG9tZURpcj86IHN0cmluZztcbiAgcmVhZG9ubHkgcGxhdGZvcm0/OiBOb2RlSlMuUGxhdGZvcm07XG4gIHJlYWRvbmx5IGFyY2g/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHZlcnNpb24/OiBzdHJpbmc7XG59XG5cbi8qKiBSZXR1cm4gZXZlcnkgUnVzdCBjb21tYW5kIHJlZ2lzdGVyZWQgYnkgdGhlIHN5bnRoZXNpemVkIHdvcmtzcGFjZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBydXN0UmVsZWFzZUJpbmFyeUNvbW1hbmRzKCk6IHJlYWRvbmx5IFJ1c3RSZWxlYXNlQmluYXJ5Q29tbWFuZFtdIHtcbiAgcmV0dXJuIFJVU1RfUkVMRUFTRV9CSU5BUllfQ09NTUFORFM7XG59XG5cbi8qKiBSZXNvbHZlIG9uZSByZWdpc3RlcmVkIFJ1c3QgY29tbWFuZCBieSBpdHMgYGRieGAgc3ViY29tbWFuZC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBydXN0UmVsZWFzZUJpbmFyeUNvbW1hbmQoY29tbWFuZDogc3RyaW5nKTogUnVzdFJlbGVhc2VCaW5hcnlDb21tYW5kIHtcbiAgY29uc3QgcmVzb2x2ZWQgPSBSVVNUX1JFTEVBU0VfQklOQVJZX0NPTU1BTkRTLmZpbmQoKGNhbmRpZGF0ZSkgPT4gY2FuZGlkYXRlLmNvbW1hbmQgPT09IGNvbW1hbmQpO1xuICBpZiAoIXJlc29sdmVkKSB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gUnVzdCByZWxlYXNlIGNvbW1hbmQ6ICR7Y29tbWFuZH1gKTtcbiAgcmV0dXJuIHJlc29sdmVkO1xufVxuXG5mdW5jdGlvbiByZXBvc2l0b3J5TmFtZShyZXBvc2l0b3J5OiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBwYXJzZWQgPSBuZXcgVVJMKHJlcG9zaXRvcnkucmVwbGFjZSgvXmdpdFxcKy8sIFwiXCIpKTtcbiAgY29uc3QgbmFtZSA9IHBhcnNlZC5wYXRobmFtZS5yZXBsYWNlKC9eXFwvK3xcXC8rJC9nLCBcIlwiKS5yZXBsYWNlKC9cXC5naXQkLywgXCJcIik7XG4gIGlmIChwYXJzZWQuaG9zdG5hbWUgIT09IFwiZ2l0aHViLmNvbVwiIHx8IG5hbWUuc3BsaXQoXCIvXCIpLmxlbmd0aCAhPT0gMikge1xuICAgIHRocm93IG5ldyBFcnJvcihgUnVzdCByZWxlYXNlIHJlcG9zaXRvcnkgbXVzdCBiZSBhIEdpdEh1YiBvd25lci9yZXBvc2l0b3J5OiAke3JlcG9zaXRvcnl9YCk7XG4gIH1cbiAgcmV0dXJuIG5hbWU7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHBhY2thZ2VWZXJzaW9uKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gIHJldHVybiAoYXdhaXQgaW1wb3J0KFwiLi4vaW5kZXgudHNcIikpLlBBQ0tBR0VfVkVSU0lPTjtcbn1cblxuZnVuY3Rpb24gdmVyc2lvbmVkQmluYXJ5TmFtZShcbiAgYmluYXJ5TmFtZTogc3RyaW5nLFxuICB2ZXJzaW9uOiBzdHJpbmcsXG4gIHBsYXRmb3JtOiBOb2RlSlMuUGxhdGZvcm0sXG4pOiBzdHJpbmcge1xuICBjb25zdCBzdWZmaXggPSB2ZXJzaW9uLnJlcGxhY2UoL1teMC05QS1aYS16XSsvZywgXCJfXCIpO1xuICBjb25zdCBleHRlbnNpb24gPSBwbGF0Zm9ybSA9PT0gXCJ3aW4zMlwiID8gXCIuZXhlXCIgOiBcIlwiO1xuICByZXR1cm4gYCR7YmluYXJ5TmFtZX1fJHtzdWZmaXh9JHtleHRlbnNpb259YDtcbn1cblxuLyoqIFNlbGVjdCB0aGUgYXJjaGl2ZSBmb3IgYW4gT1MgYW5kIENQVSBwYWlyLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJ1c3RSZWxlYXNlQmluYXJ5QXNzZXQoXG4gIGNvbW1hbmQ6IFJ1c3RSZWxlYXNlQmluYXJ5Q29tbWFuZCxcbiAgcGxhdGZvcm06IE5vZGVKUy5QbGF0Zm9ybSxcbiAgYXJjaDogc3RyaW5nLFxuKTogUnVzdFJlbGVhc2VCaW5hcnlBc3NldCB7XG4gIGNvbnN0IGFzc2V0ID0gY29tbWFuZC5hc3NldHMuZmluZChcbiAgICAoY2FuZGlkYXRlKSA9PiBjYW5kaWRhdGUub3MgPT09IHBsYXRmb3JtICYmIGNhbmRpZGF0ZS5jcHUgPT09IGFyY2gsXG4gICk7XG4gIGlmICghYXNzZXQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYCR7Y29tbWFuZC5jb21tYW5kfSBoYXMgbm8gcmVsZWFzZSBiaW5hcnkgZm9yICR7cGxhdGZvcm19LyR7YXJjaH1gKTtcbiAgfVxuICByZXR1cm4gYXNzZXQ7XG59XG5cbi8qKiBCdWlsZCB0aGUgR2l0SHViIHJlbGVhc2UgVVJMIGZvciBhIGdlbmVyYXRlZCBhcmNoaXZlIGVudHJ5LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJ1c3RSZWxlYXNlQmluYXJ5VXJsKFxuICBjb21tYW5kOiBSdXN0UmVsZWFzZUJpbmFyeUNvbW1hbmQsXG4gIGFzc2V0OiBSdXN0UmVsZWFzZUJpbmFyeUFzc2V0LFxuICB2ZXJzaW9uOiBzdHJpbmcsXG4pOiBzdHJpbmcge1xuICByZXR1cm4gYGh0dHBzOi8vZ2l0aHViLmNvbS8ke3JlcG9zaXRvcnlOYW1lKGNvbW1hbmQucmVwb3NpdG9yeSl9L3JlbGVhc2VzL2Rvd25sb2FkL3Yke3ZlcnNpb259LyR7YXNzZXQubmFtZX1gO1xufVxuXG4vKiogSW5zdGFsbCB0aGUgcmVsZWFzZSBiaW5hcnkgbWF0Y2hpbmcgdGhpcyBDTEkgdmVyc2lvbiBhbmQgaG9zdCBwbGF0Zm9ybS4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBlbnN1cmVSdXN0UmVsZWFzZUJpbmFyeShcbiAgY29tbWFuZDogUnVzdFJlbGVhc2VCaW5hcnlDb21tYW5kLFxuICBvcHRpb25zOiBSdXN0UmVsZWFzZUJpbmFyeU9wdGlvbnMgPSB7fSxcbik6IFByb21pc2U8YmluLkJpbkNvbnRleHQ+IHtcbiAgY29uc3QgcGxhdGZvcm0gPSBvcHRpb25zLnBsYXRmb3JtID8/IHByb2Nlc3MucGxhdGZvcm07XG4gIGNvbnN0IGFyY2ggPSBvcHRpb25zLmFyY2ggPz8gcHJvY2Vzcy5hcmNoO1xuICBjb25zdCB2ZXJzaW9uID0gb3B0aW9ucy52ZXJzaW9uID8/IChhd2FpdCBwYWNrYWdlVmVyc2lvbigpKTtcbiAgY29uc3QgYXNzZXQgPSBydXN0UmVsZWFzZUJpbmFyeUFzc2V0KGNvbW1hbmQsIHBsYXRmb3JtLCBhcmNoKTtcbiAgY29uc3Qgcm9vdCA9IGpvaW4ob3B0aW9ucy5ob21lRGlyID8/IGhvbWVkaXIoKSwgXCIuZGJ4LXRvb2xzXCIpO1xuICBjb25zdCBiaW5EaXIgPSBqb2luKHJvb3QsIFwiYmluXCIpO1xuICBjb25zdCBkZXN0aW5hdGlvbjogYmluLkJpbkNvbnRleHQgPSB7XG4gICAgcm9vdCxcbiAgICBiaW5EaXIsXG4gICAgcGF0aDogam9pbihiaW5EaXIsIHZlcnNpb25lZEJpbmFyeU5hbWUoY29tbWFuZC5iaW5hcnlOYW1lLCB2ZXJzaW9uLCBwbGF0Zm9ybSkpLFxuICB9O1xuICByZXR1cm4gYmluLmVuc3VyZShjb21tYW5kLmJpbmFyeU5hbWUsICgpID0+IHJ1c3RSZWxlYXNlQmluYXJ5VXJsKGNvbW1hbmQsIGFzc2V0LCB2ZXJzaW9uKSwge1xuICAgIGF1dG9VbnBhY2thZ2U6IHRydWUsXG4gICAgZGVzdGluYXRpb24sXG4gICAgbWluVmVyc2lvbjogdmVyc2lvbixcbiAgICB2ZXJzaW9uUGFyc2VyOiAob3V0cHV0KSA9PiB7XG4gICAgICBjb25zdCBpbnN0YWxsZWQgPSBiaW4ucGFyc2VWZXJzaW9uKG91dHB1dCk7XG4gICAgICByZXR1cm4gaW5zdGFsbGVkID09PSB2ZXJzaW9uID8gaW5zdGFsbGVkIDogdW5kZWZpbmVkO1xuICAgIH0sXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBzaWduYWxFeGl0Q29kZShzaWduYWw6IE5vZGVKUy5TaWduYWxzKTogbnVtYmVyIHtcbiAgcmV0dXJuIDEyOCArIChvc0NvbnN0YW50cy5zaWduYWxzW3NpZ25hbF0gPz8gMCk7XG59XG5cbi8qKiBJbnN0YWxsIGFuZCBydW4gYSBSdXN0IGNvbW1hbmQgd2l0aCBpbmhlcml0ZWQgdGVybWluYWwgSS9PLiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1blJ1c3RSZWxlYXNlQmluYXJ5KFxuICBjb21tYW5kOiBSdXN0UmVsZWFzZUJpbmFyeUNvbW1hbmQsXG4gIGFyZ3M6IHJlYWRvbmx5IHN0cmluZ1tdLFxuICBvcHRpb25zOiBSdXN0UmVsZWFzZUJpbmFyeU9wdGlvbnMgPSB7fSxcbik6IFByb21pc2U8bnVtYmVyPiB7XG4gIGNvbnN0IGluc3RhbGxlZCA9IGF3YWl0IGVuc3VyZVJ1c3RSZWxlYXNlQmluYXJ5KGNvbW1hbmQsIG9wdGlvbnMpO1xuICBjb25zdCBjaGlsZCA9IHNwYXduKGluc3RhbGxlZC5wYXRoLCBhcmdzLCB7IHN0ZGlvOiBcImluaGVyaXRcIiB9KTtcbiAgY29uc3Qgc2lnbmFscyA9IFtcIlNJR0lOVFwiLCBcIlNJR1RFUk1cIiwgXCJTSUdIVVBcIl0gYXMgY29uc3Q7XG4gIGNvbnN0IGhhbmRsZXJzID0gbmV3IE1hcDxOb2RlSlMuU2lnbmFscywgKCkgPT4gdm9pZD4oKTtcbiAgZm9yIChjb25zdCBzaWduYWwgb2Ygc2lnbmFscykge1xuICAgIGNvbnN0IGhhbmRsZXIgPSAoKSA9PiB7XG4gICAgICBpZiAoIWNoaWxkLmtpbGxlZCkgY2hpbGQua2lsbChzaWduYWwpO1xuICAgIH07XG4gICAgaGFuZGxlcnMuc2V0KHNpZ25hbCwgaGFuZGxlcik7XG4gICAgcHJvY2Vzcy5vbihzaWduYWwsIGhhbmRsZXIpO1xuICB9XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IG5ldyBQcm9taXNlPG51bWJlcj4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY2hpbGQub25jZShcImVycm9yXCIsIHJlamVjdCk7XG4gICAgICBjaGlsZC5vbmNlKFwiY2xvc2VcIiwgKGNvZGUsIHNpZ25hbCkgPT4ge1xuICAgICAgICByZXNvbHZlKHNpZ25hbCA/IHNpZ25hbEV4aXRDb2RlKHNpZ25hbCkgOiAoY29kZSA/PyAxKSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSBmaW5hbGx5IHtcbiAgICBmb3IgKGNvbnN0IFtzaWduYWwsIGhhbmRsZXJdIG9mIGhhbmRsZXJzKSBwcm9jZXNzLm9mZihzaWduYWwsIGhhbmRsZXIpO1xuICB9XG59XG4iXX0=
6
+ export * from "@dbx-tools/rust-binary";
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVzdC1iaW5hcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcnVzdC1iaW5hcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUNILGNBQWMsd0JBQXdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbXBhdGliaWxpdHkgZXhwb3J0IGZvciBSdXN0IHJlbGVhc2UgYmluYXJ5IGhlbHBlcnMuXG4gKlxuICogQG1vZHVsZVxuICovXG5leHBvcnQgKiBmcm9tIFwiQGRieC10b29scy9ydXN0LWJpbmFyeVwiO1xuIl19
@@ -1 +1 @@
1
- {"root":["../src/_rust-release-binaries.ts","../src/bootstrap.ts","../src/bun.ts","../src/cli.ts","../src/root.ts","../src/rust-binary.ts","../index.ts","../bin/dbx-tools.ts"],"version":"5.9.3"}
1
+ {"root":["../src/bootstrap.ts","../src/bun.ts","../src/cli.ts","../src/root.ts","../src/rust-binary.ts","../index.ts","../bin/dbx-tools.ts"],"version":"5.9.3"}
package/package.json CHANGED
@@ -29,11 +29,12 @@
29
29
  },
30
30
  "dependencies": {
31
31
  "@clack/prompts": "^1.7.0",
32
- "@dbx-tools/cli-appkit-env": "0.6.223",
33
- "@dbx-tools/cli-auth": "0.6.223",
34
- "@dbx-tools/cli-tunnel": "0.6.223",
35
- "@dbx-tools/core": "0.6.223",
36
- "@dbx-tools/shared-core": "0.6.223",
32
+ "@dbx-tools/cli-appkit-env": "0.6.225",
33
+ "@dbx-tools/cli-auth": "0.6.225",
34
+ "@dbx-tools/cli-tunnel": "0.6.225",
35
+ "@dbx-tools/core": "0.6.225",
36
+ "@dbx-tools/rust-binary": "0.6.225",
37
+ "@dbx-tools/shared-core": "0.6.225",
37
38
  "commander": "^15.0.0"
38
39
  },
39
40
  "main": "./lib/index.js",
@@ -74,7 +75,7 @@
74
75
  "./package.json": "./package.json"
75
76
  }
76
77
  },
77
- "version": "0.6.223",
78
+ "version": "0.6.225",
78
79
  "types": "./lib/index.d.ts",
79
80
  "type": "module",
80
81
  "exports": {
@@ -1,154 +1,6 @@
1
1
  /**
2
- * Lazy installation and transparent execution of Rust release binaries.
2
+ * Compatibility export for Rust release binary helpers.
3
3
  *
4
4
  * @module
5
5
  */
6
- import { spawn } from "node:child_process";
7
- import { constants as osConstants, homedir } from "node:os";
8
- import { join } from "node:path";
9
-
10
- import { bin } from "@dbx-tools/core";
11
- import { RUST_RELEASE_BINARY_COMMANDS } from "./_rust-release-binaries.ts";
12
-
13
- /** One release archive available to the current Node runtime. */
14
- export interface RustReleaseBinaryAsset {
15
- readonly os: string;
16
- readonly cpu: string;
17
- readonly name: string;
18
- }
19
-
20
- /** Generated registration for one `dbx` Rust command. */
21
- export interface RustReleaseBinaryCommand {
22
- readonly command: string;
23
- readonly description: string;
24
- readonly binaryName: string;
25
- readonly repository: string;
26
- readonly assets: readonly RustReleaseBinaryAsset[];
27
- }
28
-
29
- /** Overrides used by tests and callers that install under a custom home. */
30
- export interface RustReleaseBinaryOptions {
31
- readonly homeDir?: string;
32
- readonly platform?: NodeJS.Platform;
33
- readonly arch?: string;
34
- readonly version?: string;
35
- }
36
-
37
- /** Return every Rust command registered by the synthesized workspace. */
38
- export function rustReleaseBinaryCommands(): readonly RustReleaseBinaryCommand[] {
39
- return RUST_RELEASE_BINARY_COMMANDS;
40
- }
41
-
42
- /** Resolve one registered Rust command by its `dbx` subcommand. */
43
- export function rustReleaseBinaryCommand(command: string): RustReleaseBinaryCommand {
44
- const resolved = RUST_RELEASE_BINARY_COMMANDS.find((candidate) => candidate.command === command);
45
- if (!resolved) throw new Error(`Unknown Rust release command: ${command}`);
46
- return resolved;
47
- }
48
-
49
- function repositoryName(repository: string): string {
50
- const parsed = new URL(repository.replace(/^git\+/, ""));
51
- const name = parsed.pathname.replace(/^\/+|\/+$/g, "").replace(/\.git$/, "");
52
- if (parsed.hostname !== "github.com" || name.split("/").length !== 2) {
53
- throw new Error(`Rust release repository must be a GitHub owner/repository: ${repository}`);
54
- }
55
- return name;
56
- }
57
-
58
- async function packageVersion(): Promise<string> {
59
- return (await import("../index.ts")).PACKAGE_VERSION;
60
- }
61
-
62
- function versionedBinaryName(
63
- binaryName: string,
64
- version: string,
65
- platform: NodeJS.Platform,
66
- ): string {
67
- const suffix = version.replace(/[^0-9A-Za-z]+/g, "_");
68
- const extension = platform === "win32" ? ".exe" : "";
69
- return `${binaryName}_${suffix}${extension}`;
70
- }
71
-
72
- /** Select the archive for an OS and CPU pair. */
73
- export function rustReleaseBinaryAsset(
74
- command: RustReleaseBinaryCommand,
75
- platform: NodeJS.Platform,
76
- arch: string,
77
- ): RustReleaseBinaryAsset {
78
- const asset = command.assets.find(
79
- (candidate) => candidate.os === platform && candidate.cpu === arch,
80
- );
81
- if (!asset) {
82
- throw new Error(`${command.command} has no release binary for ${platform}/${arch}`);
83
- }
84
- return asset;
85
- }
86
-
87
- /** Build the GitHub release URL for a generated archive entry. */
88
- export function rustReleaseBinaryUrl(
89
- command: RustReleaseBinaryCommand,
90
- asset: RustReleaseBinaryAsset,
91
- version: string,
92
- ): string {
93
- return `https://github.com/${repositoryName(command.repository)}/releases/download/v${version}/${asset.name}`;
94
- }
95
-
96
- /** Install the release binary matching this CLI version and host platform. */
97
- export async function ensureRustReleaseBinary(
98
- command: RustReleaseBinaryCommand,
99
- options: RustReleaseBinaryOptions = {},
100
- ): Promise<bin.BinContext> {
101
- const platform = options.platform ?? process.platform;
102
- const arch = options.arch ?? process.arch;
103
- const version = options.version ?? (await packageVersion());
104
- const asset = rustReleaseBinaryAsset(command, platform, arch);
105
- const root = join(options.homeDir ?? homedir(), ".dbx-tools");
106
- const binDir = join(root, "bin");
107
- const destination: bin.BinContext = {
108
- root,
109
- binDir,
110
- path: join(binDir, versionedBinaryName(command.binaryName, version, platform)),
111
- };
112
- return bin.ensure(command.binaryName, () => rustReleaseBinaryUrl(command, asset, version), {
113
- autoUnpackage: true,
114
- destination,
115
- minVersion: version,
116
- versionParser: (output) => {
117
- const installed = bin.parseVersion(output);
118
- return installed === version ? installed : undefined;
119
- },
120
- });
121
- }
122
-
123
- function signalExitCode(signal: NodeJS.Signals): number {
124
- return 128 + (osConstants.signals[signal] ?? 0);
125
- }
126
-
127
- /** Install and run a Rust command with inherited terminal I/O. */
128
- export async function runRustReleaseBinary(
129
- command: RustReleaseBinaryCommand,
130
- args: readonly string[],
131
- options: RustReleaseBinaryOptions = {},
132
- ): Promise<number> {
133
- const installed = await ensureRustReleaseBinary(command, options);
134
- const child = spawn(installed.path, args, { stdio: "inherit" });
135
- const signals = ["SIGINT", "SIGTERM", "SIGHUP"] as const;
136
- const handlers = new Map<NodeJS.Signals, () => void>();
137
- for (const signal of signals) {
138
- const handler = () => {
139
- if (!child.killed) child.kill(signal);
140
- };
141
- handlers.set(signal, handler);
142
- process.on(signal, handler);
143
- }
144
- try {
145
- return await new Promise<number>((resolve, reject) => {
146
- child.once("error", reject);
147
- child.once("close", (code, signal) => {
148
- resolve(signal ? signalExitCode(signal) : (code ?? 1));
149
- });
150
- });
151
- } finally {
152
- for (const [signal, handler] of handlers) process.off(signal, handler);
153
- }
154
- }
6
+ export * from "@dbx-tools/rust-binary";
@@ -1,53 +0,0 @@
1
- export declare const RUST_RELEASE_BINARY_COMMANDS: readonly [{
2
- readonly command: "lakebase-proxy";
3
- readonly description: "Loopback PostgreSQL proxy for Databricks Lakebase";
4
- readonly binaryName: "dbx-lakebase-proxy";
5
- readonly repository: "https://github.com/reggie-db/dbx-tools";
6
- readonly assets: readonly [{
7
- readonly os: "linux";
8
- readonly cpu: "x64";
9
- readonly name: "dbx-lakebase-proxy-linux-x64-gnu.tar.gz";
10
- }, {
11
- readonly os: "linux";
12
- readonly cpu: "arm64";
13
- readonly name: "dbx-lakebase-proxy-linux-arm64-gnu.tar.gz";
14
- }, {
15
- readonly os: "darwin";
16
- readonly cpu: "x64";
17
- readonly name: "dbx-lakebase-proxy-darwin-x64.tar.gz";
18
- }, {
19
- readonly os: "darwin";
20
- readonly cpu: "arm64";
21
- readonly name: "dbx-lakebase-proxy-darwin-arm64.tar.gz";
22
- }];
23
- }, {
24
- readonly command: "model-proxy";
25
- readonly description: "Multi-protocol Databricks model proxy";
26
- readonly binaryName: "dbx-model-proxy";
27
- readonly repository: "https://github.com/reggie-db/dbx-tools";
28
- readonly assets: readonly [{
29
- readonly os: "linux";
30
- readonly cpu: "x64";
31
- readonly name: "dbx-model-proxy-linux-x64-gnu.tar.gz";
32
- }, {
33
- readonly os: "linux";
34
- readonly cpu: "arm64";
35
- readonly name: "dbx-model-proxy-linux-arm64-gnu.tar.gz";
36
- }, {
37
- readonly os: "darwin";
38
- readonly cpu: "x64";
39
- readonly name: "dbx-model-proxy-darwin-x64.tar.gz";
40
- }, {
41
- readonly os: "darwin";
42
- readonly cpu: "arm64";
43
- readonly name: "dbx-model-proxy-darwin-arm64.tar.gz";
44
- }, {
45
- readonly os: "win32";
46
- readonly cpu: "x64";
47
- readonly name: "dbx-model-proxy-win32-x64-msvc.zip";
48
- }, {
49
- readonly os: "win32";
50
- readonly cpu: "arm64";
51
- readonly name: "dbx-model-proxy-win32-arm64-msvc.zip";
52
- }];
53
- }];
@@ -1,71 +0,0 @@
1
- // GENERATED by projen - DO NOT EDIT.
2
- // Rust release package options are the source of truth.
3
- export const RUST_RELEASE_BINARY_COMMANDS = [
4
- {
5
- "command": "lakebase-proxy",
6
- "description": "Loopback PostgreSQL proxy for Databricks Lakebase",
7
- "binaryName": "dbx-lakebase-proxy",
8
- "repository": "https://github.com/reggie-db/dbx-tools",
9
- "assets": [
10
- {
11
- "os": "linux",
12
- "cpu": "x64",
13
- "name": "dbx-lakebase-proxy-linux-x64-gnu.tar.gz"
14
- },
15
- {
16
- "os": "linux",
17
- "cpu": "arm64",
18
- "name": "dbx-lakebase-proxy-linux-arm64-gnu.tar.gz"
19
- },
20
- {
21
- "os": "darwin",
22
- "cpu": "x64",
23
- "name": "dbx-lakebase-proxy-darwin-x64.tar.gz"
24
- },
25
- {
26
- "os": "darwin",
27
- "cpu": "arm64",
28
- "name": "dbx-lakebase-proxy-darwin-arm64.tar.gz"
29
- }
30
- ]
31
- },
32
- {
33
- "command": "model-proxy",
34
- "description": "Multi-protocol Databricks model proxy",
35
- "binaryName": "dbx-model-proxy",
36
- "repository": "https://github.com/reggie-db/dbx-tools",
37
- "assets": [
38
- {
39
- "os": "linux",
40
- "cpu": "x64",
41
- "name": "dbx-model-proxy-linux-x64-gnu.tar.gz"
42
- },
43
- {
44
- "os": "linux",
45
- "cpu": "arm64",
46
- "name": "dbx-model-proxy-linux-arm64-gnu.tar.gz"
47
- },
48
- {
49
- "os": "darwin",
50
- "cpu": "x64",
51
- "name": "dbx-model-proxy-darwin-x64.tar.gz"
52
- },
53
- {
54
- "os": "darwin",
55
- "cpu": "arm64",
56
- "name": "dbx-model-proxy-darwin-arm64.tar.gz"
57
- },
58
- {
59
- "os": "win32",
60
- "cpu": "x64",
61
- "name": "dbx-model-proxy-win32-x64-msvc.zip"
62
- },
63
- {
64
- "os": "win32",
65
- "cpu": "arm64",
66
- "name": "dbx-model-proxy-win32-arm64-msvc.zip"
67
- }
68
- ]
69
- }
70
- ];
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiX3J1c3QtcmVsZWFzZS1iaW5hcmllcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fcnVzdC1yZWxlYXNlLWJpbmFyaWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFDQUFxQztBQUNyQyx3REFBd0Q7QUFFeEQsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUc7SUFDMUM7UUFDRSxTQUFTLEVBQUUsZ0JBQWdCO1FBQzNCLGFBQWEsRUFBRSxtREFBbUQ7UUFDbEUsWUFBWSxFQUFFLG9CQUFvQjtRQUNsQyxZQUFZLEVBQUUsd0NBQXdDO1FBQ3RELFFBQVEsRUFBRTtZQUNSO2dCQUNFLElBQUksRUFBRSxPQUFPO2dCQUNiLEtBQUssRUFBRSxLQUFLO2dCQUNaLE1BQU0sRUFBRSx5Q0FBeUM7YUFDbEQ7WUFDRDtnQkFDRSxJQUFJLEVBQUUsT0FBTztnQkFDYixLQUFLLEVBQUUsT0FBTztnQkFDZCxNQUFNLEVBQUUsMkNBQTJDO2FBQ3BEO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsS0FBSyxFQUFFLEtBQUs7Z0JBQ1osTUFBTSxFQUFFLHNDQUFzQzthQUMvQztZQUNEO2dCQUNFLElBQUksRUFBRSxRQUFRO2dCQUNkLEtBQUssRUFBRSxPQUFPO2dCQUNkLE1BQU0sRUFBRSx3Q0FBd0M7YUFDakQ7U0FDRjtLQUNGO0lBQ0Q7UUFDRSxTQUFTLEVBQUUsYUFBYTtRQUN4QixhQUFhLEVBQUUsdUNBQXVDO1FBQ3RELFlBQVksRUFBRSxpQkFBaUI7UUFDL0IsWUFBWSxFQUFFLHdDQUF3QztRQUN0RCxRQUFRLEVBQUU7WUFDUjtnQkFDRSxJQUFJLEVBQUUsT0FBTztnQkFDYixLQUFLLEVBQUUsS0FBSztnQkFDWixNQUFNLEVBQUUsc0NBQXNDO2FBQy9DO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLE9BQU87Z0JBQ2IsS0FBSyxFQUFFLE9BQU87Z0JBQ2QsTUFBTSxFQUFFLHdDQUF3QzthQUNqRDtZQUNEO2dCQUNFLElBQUksRUFBRSxRQUFRO2dCQUNkLEtBQUssRUFBRSxLQUFLO2dCQUNaLE1BQU0sRUFBRSxtQ0FBbUM7YUFDNUM7WUFDRDtnQkFDRSxJQUFJLEVBQUUsUUFBUTtnQkFDZCxLQUFLLEVBQUUsT0FBTztnQkFDZCxNQUFNLEVBQUUscUNBQXFDO2FBQzlDO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLE9BQU87Z0JBQ2IsS0FBSyxFQUFFLEtBQUs7Z0JBQ1osTUFBTSxFQUFFLG9DQUFvQzthQUM3QztZQUNEO2dCQUNFLElBQUksRUFBRSxPQUFPO2dCQUNiLEtBQUssRUFBRSxPQUFPO2dCQUNkLE1BQU0sRUFBRSxzQ0FBc0M7YUFDL0M7U0FDRjtLQUNGO0NBQ08sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEdFTkVSQVRFRCBieSBwcm9qZW4gLSBETyBOT1QgRURJVC5cbi8vIFJ1c3QgcmVsZWFzZSBwYWNrYWdlIG9wdGlvbnMgYXJlIHRoZSBzb3VyY2Ugb2YgdHJ1dGguXG5cbmV4cG9ydCBjb25zdCBSVVNUX1JFTEVBU0VfQklOQVJZX0NPTU1BTkRTID0gW1xuICB7XG4gICAgXCJjb21tYW5kXCI6IFwibGFrZWJhc2UtcHJveHlcIixcbiAgICBcImRlc2NyaXB0aW9uXCI6IFwiTG9vcGJhY2sgUG9zdGdyZVNRTCBwcm94eSBmb3IgRGF0YWJyaWNrcyBMYWtlYmFzZVwiLFxuICAgIFwiYmluYXJ5TmFtZVwiOiBcImRieC1sYWtlYmFzZS1wcm94eVwiLFxuICAgIFwicmVwb3NpdG9yeVwiOiBcImh0dHBzOi8vZ2l0aHViLmNvbS9yZWdnaWUtZGIvZGJ4LXRvb2xzXCIsXG4gICAgXCJhc3NldHNcIjogW1xuICAgICAge1xuICAgICAgICBcIm9zXCI6IFwibGludXhcIixcbiAgICAgICAgXCJjcHVcIjogXCJ4NjRcIixcbiAgICAgICAgXCJuYW1lXCI6IFwiZGJ4LWxha2ViYXNlLXByb3h5LWxpbnV4LXg2NC1nbnUudGFyLmd6XCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwib3NcIjogXCJsaW51eFwiLFxuICAgICAgICBcImNwdVwiOiBcImFybTY0XCIsXG4gICAgICAgIFwibmFtZVwiOiBcImRieC1sYWtlYmFzZS1wcm94eS1saW51eC1hcm02NC1nbnUudGFyLmd6XCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwib3NcIjogXCJkYXJ3aW5cIixcbiAgICAgICAgXCJjcHVcIjogXCJ4NjRcIixcbiAgICAgICAgXCJuYW1lXCI6IFwiZGJ4LWxha2ViYXNlLXByb3h5LWRhcndpbi14NjQudGFyLmd6XCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwib3NcIjogXCJkYXJ3aW5cIixcbiAgICAgICAgXCJjcHVcIjogXCJhcm02NFwiLFxuICAgICAgICBcIm5hbWVcIjogXCJkYngtbGFrZWJhc2UtcHJveHktZGFyd2luLWFybTY0LnRhci5nelwiXG4gICAgICB9XG4gICAgXVxuICB9LFxuICB7XG4gICAgXCJjb21tYW5kXCI6IFwibW9kZWwtcHJveHlcIixcbiAgICBcImRlc2NyaXB0aW9uXCI6IFwiTXVsdGktcHJvdG9jb2wgRGF0YWJyaWNrcyBtb2RlbCBwcm94eVwiLFxuICAgIFwiYmluYXJ5TmFtZVwiOiBcImRieC1tb2RlbC1wcm94eVwiLFxuICAgIFwicmVwb3NpdG9yeVwiOiBcImh0dHBzOi8vZ2l0aHViLmNvbS9yZWdnaWUtZGIvZGJ4LXRvb2xzXCIsXG4gICAgXCJhc3NldHNcIjogW1xuICAgICAge1xuICAgICAgICBcIm9zXCI6IFwibGludXhcIixcbiAgICAgICAgXCJjcHVcIjogXCJ4NjRcIixcbiAgICAgICAgXCJuYW1lXCI6IFwiZGJ4LW1vZGVsLXByb3h5LWxpbnV4LXg2NC1nbnUudGFyLmd6XCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwib3NcIjogXCJsaW51eFwiLFxuICAgICAgICBcImNwdVwiOiBcImFybTY0XCIsXG4gICAgICAgIFwibmFtZVwiOiBcImRieC1tb2RlbC1wcm94eS1saW51eC1hcm02NC1nbnUudGFyLmd6XCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwib3NcIjogXCJkYXJ3aW5cIixcbiAgICAgICAgXCJjcHVcIjogXCJ4NjRcIixcbiAgICAgICAgXCJuYW1lXCI6IFwiZGJ4LW1vZGVsLXByb3h5LWRhcndpbi14NjQudGFyLmd6XCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwib3NcIjogXCJkYXJ3aW5cIixcbiAgICAgICAgXCJjcHVcIjogXCJhcm02NFwiLFxuICAgICAgICBcIm5hbWVcIjogXCJkYngtbW9kZWwtcHJveHktZGFyd2luLWFybTY0LnRhci5nelwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcIm9zXCI6IFwid2luMzJcIixcbiAgICAgICAgXCJjcHVcIjogXCJ4NjRcIixcbiAgICAgICAgXCJuYW1lXCI6IFwiZGJ4LW1vZGVsLXByb3h5LXdpbjMyLXg2NC1tc3ZjLnppcFwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcIm9zXCI6IFwid2luMzJcIixcbiAgICAgICAgXCJjcHVcIjogXCJhcm02NFwiLFxuICAgICAgICBcIm5hbWVcIjogXCJkYngtbW9kZWwtcHJveHktd2luMzItYXJtNjQtbXN2Yy56aXBcIlxuICAgICAgfVxuICAgIF1cbiAgfVxuXSBhcyBjb25zdDsiXX0=
@@ -1,71 +0,0 @@
1
- // GENERATED by projen - DO NOT EDIT.
2
- // Rust release package options are the source of truth.
3
-
4
- export const RUST_RELEASE_BINARY_COMMANDS = [
5
- {
6
- "command": "lakebase-proxy",
7
- "description": "Loopback PostgreSQL proxy for Databricks Lakebase",
8
- "binaryName": "dbx-lakebase-proxy",
9
- "repository": "https://github.com/reggie-db/dbx-tools",
10
- "assets": [
11
- {
12
- "os": "linux",
13
- "cpu": "x64",
14
- "name": "dbx-lakebase-proxy-linux-x64-gnu.tar.gz"
15
- },
16
- {
17
- "os": "linux",
18
- "cpu": "arm64",
19
- "name": "dbx-lakebase-proxy-linux-arm64-gnu.tar.gz"
20
- },
21
- {
22
- "os": "darwin",
23
- "cpu": "x64",
24
- "name": "dbx-lakebase-proxy-darwin-x64.tar.gz"
25
- },
26
- {
27
- "os": "darwin",
28
- "cpu": "arm64",
29
- "name": "dbx-lakebase-proxy-darwin-arm64.tar.gz"
30
- }
31
- ]
32
- },
33
- {
34
- "command": "model-proxy",
35
- "description": "Multi-protocol Databricks model proxy",
36
- "binaryName": "dbx-model-proxy",
37
- "repository": "https://github.com/reggie-db/dbx-tools",
38
- "assets": [
39
- {
40
- "os": "linux",
41
- "cpu": "x64",
42
- "name": "dbx-model-proxy-linux-x64-gnu.tar.gz"
43
- },
44
- {
45
- "os": "linux",
46
- "cpu": "arm64",
47
- "name": "dbx-model-proxy-linux-arm64-gnu.tar.gz"
48
- },
49
- {
50
- "os": "darwin",
51
- "cpu": "x64",
52
- "name": "dbx-model-proxy-darwin-x64.tar.gz"
53
- },
54
- {
55
- "os": "darwin",
56
- "cpu": "arm64",
57
- "name": "dbx-model-proxy-darwin-arm64.tar.gz"
58
- },
59
- {
60
- "os": "win32",
61
- "cpu": "x64",
62
- "name": "dbx-model-proxy-win32-x64-msvc.zip"
63
- },
64
- {
65
- "os": "win32",
66
- "cpu": "arm64",
67
- "name": "dbx-model-proxy-win32-arm64-msvc.zip"
68
- }
69
- ]
70
- }
71
- ] as const;