@metabase/cli 0.1.0-alpha.workspaces-commands.818a8f1

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.
Files changed (107) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +762 -0
  3. package/dist/api-key-D9XxErQn.mjs +13 -0
  4. package/dist/archive-BPG5c88Y.mjs +38 -0
  5. package/dist/auth--Hpjwlaf.mjs +18 -0
  6. package/dist/body-DwU2s6Pg.mjs +19 -0
  7. package/dist/body-flags-7oqLhu5j.mjs +14 -0
  8. package/dist/branches-BbcoJXfp.mjs +41 -0
  9. package/dist/cancel-task-BDas45YO.mjs +29 -0
  10. package/dist/card-C31pGtBZ.mjs +113 -0
  11. package/dist/card-D4zZSPUb.mjs +19 -0
  12. package/dist/cli.d.mts +1 -0
  13. package/dist/cli.mjs +61 -0
  14. package/dist/command-augment-D9pI9Vbh.mjs +11 -0
  15. package/dist/create-Bd_U1zWU.mjs +124 -0
  16. package/dist/create-CCzsCZMm.mjs +47 -0
  17. package/dist/create-CwVcoq0O.mjs +43 -0
  18. package/dist/create-DpnjQvPw.mjs +43 -0
  19. package/dist/create-_UOeEXAj.mjs +39 -0
  20. package/dist/create-branch-sDttBORB.mjs +54 -0
  21. package/dist/credentials-C0xKke5D.mjs +84 -0
  22. package/dist/current-task-BGt1mqaX.mjs +35 -0
  23. package/dist/database-4V1iiPEx.mjs +17 -0
  24. package/dist/database-BTX5qbSv.mjs +33 -0
  25. package/dist/db-Dm2u2ISJ.mjs +17 -0
  26. package/dist/delete-DRBTgyus.mjs +47 -0
  27. package/dist/delete-DUC_stoL.mjs +47 -0
  28. package/dist/delete-runtime-inOVw3IX.mjs +58 -0
  29. package/dist/delete-table-9Is631O_.mjs +47 -0
  30. package/dist/deprovision-BAMzZc6f.mjs +60 -0
  31. package/dist/dirty-CLjHbz6J.mjs +32 -0
  32. package/dist/docker-QWVMG2gl.mjs +605 -0
  33. package/dist/eid-BNhutC1U.mjs +13 -0
  34. package/dist/export-D2Anfu3p.mjs +97 -0
  35. package/dist/field-Dhs2AND3.mjs +13 -0
  36. package/dist/field-QwBMAWsq.mjs +76 -0
  37. package/dist/flag-pair-CWvvzDJ_.mjs +17 -0
  38. package/dist/get-2po1uv9i.mjs +35 -0
  39. package/dist/get-BHJA78zg.mjs +35 -0
  40. package/dist/get-CAPLfawI.mjs +35 -0
  41. package/dist/get-CAVVmdMX.mjs +49 -0
  42. package/dist/get-DDWpubE8.mjs +36 -0
  43. package/dist/get-DhIoNeOp.mjs +35 -0
  44. package/dist/get-qPOsuTPw.mjs +35 -0
  45. package/dist/has-remote-changes-DAL5jetW.mjs +63 -0
  46. package/dist/import-CUMxUfSF.mjs +92 -0
  47. package/dist/input-BNqSFl38.mjs +33 -0
  48. package/dist/is-dirty-B10S6MG0.mjs +35 -0
  49. package/dist/is-dirty-CUuq-aB6.mjs +9 -0
  50. package/dist/key-CyhOpgWt.mjs +12 -0
  51. package/dist/license-DtsGJi3l.mjs +17 -0
  52. package/dist/list-B8s7Qnzk.mjs +31 -0
  53. package/dist/list-C5MGydGU.mjs +31 -0
  54. package/dist/list-DeFGwhhJ.mjs +60 -0
  55. package/dist/list-OBx5B3gd.mjs +39 -0
  56. package/dist/list-Y7iGsOfE.mjs +31 -0
  57. package/dist/list-evtQS7jl.mjs +39 -0
  58. package/dist/list-qetY9OIN.mjs +31 -0
  59. package/dist/login-Dqw9ZtCx.mjs +172 -0
  60. package/dist/logout-DwYJ5OUi.mjs +74 -0
  61. package/dist/logs-B_lrY7Js.mjs +57 -0
  62. package/dist/manifest-wzEFG0JB.mjs +124 -0
  63. package/dist/package-t8dKf4m_.mjs +73 -0
  64. package/dist/parse-id-C1prc9US.mjs +12 -0
  65. package/dist/poll-D2sXM5rc.mjs +49 -0
  66. package/dist/poll-task-Byiunmaj.mjs +194 -0
  67. package/dist/prompt-fXeNtj0M.mjs +40 -0
  68. package/dist/provision-DC4_HWZD.mjs +80 -0
  69. package/dist/ps-1bZKIwWh.mjs +9 -0
  70. package/dist/ps-BiOrecEe.mjs +78 -0
  71. package/dist/query-BnGVGeM3.mjs +100 -0
  72. package/dist/remove-Bx48o-0S.mjs +62 -0
  73. package/dist/remove-DecoZzNd.mjs +97 -0
  74. package/dist/render-DlBijc5i.mjs +179 -0
  75. package/dist/run-D4NgvaRh.mjs +87 -0
  76. package/dist/runtime-DUgFfYkN.mjs +950 -0
  77. package/dist/search-4wKx5ug2.mjs +171 -0
  78. package/dist/set-BZnCRL4c.mjs +66 -0
  79. package/dist/set-DCjrmTFm.mjs +66 -0
  80. package/dist/setting-C4vQSqer.mjs +18 -0
  81. package/dist/setting-DM7pm7yh.mjs +55 -0
  82. package/dist/setup-Dqh9hN6l.mjs +70 -0
  83. package/dist/start-xXQypG5L.mjs +324 -0
  84. package/dist/stash-ZZkmW_V7.mjs +106 -0
  85. package/dist/status-9KAPIpX8.mjs +31 -0
  86. package/dist/status-DezF-PIM.mjs +63 -0
  87. package/dist/status-JH6BZppo.mjs +55 -0
  88. package/dist/stop-br-ZOnve.mjs +80 -0
  89. package/dist/sync-C7VOWD00.mjs +26 -0
  90. package/dist/table-BvAr2ixC.mjs +75 -0
  91. package/dist/table-D-Mb5Nvw.mjs +16 -0
  92. package/dist/transform-CqxZwhGs.mjs +21 -0
  93. package/dist/transform-DfVkUttP.mjs +137 -0
  94. package/dist/transform-job-DuB_OjhO.mjs +91 -0
  95. package/dist/transform-job-HjbqjEoP.mjs +19 -0
  96. package/dist/translate-DJxDVAE4.mjs +110 -0
  97. package/dist/update-CDtm71m2.mjs +50 -0
  98. package/dist/update-DYVeVjk2.mjs +76 -0
  99. package/dist/update-DxKlQ0hP.mjs +50 -0
  100. package/dist/url-DP88YHNo.mjs +53 -0
  101. package/dist/wait-Cj_8wu4y.mjs +52 -0
  102. package/dist/wait-DwZN3ZwR.mjs +19 -0
  103. package/dist/wait-flags-CjW4ogUJ.mjs +35 -0
  104. package/dist/workspace-CbwR0vX_.mjs +24 -0
  105. package/dist/workspace-Dr9lWU3D.mjs +72 -0
  106. package/dist/workspace-credentials-q5RRFMT8.mjs +139 -0
  107. package/package.json +62 -0
@@ -0,0 +1,39 @@
1
+ import "./package-t8dKf4m_.mjs";
2
+ import "./command-augment-D9pI9Vbh.mjs";
3
+ import { renderItem } from "./render-DlBijc5i.mjs";
4
+ import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-DUgFfYkN.mjs";
5
+ import "./input-BNqSFl38.mjs";
6
+ import { readBody } from "./body-DwU2s6Pg.mjs";
7
+ import { bodyInputFlags } from "./body-flags-7oqLhu5j.mjs";
8
+ import { Transform, TransformCreateInput, transformView } from "./transform-DfVkUttP.mjs";
9
+
10
+ //#region src/commands/transform/create.ts
11
+ var create_default = defineMetabaseCommand({
12
+ meta: {
13
+ name: "create",
14
+ description: "Create a transform"
15
+ },
16
+ args: {
17
+ ...outputFlags,
18
+ ...profileFlag,
19
+ ...connectionFlags,
20
+ ...bodyInputFlags
21
+ },
22
+ outputSchema: Transform,
23
+ examples: ["cat transform.json | metabase transform create", "metabase transform create --file transform.json"],
24
+ async run({ args, ctx, getClient }) {
25
+ const body = await readBody({
26
+ flag: args.body,
27
+ file: args.file
28
+ }, TransformCreateInput);
29
+ const client = await getClient();
30
+ const created = await client.requestParsed(Transform, "/api/transform", {
31
+ method: "POST",
32
+ body
33
+ });
34
+ renderItem(created, transformView, ctx);
35
+ }
36
+ });
37
+
38
+ //#endregion
39
+ export { create_default as default };
@@ -0,0 +1,54 @@
1
+ import "./package-t8dKf4m_.mjs";
2
+ import "./command-augment-D9pI9Vbh.mjs";
3
+ import { renderItem } from "./render-DlBijc5i.mjs";
4
+ import { ConfigError, connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-DUgFfYkN.mjs";
5
+ import { REMOTE_SYNC_PATHS } from "./poll-task-Byiunmaj.mjs";
6
+ import "./poll-D2sXM5rc.mjs";
7
+ import { z } from "zod";
8
+
9
+ //#region src/commands/sync/create-branch.ts
10
+ const CreateBranchResult = z.object({
11
+ status: z.literal("success"),
12
+ message: z.string()
13
+ });
14
+ const createBranchView = {
15
+ compactPick: CreateBranchResult,
16
+ tableColumns: [{
17
+ key: "status",
18
+ label: "Status"
19
+ }, {
20
+ key: "message",
21
+ label: "Message"
22
+ }]
23
+ };
24
+ var create_branch_default = defineMetabaseCommand({
25
+ meta: {
26
+ name: "create-branch",
27
+ description: "Create a new branch on the git remote and switch sync to it"
28
+ },
29
+ args: {
30
+ ...outputFlags,
31
+ ...profileFlag,
32
+ ...connectionFlags,
33
+ name: {
34
+ type: "positional",
35
+ description: "Branch name",
36
+ required: true
37
+ }
38
+ },
39
+ outputSchema: CreateBranchResult,
40
+ examples: ["metabase sync create-branch feat/dashboards", "metabase sync create-branch feat/x --json"],
41
+ async run({ args, ctx, getClient }) {
42
+ const name = args.name.trim();
43
+ if (name === "") throw new ConfigError("invalid name: branch name must not be blank");
44
+ const client = await getClient();
45
+ const result = await client.requestParsed(CreateBranchResult, REMOTE_SYNC_PATHS.createBranch, {
46
+ method: "POST",
47
+ body: { name }
48
+ });
49
+ renderItem(result, createBranchView, ctx);
50
+ }
51
+ });
52
+
53
+ //#endregion
54
+ export { create_branch_default as default };
@@ -0,0 +1,84 @@
1
+ import "./package-t8dKf4m_.mjs";
2
+ import "./command-augment-D9pI9Vbh.mjs";
3
+ import { renderItem } from "./render-DlBijc5i.mjs";
4
+ import { defineMetabaseCommand, localUrl, outputFlags, parseJson } from "./runtime-DUgFfYkN.mjs";
5
+ import { parseId } from "./parse-id-C1prc9US.mjs";
6
+ import "./poll-D2sXM5rc.mjs";
7
+ import { checkDockerReady, readContainerCredentialsFile, requireWorkspaceContainerLocation } from "./docker-QWVMG2gl.mjs";
8
+ import { WorkspaceCredentials } from "./workspace-credentials-q5RRFMT8.mjs";
9
+ import { z } from "zod";
10
+
11
+ //#region src/commands/workspace/credentials.ts
12
+ const WorkspaceCredentialsResult = z.object({
13
+ workspace_id: z.number().int().positive(),
14
+ url: z.string(),
15
+ email: z.string(),
16
+ password: z.string(),
17
+ api_key_name: z.string(),
18
+ api_key: z.string()
19
+ });
20
+ const credentialsView = {
21
+ compactPick: WorkspaceCredentialsResult,
22
+ tableColumns: [
23
+ {
24
+ key: "workspace_id",
25
+ label: "ID"
26
+ },
27
+ {
28
+ key: "url",
29
+ label: "URL"
30
+ },
31
+ {
32
+ key: "email",
33
+ label: "Email"
34
+ },
35
+ {
36
+ key: "password",
37
+ label: "Password"
38
+ },
39
+ {
40
+ key: "api_key_name",
41
+ label: "API Key Name"
42
+ },
43
+ {
44
+ key: "api_key",
45
+ label: "API Key"
46
+ }
47
+ ]
48
+ };
49
+ const textDecoder = new TextDecoder("utf-8");
50
+ var credentials_default = defineMetabaseCommand({
51
+ meta: {
52
+ name: "credentials",
53
+ description: "Read the workspace child instance's admin credentials (email + password + API key) from the running container"
54
+ },
55
+ args: {
56
+ ...outputFlags,
57
+ id: {
58
+ type: "positional",
59
+ description: "Workspace id",
60
+ required: true
61
+ }
62
+ },
63
+ outputSchema: WorkspaceCredentialsResult,
64
+ examples: ["metabase workspace credentials 1", "metabase workspace credentials 1 --json"],
65
+ async run({ args, ctx }) {
66
+ const workspaceId = parseId(args.id);
67
+ await checkDockerReady();
68
+ const { containerName, hostPort } = await requireWorkspaceContainerLocation(workspaceId);
69
+ const bytes = await readContainerCredentialsFile(workspaceId);
70
+ const credentials = parseJson(textDecoder.decode(bytes), WorkspaceCredentials, { source: `${containerName}:credentials.json` });
71
+ const result = {
72
+ workspace_id: workspaceId,
73
+ url: localUrl(hostPort),
74
+ email: credentials.user.email,
75
+ password: credentials.user.password,
76
+ api_key_name: credentials.api_key.name,
77
+ api_key: credentials.api_key.key
78
+ };
79
+ renderItem(result, credentialsView, ctx);
80
+ }
81
+ });
82
+
83
+ //#endregion
84
+ export { credentials_default as default };
@@ -0,0 +1,35 @@
1
+ import "./package-t8dKf4m_.mjs";
2
+ import "./command-augment-D9pI9Vbh.mjs";
3
+ import { renderItem } from "./render-DlBijc5i.mjs";
4
+ import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-DUgFfYkN.mjs";
5
+ import { SyncTaskOrIdle, fetchCurrentTask, syncTaskIdleView, syncTaskView } from "./poll-task-Byiunmaj.mjs";
6
+ import "./poll-D2sXM5rc.mjs";
7
+
8
+ //#region src/commands/sync/current-task.ts
9
+ const CurrentTaskResult = SyncTaskOrIdle;
10
+ var current_task_default = defineMetabaseCommand({
11
+ meta: {
12
+ name: "current-task",
13
+ description: "Get the most recent sync task (or idle if none)"
14
+ },
15
+ args: {
16
+ ...outputFlags,
17
+ ...profileFlag,
18
+ ...connectionFlags
19
+ },
20
+ outputSchema: CurrentTaskResult,
21
+ examples: ["metabase sync current-task", "metabase sync current-task --json"],
22
+ async run({ ctx, getClient }) {
23
+ const client = await getClient();
24
+ const task = await fetchCurrentTask(client);
25
+ if (task === null) {
26
+ const idle = { status: "idle" };
27
+ renderItem(idle, syncTaskIdleView, ctx);
28
+ return;
29
+ }
30
+ renderItem(task, syncTaskView, ctx);
31
+ }
32
+ });
33
+
34
+ //#endregion
35
+ export { current_task_default as default };
@@ -0,0 +1,17 @@
1
+ import { defineCommand } from "citty";
2
+
3
+ //#region src/commands/workspace/database/index.ts
4
+ var database_default = defineCommand({
5
+ meta: {
6
+ name: "database",
7
+ description: "Manage databases provisioned to a workspace"
8
+ },
9
+ subCommands: {
10
+ provision: () => import("./provision-DC4_HWZD.mjs").then((mod) => mod.default),
11
+ update: () => import("./update-DYVeVjk2.mjs").then((mod) => mod.default),
12
+ deprovision: () => import("./deprovision-BAMzZc6f.mjs").then((mod) => mod.default)
13
+ }
14
+ });
15
+
16
+ //#endregion
17
+ export { database_default as default };
@@ -0,0 +1,33 @@
1
+ import { z } from "zod";
2
+
3
+ //#region src/domain/database.ts
4
+ const Database = z.object({
5
+ id: z.number().int(),
6
+ name: z.string(),
7
+ engine: z.string()
8
+ }).loose();
9
+ const DatabaseCompact = Database.pick({
10
+ id: true,
11
+ name: true,
12
+ engine: true
13
+ }).strip();
14
+ const databaseView = {
15
+ compactPick: DatabaseCompact,
16
+ tableColumns: [
17
+ {
18
+ key: "id",
19
+ label: "ID"
20
+ },
21
+ {
22
+ key: "name",
23
+ label: "Name"
24
+ },
25
+ {
26
+ key: "engine",
27
+ label: "Engine"
28
+ }
29
+ ]
30
+ };
31
+
32
+ //#endregion
33
+ export { Database, DatabaseCompact, databaseView };
@@ -0,0 +1,17 @@
1
+ import { defineCommand } from "citty";
2
+
3
+ //#region src/commands/db/index.ts
4
+ var db_default = defineCommand({
5
+ meta: {
6
+ name: "db",
7
+ description: "Inspect Metabase databases",
8
+ alias: "database"
9
+ },
10
+ subCommands: {
11
+ list: () => import("./list-evtQS7jl.mjs").then((m) => m.default),
12
+ get: () => import("./get-2po1uv9i.mjs").then((m) => m.default)
13
+ }
14
+ });
15
+
16
+ //#endregion
17
+ export { db_default as default };
@@ -0,0 +1,47 @@
1
+ import "./package-t8dKf4m_.mjs";
2
+ import "./command-augment-D9pI9Vbh.mjs";
3
+ import "./render-DlBijc5i.mjs";
4
+ import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-DUgFfYkN.mjs";
5
+ import { parseId } from "./parse-id-C1prc9US.mjs";
6
+ import "./prompt-fXeNtj0M.mjs";
7
+ import { DeleteResult, confirmAndDelete } from "./delete-runtime-inOVw3IX.mjs";
8
+
9
+ //#region src/commands/transform/delete.ts
10
+ var delete_default = defineMetabaseCommand({
11
+ meta: {
12
+ name: "delete",
13
+ description: "Delete a transform by id"
14
+ },
15
+ args: {
16
+ ...outputFlags,
17
+ ...profileFlag,
18
+ ...connectionFlags,
19
+ yes: {
20
+ type: "boolean",
21
+ description: "Skip confirmation",
22
+ default: false
23
+ },
24
+ id: {
25
+ type: "positional",
26
+ description: "Transform id",
27
+ required: true
28
+ }
29
+ },
30
+ outputSchema: DeleteResult,
31
+ examples: ["metabase transform delete 1 --yes", "metabase transform delete 1"],
32
+ async run({ args, ctx, getClient }) {
33
+ const id = parseId(args.id);
34
+ const client = await getClient();
35
+ await confirmAndDelete({
36
+ id,
37
+ path: `/api/transform/${id}`,
38
+ yes: args.yes,
39
+ promptMessage: `Delete transform ${id}?`,
40
+ client,
41
+ ctx
42
+ });
43
+ }
44
+ });
45
+
46
+ //#endregion
47
+ export { delete_default as default };
@@ -0,0 +1,47 @@
1
+ import "./package-t8dKf4m_.mjs";
2
+ import "./command-augment-D9pI9Vbh.mjs";
3
+ import "./render-DlBijc5i.mjs";
4
+ import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-DUgFfYkN.mjs";
5
+ import { parseId } from "./parse-id-C1prc9US.mjs";
6
+ import "./prompt-fXeNtj0M.mjs";
7
+ import { DeleteResult, confirmAndDelete } from "./delete-runtime-inOVw3IX.mjs";
8
+
9
+ //#region src/commands/transform-job/delete.ts
10
+ var delete_default = defineMetabaseCommand({
11
+ meta: {
12
+ name: "delete",
13
+ description: "Delete a transform job by id"
14
+ },
15
+ args: {
16
+ ...outputFlags,
17
+ ...profileFlag,
18
+ ...connectionFlags,
19
+ yes: {
20
+ type: "boolean",
21
+ description: "Skip confirmation",
22
+ default: false
23
+ },
24
+ id: {
25
+ type: "positional",
26
+ description: "Transform job id",
27
+ required: true
28
+ }
29
+ },
30
+ outputSchema: DeleteResult,
31
+ examples: ["metabase transform-job delete 1 --yes", "metabase transform-job delete 1"],
32
+ async run({ args, ctx, getClient }) {
33
+ const id = parseId(args.id);
34
+ const client = await getClient();
35
+ await confirmAndDelete({
36
+ id,
37
+ path: `/api/transform-job/${id}`,
38
+ yes: args.yes,
39
+ promptMessage: `Delete transform job ${id}?`,
40
+ client,
41
+ ctx
42
+ });
43
+ }
44
+ });
45
+
46
+ //#endregion
47
+ export { delete_default as default };
@@ -0,0 +1,58 @@
1
+ import { renderItem } from "./render-DlBijc5i.mjs";
2
+ import { ConfigError } from "./runtime-DUgFfYkN.mjs";
3
+ import { promptConfirm } from "./prompt-fXeNtj0M.mjs";
4
+ import { z } from "zod";
5
+
6
+ //#region src/commands/delete-runtime.ts
7
+ const DeleteResult = z.object({
8
+ deleted: z.boolean(),
9
+ aborted: z.boolean(),
10
+ id: z.number().int()
11
+ });
12
+ const deleteResultView = {
13
+ compactPick: DeleteResult,
14
+ tableColumns: [
15
+ {
16
+ key: "id",
17
+ label: "ID"
18
+ },
19
+ {
20
+ key: "deleted",
21
+ label: "Deleted"
22
+ },
23
+ {
24
+ key: "aborted",
25
+ label: "Aborted"
26
+ }
27
+ ]
28
+ };
29
+ async function confirmAndDelete(args) {
30
+ if (!args.yes) {
31
+ if (!process.stdin.isTTY) throw new ConfigError("--yes required to delete non-interactively");
32
+ const ok = await promptConfirm({
33
+ message: args.promptMessage,
34
+ initialValue: false
35
+ });
36
+ if (!ok) {
37
+ renderItem({
38
+ deleted: false,
39
+ aborted: true,
40
+ id: args.id
41
+ }, deleteResultView, args.ctx);
42
+ return;
43
+ }
44
+ }
45
+ await args.client.requestRaw(args.path, {
46
+ method: "DELETE",
47
+ expectContentType: "binary"
48
+ });
49
+ if (args.afterDelete) await args.afterDelete();
50
+ renderItem({
51
+ deleted: true,
52
+ aborted: false,
53
+ id: args.id
54
+ }, deleteResultView, args.ctx);
55
+ }
56
+
57
+ //#endregion
58
+ export { DeleteResult, confirmAndDelete };
@@ -0,0 +1,47 @@
1
+ import "./package-t8dKf4m_.mjs";
2
+ import "./command-augment-D9pI9Vbh.mjs";
3
+ import "./render-DlBijc5i.mjs";
4
+ import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-DUgFfYkN.mjs";
5
+ import { parseId } from "./parse-id-C1prc9US.mjs";
6
+ import "./prompt-fXeNtj0M.mjs";
7
+ import { DeleteResult, confirmAndDelete } from "./delete-runtime-inOVw3IX.mjs";
8
+
9
+ //#region src/commands/transform/delete-table.ts
10
+ var delete_table_default = defineMetabaseCommand({
11
+ meta: {
12
+ name: "delete-table",
13
+ description: "Drop a transform's materialized output table (keeps the transform definition)"
14
+ },
15
+ args: {
16
+ ...outputFlags,
17
+ ...profileFlag,
18
+ ...connectionFlags,
19
+ yes: {
20
+ type: "boolean",
21
+ description: "Skip confirmation",
22
+ default: false
23
+ },
24
+ id: {
25
+ type: "positional",
26
+ description: "Transform id",
27
+ required: true
28
+ }
29
+ },
30
+ outputSchema: DeleteResult,
31
+ examples: ["metabase transform delete-table 1 --yes", "metabase transform delete-table 1"],
32
+ async run({ args, ctx, getClient }) {
33
+ const id = parseId(args.id);
34
+ const client = await getClient();
35
+ await confirmAndDelete({
36
+ id,
37
+ path: `/api/transform/${id}/table`,
38
+ yes: args.yes,
39
+ promptMessage: `Drop transform ${id}'s output table?`,
40
+ client,
41
+ ctx
42
+ });
43
+ }
44
+ });
45
+
46
+ //#endregion
47
+ export { delete_table_default as default };
@@ -0,0 +1,60 @@
1
+ import "./package-t8dKf4m_.mjs";
2
+ import "./command-augment-D9pI9Vbh.mjs";
3
+ import "./render-DlBijc5i.mjs";
4
+ import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-DUgFfYkN.mjs";
5
+ import { parseId } from "./parse-id-C1prc9US.mjs";
6
+ import "./prompt-fXeNtj0M.mjs";
7
+ import "./poll-D2sXM5rc.mjs";
8
+ import { DeleteResult, confirmAndDelete } from "./delete-runtime-inOVw3IX.mjs";
9
+ import { parseWaitFlags, waitFlags } from "./wait-flags-CjW4ogUJ.mjs";
10
+ import "./workspace-Dr9lWU3D.mjs";
11
+ import { waitForDatabaseGone } from "./wait-DwZN3ZwR.mjs";
12
+
13
+ //#region src/commands/workspace/database/deprovision.ts
14
+ var deprovision_default = defineMetabaseCommand({
15
+ meta: {
16
+ name: "deprovision",
17
+ description: "Deprovision a database from a workspace"
18
+ },
19
+ args: {
20
+ ...outputFlags,
21
+ ...profileFlag,
22
+ ...connectionFlags,
23
+ ...waitFlags,
24
+ yes: {
25
+ type: "boolean",
26
+ description: "Skip confirmation",
27
+ default: false
28
+ },
29
+ id: {
30
+ type: "positional",
31
+ description: "Workspace id",
32
+ required: true
33
+ },
34
+ "db-id": {
35
+ type: "positional",
36
+ description: "Database id",
37
+ required: true
38
+ }
39
+ },
40
+ outputSchema: DeleteResult,
41
+ examples: ["metabase workspace database deprovision 1 5 --yes", "metabase workspace database deprovision 1 5 --yes --wait"],
42
+ async run({ args, ctx, getClient }) {
43
+ const workspaceId = parseId(args.id);
44
+ const databaseId = parseId(args["db-id"], "db-id");
45
+ const wait = parseWaitFlags(args);
46
+ const client = await getClient();
47
+ await confirmAndDelete({
48
+ id: databaseId,
49
+ path: `/api/ee/workspace-manager/${workspaceId}/database/${databaseId}`,
50
+ yes: args.yes,
51
+ promptMessage: `Deprovision database ${databaseId} from workspace ${workspaceId}?`,
52
+ client,
53
+ ctx,
54
+ ...wait.enabled ? { afterDelete: () => waitForDatabaseGone(client, workspaceId, databaseId, wait.schedule) } : {}
55
+ });
56
+ }
57
+ });
58
+
59
+ //#endregion
60
+ export { deprovision_default as default };
@@ -0,0 +1,32 @@
1
+ import "./package-t8dKf4m_.mjs";
2
+ import "./command-augment-D9pI9Vbh.mjs";
3
+ import { renderList } from "./render-DlBijc5i.mjs";
4
+ import { connectionFlags, defineMetabaseCommand, listEnvelopeSchema, outputFlags, profileFlag, wrapList } from "./runtime-DUgFfYkN.mjs";
5
+ import { REMOTE_SYNC_PATHS, SyncDirtyItem, SyncDirtyItemCompact, syncDirtyItemView } from "./poll-task-Byiunmaj.mjs";
6
+ import "./poll-D2sXM5rc.mjs";
7
+ import { z } from "zod";
8
+
9
+ //#region src/commands/sync/dirty.ts
10
+ const SyncDirtyApiResponse = z.object({ dirty: z.array(SyncDirtyItem) });
11
+ const SyncDirtyListEnvelope = listEnvelopeSchema(SyncDirtyItemCompact);
12
+ var dirty_default = defineMetabaseCommand({
13
+ meta: {
14
+ name: "dirty",
15
+ description: "List objects with unsynced local changes"
16
+ },
17
+ args: {
18
+ ...outputFlags,
19
+ ...profileFlag,
20
+ ...connectionFlags
21
+ },
22
+ outputSchema: SyncDirtyListEnvelope,
23
+ examples: ["metabase sync dirty", "metabase sync dirty --json"],
24
+ async run({ ctx, getClient }) {
25
+ const client = await getClient();
26
+ const response = await client.requestParsed(SyncDirtyApiResponse, REMOTE_SYNC_PATHS.dirty);
27
+ renderList(wrapList(response.dirty), syncDirtyItemView, ctx);
28
+ }
29
+ });
30
+
31
+ //#endregion
32
+ export { dirty_default as default };