@metabase/cli 0.1.0 → 0.1.2

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 (187) hide show
  1. package/README.md +972 -57
  2. package/dist/add-collection-DwxQDXzL.mjs +54 -0
  3. package/dist/add-collection-SL08iMub.mjs +11 -0
  4. package/dist/api-key-BktzvPb7.mjs +13 -0
  5. package/dist/{archive-CsWeHXle.mjs → archive-C1mF-9Kj.mjs} +7 -4
  6. package/dist/archive-CLWtbvvH.mjs +44 -0
  7. package/dist/archive-Cq4WKmJt.mjs +44 -0
  8. package/dist/archive-kYoy5LK5.mjs +39 -0
  9. package/dist/auth-DfYkakP3.mjs +19 -0
  10. package/dist/{body-Dv9hQ0Qk.mjs → body-rDrR-C1c.mjs} +3 -2
  11. package/dist/{branches-BujtceGr.mjs → branches-CH2UcCpX.mjs} +8 -6
  12. package/dist/cancel-CgLZcItQ.mjs +56 -0
  13. package/dist/{cancel-task-CT2xUMRg.mjs → cancel-task-DcYrFsM6.mjs} +9 -7
  14. package/dist/{card-CsXk8T6A.mjs → card-CQxvHeyP.mjs} +34 -15
  15. package/dist/card-ZCGU2JEh.mjs +20 -0
  16. package/dist/cards-C4NIaERo.mjs +37 -0
  17. package/dist/cli.mjs +33 -14
  18. package/dist/collection-B3sPXRLs.mjs +163 -0
  19. package/dist/collection-D_uFLIAS.mjs +19 -0
  20. package/dist/create-BUCLNqiN.mjs +48 -0
  21. package/dist/create-CB0Yp__0.mjs +66 -0
  22. package/dist/create-CNvd5T8h.mjs +48 -0
  23. package/dist/create-Cbh1cGj9.mjs +48 -0
  24. package/dist/create-CzfNOhOF.mjs +48 -0
  25. package/dist/create-DU0ZhnZu.mjs +44 -0
  26. package/dist/create-Dh0p-c2Y.mjs +44 -0
  27. package/dist/create-DvrVZ2hS.mjs +125 -0
  28. package/dist/create-QgN369N5.mjs +50 -0
  29. package/dist/{create-B8ektf-R.mjs → create-bqc_rmix.mjs} +8 -6
  30. package/dist/{create-branch-goZBTNnr.mjs → create-branch-BJFH9Hda.mjs} +9 -7
  31. package/dist/credentials-DTP1xuKz.mjs +85 -0
  32. package/dist/{current-task-DBjRNCFq.mjs → current-task-z_TiJ0kt.mjs} +9 -7
  33. package/dist/dashboard-CnMD04PQ.mjs +163 -0
  34. package/dist/dashboard-G1-dGLUR.mjs +20 -0
  35. package/dist/database-DQkUxTLd.mjs +17 -0
  36. package/dist/database-vvig8k4x.mjs +51 -0
  37. package/dist/db-CBaEfumR.mjs +22 -0
  38. package/dist/{delete-8vGU35r3.mjs → delete-CVYII8mq.mjs} +7 -5
  39. package/dist/{delete-B27KLF5X.mjs → delete-DeZQ1r9w.mjs} +7 -5
  40. package/dist/{delete-runtime-Byr60cR3.mjs → delete-runtime-BMzvfj_B.mjs} +4 -4
  41. package/dist/{delete-table-BNaJ_gA4.mjs → delete-table-ZiR9-ndv.mjs} +7 -5
  42. package/dist/deprovision-BhD3J-Am.mjs +61 -0
  43. package/dist/{dirty-aNUuph4I.mjs → dirty-D9agt7Os.mjs} +8 -6
  44. package/dist/docker-CHpV8PRz.mjs +612 -0
  45. package/dist/eid-B5wawMmO.mjs +13 -0
  46. package/dist/{export-QDkuuzSE.mjs → export-Bfk7JAlR.mjs} +30 -23
  47. package/dist/field-B3gvaqpK.mjs +278 -0
  48. package/dist/field-BDJ1pEgr.mjs +18 -0
  49. package/dist/fields-7ByLsxLg.mjs +38 -0
  50. package/dist/flag-pair-DtR1AiBQ.mjs +17 -0
  51. package/dist/get-BE6Izpus.mjs +36 -0
  52. package/dist/get-C3CcAJGg.mjs +49 -0
  53. package/dist/{get-DI_IJvgk.mjs → get-CQGeF-eP.mjs} +6 -4
  54. package/dist/get-D2m4jhwT.mjs +53 -0
  55. package/dist/{get-BGBIzMKY.mjs → get-DKy3DAJX.mjs} +6 -4
  56. package/dist/{get-COXHplHP.mjs → get-DUSR5i99.mjs} +7 -5
  57. package/dist/get-DikegGzi.mjs +36 -0
  58. package/dist/get-StkjKuh0.mjs +40 -0
  59. package/dist/get-bYc7eGYe.mjs +36 -0
  60. package/dist/{get-Cl8-IauC.mjs → get-cuHp9-6U.mjs} +7 -4
  61. package/dist/{get-i6LWOByV.mjs → get-gOT_RarI.mjs} +6 -4
  62. package/dist/get-run-D59Yqaoh.mjs +36 -0
  63. package/dist/get-tISo-cmg.mjs +41 -0
  64. package/dist/git-sync-BiTWfLgY.mjs +28 -0
  65. package/dist/{has-remote-changes-hjKoQuRy.mjs → has-remote-changes-B1TciDVD.mjs} +8 -6
  66. package/dist/{import-HJsSKRYx.mjs → import-DnnmmJbp.mjs} +11 -9
  67. package/dist/{input-Dojr-RTw.mjs → input-ikCiip6x.mjs} +2 -1
  68. package/dist/is-dirty-DClGFOGV.mjs +10 -0
  69. package/dist/{is-dirty-1Qy7hiHB.mjs → is-dirty-DlfX7e39.mjs} +5 -4
  70. package/dist/items-DQFQSpjF.mjs +77 -0
  71. package/dist/{key-DBxPSFwi.mjs → key-NDEARu2L.mjs} +1 -1
  72. package/dist/{license-MoWse3ZI.mjs → license-DBh13sc8.mjs} +3 -3
  73. package/dist/list-4kYCGv01.mjs +32 -0
  74. package/dist/list-9AOWhxqp.mjs +61 -0
  75. package/dist/{list-Bk6RsbJl.mjs → list-BwjqQ6pp.mjs} +5 -3
  76. package/dist/{list-C_PRdL5e.mjs → list-CP5RNjO6.mjs} +7 -5
  77. package/dist/{list-C8tdLOH5.mjs → list-Cy0VhXQs.mjs} +5 -3
  78. package/dist/list-D067ZSE5.mjs +47 -0
  79. package/dist/list-DAZP-IM5.mjs +32 -0
  80. package/dist/list-DJN-OvTZ.mjs +52 -0
  81. package/dist/list-DQj-QJAs.mjs +40 -0
  82. package/dist/list-Di529OJD.mjs +55 -0
  83. package/dist/{list-C4Ajrw8f.mjs → list-DlKzgnqo.mjs} +6 -3
  84. package/dist/list-GFfR9SuT.mjs +32 -0
  85. package/dist/{list-CWt3fqrZ.mjs → list-iFVEdi2J.mjs} +5 -3
  86. package/dist/{login-C9WTwNn6.mjs → login-DxgkosGx.mjs} +30 -9
  87. package/dist/{logout-oLszGCOg.mjs → logout-BlVwqBog.mjs} +7 -6
  88. package/dist/logs-CudNEkT4.mjs +58 -0
  89. package/dist/{manifest-CAdjQYH8.mjs → manifest-Dv5B9Blc.mjs} +3 -7
  90. package/dist/measure-BEQfnLdN.mjs +67 -0
  91. package/dist/measure-C7SbdYQk.mjs +19 -0
  92. package/dist/metadata-B2Td415K.mjs +38 -0
  93. package/dist/metadata-BTJAFVvZ.mjs +37 -0
  94. package/dist/{package-BGfw4ZWJ.mjs → package-DV6Asqim.mjs} +7 -1
  95. package/dist/paginate-CTSfuYiF.mjs +49 -0
  96. package/dist/parse-id-B38zTlYs.mjs +12 -0
  97. package/dist/parse-ref-DGvh4aDn.mjs +17 -0
  98. package/dist/parse-schemas-Ds-cVE-O.mjs +12 -0
  99. package/dist/{poll-ILanYysl.mjs → poll-Bh6oAifO.mjs} +2 -1
  100. package/dist/{poll-task-DbpsiQhl.mjs → poll-task-vPwV31Fs.mjs} +8 -7
  101. package/dist/predicates-DiIiS3k7.mjs +153 -0
  102. package/dist/preflight-DxJb-hUV.mjs +91 -0
  103. package/dist/{prompt-DpT8yAVy.mjs → prompt-Bf3DQ-qE.mjs} +1 -1
  104. package/dist/provision-B-I0zuDe.mjs +77 -0
  105. package/dist/ps-BmYQYC7t.mjs +10 -0
  106. package/dist/ps-CaiOFCv2.mjs +78 -0
  107. package/dist/query-BtF1yWZZ.mjs +90 -0
  108. package/dist/{query-PihYi-UZ.mjs → query-jmfqaXRP.mjs} +38 -13
  109. package/dist/remove-C2iv0g03.mjs +98 -0
  110. package/dist/remove-collection-DhZghaZy.mjs +38 -0
  111. package/dist/{remove-B2hVYn1v.mjs → remove-xskleeru.mjs} +6 -5
  112. package/dist/render-DXv-D6fU.mjs +182 -0
  113. package/dist/rescan-values-DW6u90ep.mjs +43 -0
  114. package/dist/revision-message-flag-CWQbKhdl.mjs +11 -0
  115. package/dist/{run-C2so6Qp6.mjs → run-DxVzhcF3.mjs} +27 -36
  116. package/dist/runs-BOHk1XnM.mjs +54 -0
  117. package/dist/{runtime-C9CEZhcn.mjs → runtime-cwBS8wwK.mjs} +428 -442
  118. package/dist/schema-tables-CcFbY_jN.mjs +45 -0
  119. package/dist/schemas-DZmv_V62.mjs +47 -0
  120. package/dist/{search-CopOytXY.mjs → search-CYMuc7Fg.mjs} +6 -19
  121. package/dist/segment-BMrUBz94.mjs +70 -0
  122. package/dist/segment-Df4pfjco.mjs +19 -0
  123. package/dist/{set-BcF7M1GQ.mjs → set-B_rrVwU4.mjs} +6 -4
  124. package/dist/{set-CbibegpA.mjs → set-CbGfQ7Ye.mjs} +8 -6
  125. package/dist/{setting-U3NtBMFo.mjs → setting-DqZY9NXP.mjs} +3 -3
  126. package/dist/setup-DxmcAorA.mjs +71 -0
  127. package/dist/snippet-CwSHjQyn.mjs +19 -0
  128. package/dist/snippet-Dw0Sjzkr.mjs +64 -0
  129. package/dist/start-Cn0epTks.mjs +380 -0
  130. package/dist/{stash-DOBbYozC.mjs → stash-BFZIl9F4.mjs} +9 -7
  131. package/dist/{status-Buf1ZbNR.mjs → status-BjCeJNLp.mjs} +10 -8
  132. package/dist/{status-CUcs8XBH.mjs → status-FDIDmqvM.mjs} +4 -2
  133. package/dist/{status-D1F5XHae.mjs → status-UALK3OJl.mjs} +4 -2
  134. package/dist/stop-DUwrDWw8.mjs +81 -0
  135. package/dist/summary-CS4UGiFJ.mjs +41 -0
  136. package/dist/sync-schema-IrHdJxmX.mjs +43 -0
  137. package/dist/{table-Cfk7oSvw.mjs → table-B-PYcgGb.mjs} +22 -9
  138. package/dist/table-Cdr5bKp1.mjs +19 -0
  139. package/dist/transform-CeZusR_w.mjs +24 -0
  140. package/dist/{transform-B5uRpg1G.mjs → transform-IEX4Mx3X.mjs} +56 -2
  141. package/dist/transform-job-BOn9-CGa.mjs +19 -0
  142. package/dist/{transform-job-C7QXWTVE.mjs → transform-job-Csr86muI.mjs} +7 -0
  143. package/dist/translate-B__zbDKm.mjs +111 -0
  144. package/dist/tree-Mh0uQ_Wy.mjs +32 -0
  145. package/dist/update-1Di9hbPo.mjs +56 -0
  146. package/dist/update-B5_pp6Jj.mjs +56 -0
  147. package/dist/update-B9DBMo30.mjs +52 -0
  148. package/dist/update-BfBsM_y1.mjs +56 -0
  149. package/dist/update-Bw0WZix_.mjs +73 -0
  150. package/dist/update-Cp1789qq.mjs +52 -0
  151. package/dist/update-D2VI_5cy.mjs +57 -0
  152. package/dist/update-D8GwQTcL.mjs +59 -0
  153. package/dist/{update-CL8tRbxr.mjs → update-Masp5WeT.mjs} +9 -7
  154. package/dist/update-dashcard-CNiQw1MD.mjs +71 -0
  155. package/dist/update-j9vgemKR.mjs +51 -0
  156. package/dist/url-GFM76VIK.mjs +54 -0
  157. package/dist/uuid-Uif0lNk8.mjs +47 -0
  158. package/dist/validate-DCYx6jdL.mjs +1496 -0
  159. package/dist/validate-query-B07oGG4K.mjs +37 -0
  160. package/dist/values-DrwNHUAI.mjs +36 -0
  161. package/dist/{wait-Bugr9eXD.mjs → wait-BoKk8CJy.mjs} +10 -8
  162. package/dist/wait-DO7tS7NI.mjs +19 -0
  163. package/dist/wait-flags-CjX2sEGm.mjs +35 -0
  164. package/dist/workspace-CyEX40D-.mjs +24 -0
  165. package/dist/workspace-DVuqKJGG.mjs +72 -0
  166. package/dist/workspace-credentials-B6BL-X0d.mjs +139 -0
  167. package/package.json +7 -1
  168. package/dist/auth-BF7IjZIH.mjs +0 -18
  169. package/dist/card-_Ta7zdYe.mjs +0 -19
  170. package/dist/create-CI2Cunq5.mjs +0 -38
  171. package/dist/create-DdbU3TLX.mjs +0 -42
  172. package/dist/database-PA9Goi25.mjs +0 -33
  173. package/dist/db-DMghzgb6.mjs +0 -17
  174. package/dist/field-C8IVs6rp.mjs +0 -76
  175. package/dist/field-DaYo_90x.mjs +0 -13
  176. package/dist/get-Cwpj7lDe.mjs +0 -35
  177. package/dist/get-Dh_acl8q.mjs +0 -34
  178. package/dist/is-dirty-DpKn9HJp.mjs +0 -8
  179. package/dist/list-CBSBHtK-.mjs +0 -38
  180. package/dist/parse-id-BhmmfyCP.mjs +0 -14
  181. package/dist/sync-BPyGXfUk.mjs +0 -26
  182. package/dist/table-D7nJt7JO.mjs +0 -16
  183. package/dist/transform-UbyewMxY.mjs +0 -21
  184. package/dist/transform-job-CrYkr-Ma.mjs +0 -19
  185. package/dist/update-DU2oU2j-.mjs +0 -49
  186. /package/dist/{body-flags-BUA9XV1u.mjs → body-flags-BK7J6Daz.mjs} +0 -0
  187. /package/dist/{setting-26ckqHAP.mjs → setting-CTaAeMci.mjs} +0 -0
@@ -0,0 +1,73 @@
1
+ import "./package-DV6Asqim.mjs";
2
+ import "./command-augment-D9pI9Vbh.mjs";
3
+ import { renderItem } from "./render-DXv-D6fU.mjs";
4
+ import "./predicates-DiIiS3k7.mjs";
5
+ import "./input-ikCiip6x.mjs";
6
+ import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-cwBS8wwK.mjs";
7
+ import { readBody } from "./body-rDrR-C1c.mjs";
8
+ import { bodyInputFlags } from "./body-flags-BK7J6Daz.mjs";
9
+ import { parseId } from "./parse-id-B38zTlYs.mjs";
10
+ import "./poll-Bh6oAifO.mjs";
11
+ import { parseWaitFlags, waitFlags } from "./wait-flags-CjX2sEGm.mjs";
12
+ import { Workspace, WorkspaceUpdateDatabaseInput, workspaceView } from "./workspace-DVuqKJGG.mjs";
13
+ import { waitForDatabaseProvisioned } from "./wait-DO7tS7NI.mjs";
14
+ import { parseSchemasCsv } from "./parse-schemas-Ds-cVE-O.mjs";
15
+
16
+ //#region src/commands/workspace/database/update.ts
17
+ var update_default = defineMetabaseCommand({
18
+ meta: {
19
+ name: "update",
20
+ description: "Update a workspace's database (deprovisions then re-provisions with new input schemas)"
21
+ },
22
+ args: {
23
+ ...outputFlags,
24
+ ...profileFlag,
25
+ ...connectionFlags,
26
+ ...bodyInputFlags,
27
+ ...waitFlags,
28
+ schemas: {
29
+ type: "string",
30
+ description: "Comma-separated input schemas (alternative to --body / --file)"
31
+ },
32
+ id: {
33
+ type: "positional",
34
+ description: "Workspace id",
35
+ required: true
36
+ },
37
+ "db-id": {
38
+ type: "positional",
39
+ description: "Database id",
40
+ required: true
41
+ }
42
+ },
43
+ outputSchema: Workspace,
44
+ examples: [
45
+ "metabase workspace database update 1 5 --schemas analytics,github",
46
+ "metabase workspace database update 1 5 --schemas analytics --wait",
47
+ "metabase workspace database update 1 5 --file update.json"
48
+ ],
49
+ async run({ args, ctx, getClient }) {
50
+ const workspaceId = parseId(args.id);
51
+ const databaseId = parseId(args["db-id"], "db-id");
52
+ const schemasFlag = args.schemas;
53
+ const wait = parseWaitFlags(args);
54
+ let body;
55
+ if (schemasFlag !== void 0 && schemasFlag !== "") {
56
+ const input_schemas = parseSchemasCsv(schemasFlag);
57
+ body = WorkspaceUpdateDatabaseInput.parse({ input_schemas });
58
+ } else body = await readBody({
59
+ flag: args.body,
60
+ file: args.file
61
+ }, WorkspaceUpdateDatabaseInput);
62
+ const client = await getClient();
63
+ const initial = await client.requestParsed(Workspace, `/api/ee/workspace-manager/${workspaceId}/database/${databaseId}`, {
64
+ method: "PUT",
65
+ body
66
+ });
67
+ const final = wait.enabled ? await waitForDatabaseProvisioned(client, workspaceId, databaseId, wait.schedule) : initial;
68
+ renderItem(final, workspaceView, ctx);
69
+ }
70
+ });
71
+
72
+ //#endregion
73
+ export { update_default as default };
@@ -0,0 +1,52 @@
1
+ import "./package-DV6Asqim.mjs";
2
+ import "./command-augment-D9pI9Vbh.mjs";
3
+ import { renderItem } from "./render-DXv-D6fU.mjs";
4
+ import "./predicates-DiIiS3k7.mjs";
5
+ import "./input-ikCiip6x.mjs";
6
+ import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-cwBS8wwK.mjs";
7
+ import { readBody } from "./body-rDrR-C1c.mjs";
8
+ import { bodyInputFlags } from "./body-flags-BK7J6Daz.mjs";
9
+ import { parseId } from "./parse-id-B38zTlYs.mjs";
10
+ import "./field-B3gvaqpK.mjs";
11
+ import { Table, TableUpdateInput, tableView } from "./table-B-PYcgGb.mjs";
12
+
13
+ //#region src/commands/table/update.ts
14
+ var update_default = defineMetabaseCommand({
15
+ meta: {
16
+ name: "update",
17
+ description: "Update a table (display name, description, visibility, etc.)"
18
+ },
19
+ args: {
20
+ ...outputFlags,
21
+ ...profileFlag,
22
+ ...connectionFlags,
23
+ ...bodyInputFlags,
24
+ id: {
25
+ type: "positional",
26
+ description: "Table id",
27
+ required: true
28
+ }
29
+ },
30
+ outputSchema: Table,
31
+ examples: [
32
+ "metabase table update 42 --body '{\"display_name\":\"Customers\"}'",
33
+ "metabase table update 42 --file patch.json",
34
+ "cat patch.json | metabase table update 42"
35
+ ],
36
+ async run({ args, ctx, getClient }) {
37
+ const id = parseId(args.id);
38
+ const body = await readBody({
39
+ flag: args.body,
40
+ file: args.file
41
+ }, TableUpdateInput);
42
+ const client = await getClient();
43
+ const updated = await client.requestParsed(Table, `/api/table/${id}`, {
44
+ method: "PUT",
45
+ body
46
+ });
47
+ renderItem(updated, tableView, ctx);
48
+ }
49
+ });
50
+
51
+ //#endregion
52
+ export { update_default as default };
@@ -0,0 +1,57 @@
1
+ import "./package-DV6Asqim.mjs";
2
+ import "./command-augment-D9pI9Vbh.mjs";
3
+ import { renderItem } from "./render-DXv-D6fU.mjs";
4
+ import "./predicates-DiIiS3k7.mjs";
5
+ import "./input-ikCiip6x.mjs";
6
+ import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-cwBS8wwK.mjs";
7
+ import { readBody } from "./body-rDrR-C1c.mjs";
8
+ import { bodyInputFlags } from "./body-flags-BK7J6Daz.mjs";
9
+ import { parseId } from "./parse-id-B38zTlYs.mjs";
10
+ import "./field-B3gvaqpK.mjs";
11
+ import "./card-CQxvHeyP.mjs";
12
+ import "./validate-DCYx6jdL.mjs";
13
+ import { DashboardDetail, DashboardUpdateInput, dashboardView } from "./dashboard-CnMD04PQ.mjs";
14
+ import { preflightDashcardCardReferences } from "./preflight-DxJb-hUV.mjs";
15
+
16
+ //#region src/commands/dashboard/update.ts
17
+ var update_default = defineMetabaseCommand({
18
+ meta: {
19
+ name: "update",
20
+ description: "Update a dashboard (and optionally its dashcards/tabs) by id; any positive card_id referenced from dashcards is pre-flight-validated against /api/card/:id (exists, not archived) before the PUT"
21
+ },
22
+ args: {
23
+ ...outputFlags,
24
+ ...profileFlag,
25
+ ...connectionFlags,
26
+ ...bodyInputFlags,
27
+ id: {
28
+ type: "positional",
29
+ description: "Dashboard id",
30
+ required: true
31
+ }
32
+ },
33
+ outputSchema: DashboardDetail,
34
+ examples: [
35
+ "cat patch.json | metabase dashboard update 1",
36
+ "metabase dashboard update 1 --file patch.json",
37
+ "metabase dashboard update 1 --body '{\"name\":\"renamed\"}'",
38
+ "metabase dashboard update 1 --body '{\"dashcards\":[{\"id\":-1,\"card_id\":42,\"row\":0,\"col\":0,\"size_x\":12,\"size_y\":6}]}'"
39
+ ],
40
+ async run({ args, ctx, getClient }) {
41
+ const id = parseId(args.id);
42
+ const body = await readBody({
43
+ flag: args.body,
44
+ file: args.file
45
+ }, DashboardUpdateInput);
46
+ const client = await getClient();
47
+ await preflightDashcardCardReferences(client, body.dashcards);
48
+ const updated = await client.requestParsed(DashboardDetail, `/api/dashboard/${id}`, {
49
+ method: "PUT",
50
+ body
51
+ });
52
+ renderItem(updated, dashboardView, ctx);
53
+ }
54
+ });
55
+
56
+ //#endregion
57
+ export { update_default as default };
@@ -0,0 +1,59 @@
1
+ import "./package-DV6Asqim.mjs";
2
+ import "./command-augment-D9pI9Vbh.mjs";
3
+ import { renderItem } from "./render-DXv-D6fU.mjs";
4
+ import "./predicates-DiIiS3k7.mjs";
5
+ import "./input-ikCiip6x.mjs";
6
+ import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-cwBS8wwK.mjs";
7
+ import { readBody } from "./body-rDrR-C1c.mjs";
8
+ import { bodyInputFlags } from "./body-flags-BK7J6Daz.mjs";
9
+ import { parseId } from "./parse-id-B38zTlYs.mjs";
10
+ import "./field-B3gvaqpK.mjs";
11
+ import { Card, CardUpdateInput, cardView } from "./card-CQxvHeyP.mjs";
12
+ import "./validate-DCYx6jdL.mjs";
13
+ import { CARD_DATASET_QUERY_LABELS, preflightMbql5Query, skipValidateFlag } from "./validate-query-B07oGG4K.mjs";
14
+
15
+ //#region src/commands/card/update.ts
16
+ var update_default = defineMetabaseCommand({
17
+ meta: {
18
+ name: "update",
19
+ description: "Update a card by id; if dataset_query is MBQL 5 (lib/type: mbql/query) it is pre-flight-validated against the same schema as `metabase query` (see `metabase query --print-schema`)"
20
+ },
21
+ args: {
22
+ ...outputFlags,
23
+ ...profileFlag,
24
+ ...connectionFlags,
25
+ ...bodyInputFlags,
26
+ ...skipValidateFlag,
27
+ id: {
28
+ type: "positional",
29
+ description: "Card id",
30
+ required: true
31
+ }
32
+ },
33
+ outputSchema: Card,
34
+ examples: [
35
+ "cat patch.json | metabase card update 1",
36
+ "metabase card update 1 --file patch.json",
37
+ "metabase card update 1 --body '{\"name\":\"renamed\"}'",
38
+ "metabase card update 1 --body '{\"display\":\"bar\"}'",
39
+ "metabase card update 1 --body '{\"archived\":true}'",
40
+ "metabase card update 1 --file patch.json --skip-validate"
41
+ ],
42
+ async run({ args, ctx, getClient }) {
43
+ const id = parseId(args.id);
44
+ const body = await readBody({
45
+ flag: args.body,
46
+ file: args.file
47
+ }, CardUpdateInput);
48
+ preflightMbql5Query(body.dataset_query, CARD_DATASET_QUERY_LABELS, { skip: args["skip-validate"] === true });
49
+ const client = await getClient();
50
+ const updated = await client.requestParsed(Card, `/api/card/${id}`, {
51
+ method: "PUT",
52
+ body
53
+ });
54
+ renderItem(updated, cardView, ctx);
55
+ }
56
+ });
57
+
58
+ //#endregion
59
+ export { update_default as default };
@@ -1,11 +1,13 @@
1
- import "./package-BGfw4ZWJ.mjs";
1
+ import "./package-DV6Asqim.mjs";
2
2
  import "./command-augment-D9pI9Vbh.mjs";
3
- import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag, renderItem } from "./runtime-C9CEZhcn.mjs";
4
- import "./input-Dojr-RTw.mjs";
5
- import { parseId } from "./parse-id-BhmmfyCP.mjs";
6
- import { readBody } from "./body-Dv9hQ0Qk.mjs";
7
- import { bodyInputFlags } from "./body-flags-BUA9XV1u.mjs";
8
- import { TransformJob, TransformJobUpdateInput, transformJobView } from "./transform-job-C7QXWTVE.mjs";
3
+ import { renderItem } from "./render-DXv-D6fU.mjs";
4
+ import "./predicates-DiIiS3k7.mjs";
5
+ import "./input-ikCiip6x.mjs";
6
+ import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-cwBS8wwK.mjs";
7
+ import { readBody } from "./body-rDrR-C1c.mjs";
8
+ import { bodyInputFlags } from "./body-flags-BK7J6Daz.mjs";
9
+ import { parseId } from "./parse-id-B38zTlYs.mjs";
10
+ import { TransformJob, TransformJobUpdateInput, transformJobView } from "./transform-job-Csr86muI.mjs";
9
11
 
10
12
  //#region src/commands/transform-job/update.ts
11
13
  var update_default = defineMetabaseCommand({
@@ -0,0 +1,71 @@
1
+ import "./package-DV6Asqim.mjs";
2
+ import "./command-augment-D9pI9Vbh.mjs";
3
+ import { renderItem } from "./render-DXv-D6fU.mjs";
4
+ import { ConfigError } from "./predicates-DiIiS3k7.mjs";
5
+ import "./input-ikCiip6x.mjs";
6
+ import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-cwBS8wwK.mjs";
7
+ import { readBody } from "./body-rDrR-C1c.mjs";
8
+ import { bodyInputFlags } from "./body-flags-BK7J6Daz.mjs";
9
+ import { parseId } from "./parse-id-B38zTlYs.mjs";
10
+ import { DashboardDetail, Dashcard, DashcardPatchInput, dashcardView } from "./dashboard-CnMD04PQ.mjs";
11
+
12
+ //#region src/commands/dashboard/update-dashcard.ts
13
+ var update_dashcard_default = defineMetabaseCommand({
14
+ meta: {
15
+ name: "update-dashcard",
16
+ description: "Patch a single dashcard's layout or settings on a dashboard"
17
+ },
18
+ args: {
19
+ ...outputFlags,
20
+ ...profileFlag,
21
+ ...connectionFlags,
22
+ ...bodyInputFlags,
23
+ "dashboard-id": {
24
+ type: "positional",
25
+ description: "Dashboard id",
26
+ required: true
27
+ },
28
+ "dashcard-id": {
29
+ type: "positional",
30
+ description: "Dashcard id",
31
+ required: true
32
+ }
33
+ },
34
+ outputSchema: Dashcard,
35
+ examples: [
36
+ "metabase dashboard update-dashcard 1 5 --body '{\"row\":2,\"col\":0}'",
37
+ "metabase dashboard update-dashcard 1 5 --body '{\"size_x\":12,\"size_y\":4}'",
38
+ "cat patch.json | metabase dashboard update-dashcard 1 5"
39
+ ],
40
+ async run({ args, ctx, getClient }) {
41
+ const dashboardId = parseId(args["dashboard-id"], "dashboard-id");
42
+ const dashcardId = parseId(args["dashcard-id"], "dashcard-id");
43
+ const patch = await readBody({
44
+ flag: args.body,
45
+ file: args.file
46
+ }, DashcardPatchInput);
47
+ const client = await getClient();
48
+ const dashboard = await client.requestParsed(DashboardDetail, `/api/dashboard/${dashboardId}`);
49
+ const target = dashboard.dashcards.find((dashcard) => dashcard.id === dashcardId);
50
+ if (target === void 0) throw new ConfigError(`dashcard ${dashcardId} not found on dashboard ${dashboardId}`);
51
+ const patched = Dashcard.parse({
52
+ ...target,
53
+ ...patch
54
+ });
55
+ const updatedDashcards = dashboard.dashcards.map((dashcard) => stripEntityId(dashcard.id === dashcardId ? patched : dashcard));
56
+ const result = await client.requestParsed(DashboardDetail, `/api/dashboard/${dashboardId}`, {
57
+ method: "PUT",
58
+ body: { dashcards: updatedDashcards }
59
+ });
60
+ const refreshed = result.dashcards.find((dashcard) => dashcard.id === dashcardId);
61
+ if (refreshed === void 0) throw new Error(`PUT /api/dashboard/${dashboardId}: dashcard ${dashcardId} missing from response`);
62
+ renderItem(refreshed, dashcardView, ctx);
63
+ }
64
+ });
65
+ function stripEntityId(dashcard) {
66
+ const { entity_id: _entity_id,...rest } = dashcard;
67
+ return rest;
68
+ }
69
+
70
+ //#endregion
71
+ export { update_dashcard_default as default };
@@ -0,0 +1,51 @@
1
+ import "./package-DV6Asqim.mjs";
2
+ import "./command-augment-D9pI9Vbh.mjs";
3
+ import { renderItem } from "./render-DXv-D6fU.mjs";
4
+ import "./predicates-DiIiS3k7.mjs";
5
+ import "./input-ikCiip6x.mjs";
6
+ import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-cwBS8wwK.mjs";
7
+ import { readBody } from "./body-rDrR-C1c.mjs";
8
+ import { bodyInputFlags } from "./body-flags-BK7J6Daz.mjs";
9
+ import { parseId } from "./parse-id-B38zTlYs.mjs";
10
+ import { Field, FieldUpdateInput, fieldView } from "./field-B3gvaqpK.mjs";
11
+
12
+ //#region src/commands/field/update.ts
13
+ var update_default = defineMetabaseCommand({
14
+ meta: {
15
+ name: "update",
16
+ description: "Update a field (description, semantic_type, FK target, visibility, etc.)"
17
+ },
18
+ args: {
19
+ ...outputFlags,
20
+ ...profileFlag,
21
+ ...connectionFlags,
22
+ ...bodyInputFlags,
23
+ id: {
24
+ type: "positional",
25
+ description: "Field id",
26
+ required: true
27
+ }
28
+ },
29
+ outputSchema: Field,
30
+ examples: [
31
+ "metabase field update 100 --body '{\"description\":\"customer email\"}'",
32
+ "metabase field update 100 --file patch.json",
33
+ "cat patch.json | metabase field update 100"
34
+ ],
35
+ async run({ args, ctx, getClient }) {
36
+ const id = parseId(args.id);
37
+ const body = await readBody({
38
+ flag: args.body,
39
+ file: args.file
40
+ }, FieldUpdateInput);
41
+ const client = await getClient();
42
+ const updated = await client.requestParsed(Field, `/api/field/${id}`, {
43
+ method: "PUT",
44
+ body
45
+ });
46
+ renderItem(updated, fieldView, ctx);
47
+ }
48
+ });
49
+
50
+ //#endregion
51
+ export { update_default as default };
@@ -0,0 +1,54 @@
1
+ import "./package-DV6Asqim.mjs";
2
+ import "./command-augment-D9pI9Vbh.mjs";
3
+ import { renderItem } from "./render-DXv-D6fU.mjs";
4
+ import "./predicates-DiIiS3k7.mjs";
5
+ import { defineMetabaseCommand, localUrl, outputFlags } from "./runtime-cwBS8wwK.mjs";
6
+ import { parseId } from "./parse-id-B38zTlYs.mjs";
7
+ import "./poll-Bh6oAifO.mjs";
8
+ import { checkDockerReady, requireWorkspaceContainerLocation } from "./docker-CHpV8PRz.mjs";
9
+ import { z } from "zod";
10
+
11
+ //#region src/commands/workspace/url.ts
12
+ const UrlResult = z.object({
13
+ workspace_id: z.number().int().positive(),
14
+ url: z.string()
15
+ });
16
+ const urlResultView = {
17
+ compactPick: UrlResult,
18
+ tableColumns: [{
19
+ key: "workspace_id",
20
+ label: "ID"
21
+ }, {
22
+ key: "url",
23
+ label: "URL"
24
+ }]
25
+ };
26
+ var url_default = defineMetabaseCommand({
27
+ meta: {
28
+ name: "url",
29
+ description: "Print the local URL the workspace's container is bound to"
30
+ },
31
+ args: {
32
+ ...outputFlags,
33
+ id: {
34
+ type: "positional",
35
+ description: "Workspace id",
36
+ required: true
37
+ }
38
+ },
39
+ outputSchema: UrlResult,
40
+ examples: ["metabase workspace url 1", "metabase workspace url 1 --json"],
41
+ async run({ args, ctx }) {
42
+ const workspaceId = parseId(args.id);
43
+ await checkDockerReady();
44
+ const { hostPort } = await requireWorkspaceContainerLocation(workspaceId);
45
+ const result = {
46
+ workspace_id: workspaceId,
47
+ url: localUrl(hostPort)
48
+ };
49
+ renderItem(result, urlResultView, ctx);
50
+ }
51
+ });
52
+
53
+ //#endregion
54
+ export { url_default as default };
@@ -0,0 +1,47 @@
1
+ import "./package-DV6Asqim.mjs";
2
+ import "./command-augment-D9pI9Vbh.mjs";
3
+ import { writeJson, writeText } from "./render-DXv-D6fU.mjs";
4
+ import { ConfigError } from "./predicates-DiIiS3k7.mjs";
5
+ import { defineMetabaseCommand, outputFlags, parseInteger } from "./runtime-cwBS8wwK.mjs";
6
+ import { z } from "zod";
7
+ import { randomUUID } from "node:crypto";
8
+
9
+ //#region src/commands/uuid.ts
10
+ const MAX_COUNT = 1e4;
11
+ const UuidList = z.array(z.string().uuid());
12
+ var uuid_default = defineMetabaseCommand({
13
+ meta: {
14
+ name: "uuid",
15
+ description: "Mint UUID v4 strings (Node crypto.randomUUID) for MBQL `lib/uuid` slots, native template-tag ids, etc. Agents must call this to obtain UUIDs rather than authoring them by hand — hand-written placeholders fail the bundled MBQL 5 schema's `format: \"uuid\"` check."
16
+ },
17
+ args: {
18
+ ...outputFlags,
19
+ count: {
20
+ type: "string",
21
+ description: `How many UUIDs to mint (default 1, max ${MAX_COUNT})`,
22
+ default: "1"
23
+ }
24
+ },
25
+ outputSchema: UuidList,
26
+ examples: [
27
+ "metabase uuid",
28
+ "metabase uuid --count 5",
29
+ "metabase uuid --count 5 --json"
30
+ ],
31
+ run({ args, ctx }) {
32
+ const count = parseInteger(args.count, {
33
+ name: "--count",
34
+ min: 1
35
+ });
36
+ if (count > MAX_COUNT) throw new ConfigError(`invalid --count: ${count} (must be ≤ ${MAX_COUNT})`);
37
+ const uuids = Array.from({ length: count }, () => randomUUID());
38
+ if (ctx.format === "json") {
39
+ writeJson(uuids);
40
+ return;
41
+ }
42
+ writeText(uuids.join("\n"));
43
+ }
44
+ });
45
+
46
+ //#endregion
47
+ export { uuid_default as default };