@metabase/cli 0.1.4 → 0.1.6

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 (218) hide show
  1. package/.claude-plugin/marketplace.json +19 -0
  2. package/README.md +147 -101
  3. package/dist/{add-collection-CffaBB-Y.mjs → add-collection-BU8r3r2M.mjs} +9 -4
  4. package/dist/add-collection-C0w6ACQF.mjs +11 -0
  5. package/dist/{archive-uJrslh9r.mjs → archive-BNinrUak.mjs} +9 -8
  6. package/dist/{archive-GdGm7l2e.mjs → archive-C1enZgKV.mjs} +8 -7
  7. package/dist/archive-CDA0KxL8.mjs +40 -0
  8. package/dist/{archive-BAcEXbT9.mjs → archive-CRhiBpPJ.mjs} +9 -8
  9. package/dist/{archive-B_B3MQp0.mjs → archive-DMPS8Kih.mjs} +9 -8
  10. package/dist/archive-lWgqiFAt.mjs +40 -0
  11. package/dist/auth-CzXb_zB2.mjs +19 -0
  12. package/dist/{body-D6dHGjMT.mjs → body-DjdFxjpg.mjs} +4 -4
  13. package/dist/{branches-Bpe40fEd.mjs → branches-B1WRfG7-.mjs} +11 -7
  14. package/dist/{cancel-BWTY6oYI.mjs → cancel-Dl_Ho056.mjs} +7 -6
  15. package/dist/{cancel-task--BfiAXfS.mjs → cancel-task-CdigdCaO.mjs} +11 -7
  16. package/dist/capabilities-7e9MgquN.mjs +29 -0
  17. package/dist/card-DP4rfoOi.mjs +21 -0
  18. package/dist/{card-CQxvHeyP.mjs → card-DlCAaAPq.mjs} +1 -1
  19. package/dist/{cards-CVlFJxYh.mjs → cards-BGiJS675.mjs} +8 -7
  20. package/dist/cli.mjs +267 -44
  21. package/dist/collection-tY18ezvn.mjs +21 -0
  22. package/dist/{predicates-CGO17Q15.mjs → command-augment-BH9qgQ5u.mjs} +66 -14
  23. package/dist/create-BNiva__H.mjs +52 -0
  24. package/dist/{create-izE3EKCt.mjs → create-BTcpaop_.mjs} +9 -8
  25. package/dist/{create-BykvNpSA.mjs → create-BYlIju0b.mjs} +14 -12
  26. package/dist/{create-Bu-YhIDL.mjs → create-Be_0Vier.mjs} +10 -9
  27. package/dist/{create-DYoc9IXW.mjs → create-CHF313Qg.mjs} +13 -9
  28. package/dist/{create-Cz3_Wxdt.mjs → create-CwGtmwqm.mjs} +14 -12
  29. package/dist/{create-DP8RrLDi.mjs → create-CzzrbL0u.mjs} +10 -9
  30. package/dist/{create-BzElku2l.mjs → create-DGth_uOp.mjs} +14 -12
  31. package/dist/{create-branch-B49UQyCK.mjs → create-branch-DKZkoQ64.mjs} +11 -7
  32. package/dist/{create-DQVdMT2Y.mjs → create-dhxPxfF3.mjs} +16 -14
  33. package/dist/{credentials-xKSoP6eh.mjs → credentials-dzeq7ckm.mjs} +12 -10
  34. package/dist/{current-task-DweHmjlk.mjs → current-task-CCRzm0_7.mjs} +11 -7
  35. package/dist/dashboard-ChM_Tu0l.mjs +22 -0
  36. package/dist/{dashboard-CnMD04PQ.mjs → dashboard-FY5UzJ_Z.mjs} +2 -1
  37. package/dist/{database-BNlvldUL.mjs → database-CIXwHKjK.mjs} +3 -3
  38. package/dist/{database-vvig8k4x.mjs → database-lH-B3G1I.mjs} +1 -1
  39. package/dist/db-DrQn_i3W.mjs +22 -0
  40. package/dist/{remove-B3ZEqBF7.mjs → delete-CM3jnAeQ.mjs} +21 -20
  41. package/dist/{delete-DojHmKeM.mjs → delete-Dimc-2y8.mjs} +9 -8
  42. package/dist/{delete-DIz9Tgz5.mjs → delete-ZjnV35OJ.mjs} +9 -8
  43. package/dist/{delete-runtime-BkAdygbs.mjs → delete-runtime-B6RQo_pw.mjs} +5 -3
  44. package/dist/{delete-table-DjN8E3sd.mjs → delete-table-agZJpivt.mjs} +9 -8
  45. package/dist/{deprovision-_HDcBApz.mjs → deprovision-CwxcIT3k.mjs} +16 -12
  46. package/dist/{dirty-Co8V0SZ3.mjs → dirty-D4d0yHqj.mjs} +11 -7
  47. package/dist/{docker-D9sC_37H.mjs → docker-Oq80q3tu.mjs} +4 -4
  48. package/dist/{translate-CG_Ka0dO.mjs → eid-BXzaQh0o.mjs} +37 -22
  49. package/dist/error-C9S6PN3-.mjs +190 -0
  50. package/dist/{export-CVMFxoo1.mjs → export-DTygoXBP.mjs} +17 -16
  51. package/dist/field-Z6Pcxf4n.mjs +19 -0
  52. package/dist/{fields-Coha7vKv.mjs → fields-CoQi99gv.mjs} +9 -8
  53. package/dist/{get-DXv2FkA7.mjs → get-Bzys7vgp.mjs} +8 -7
  54. package/dist/{get-bNtA7vWe.mjs → get-C2p383Qc.mjs} +8 -7
  55. package/dist/{get-Br6WayZv.mjs → get-C3HdQ91a.mjs} +8 -7
  56. package/dist/{get-BOtKerj8.mjs → get-CP3Z3NiH.mjs} +9 -8
  57. package/dist/{get-BSKoL8ek.mjs → get-C_w1kvN3.mjs} +9 -8
  58. package/dist/{get-Be6EFh94.mjs → get-CzuzeKSe.mjs} +10 -9
  59. package/dist/{get-BVTz9B_H.mjs → get-D3SbEQSE.mjs} +10 -9
  60. package/dist/get-DFxZXaKz.mjs +79 -0
  61. package/dist/{get-DZrV7v9d.mjs → get-DQTZG_NP.mjs} +8 -7
  62. package/dist/{get-CJwzbVjc.mjs → get-DSWFjy7O.mjs} +8 -7
  63. package/dist/{get-BxzCKVC6.mjs → get-Ddr0XLh7.mjs} +8 -7
  64. package/dist/{get-AOvWo48B.mjs → get-Hc93A0Yz.mjs} +8 -7
  65. package/dist/{get-C_6K7MSW.mjs → get-lb7q3JYs.mjs} +7 -6
  66. package/dist/get-run-B7sKdaDU.mjs +38 -0
  67. package/dist/git-sync-CiGAad76.mjs +28 -0
  68. package/dist/{has-remote-changes-D6xgsuUr.mjs → has-remote-changes-BY10-nnE.mjs} +11 -7
  69. package/dist/{import-Dv0ORSNw.mjs → import-CiMz4Wz-.mjs} +17 -16
  70. package/dist/{input-BQ-BZA8h.mjs → input-cMSEqISy.mjs} +7 -4
  71. package/dist/{is-dirty-WNi8a6O9.mjs → is-dirty-BZOaryxT.mjs} +9 -4
  72. package/dist/is-dirty-Ume4oV0j.mjs +10 -0
  73. package/dist/{items-CTcAMknV.mjs → items-BWfvkY-J.mjs} +9 -8
  74. package/dist/key-C2XG394c.mjs +17 -0
  75. package/dist/license-Dxarh-gG.mjs +17 -0
  76. package/dist/{list-FXuSCYpa.mjs → list--OYdUTtu.mjs} +7 -6
  77. package/dist/{list-8oVMvlLV.mjs → list-2j7GsXsl.mjs} +7 -6
  78. package/dist/{list-xQmtQPSl.mjs → list-BI4zr8LW.mjs} +10 -8
  79. package/dist/{list-DhWG5jiW.mjs → list-Brgh-Z2v.mjs} +8 -6
  80. package/dist/{list-DSs0Q78i.mjs → list-C3hfovHv.mjs} +7 -6
  81. package/dist/{list-DvUjMQze.mjs → list-CL7eCOQE.mjs} +7 -6
  82. package/dist/list-Clz5igWg.mjs +44 -0
  83. package/dist/list-D4sFiqX8.mjs +173 -0
  84. package/dist/{list-BxdXvGTK.mjs → list-DXH7TlkU.mjs} +9 -7
  85. package/dist/{list-CocYwmnI.mjs → list-DZ8fNUoQ.mjs} +9 -8
  86. package/dist/{list-DjhZU-FY.mjs → list-SOG0whQ-.mjs} +7 -6
  87. package/dist/{list-DI7K3K6k.mjs → list-d58BprgJ.mjs} +7 -6
  88. package/dist/{list-NiwCL_1X.mjs → list-sD5N3fGk.mjs} +9 -8
  89. package/dist/{list-CbJeP0Z6.mjs → list-zSO0DMw-.mjs} +10 -6
  90. package/dist/{login-SXsSH0I1.mjs → login-Bm2AnCez.mjs} +65 -80
  91. package/dist/{logout-bgOXjxbN.mjs → logout-BlyRJODO.mjs} +8 -7
  92. package/dist/{logs-BnwVbFuD.mjs → logs-CywPikkL.mjs} +9 -8
  93. package/dist/{manifest-CGM7XNLC.mjs → manifest-BBR46KFM.mjs} +15 -15
  94. package/dist/measure-C44EK_xt.mjs +20 -0
  95. package/dist/{measure-BEQfnLdN.mjs → measure-ClESGxIb.mjs} +2 -2
  96. package/dist/{metadata-Bu2HOmuX.mjs → metadata-B8ZSF9LA.mjs} +10 -9
  97. package/dist/{metadata-B0WZT3Yb.mjs → metadata-DqiI2q9q.mjs} +9 -8
  98. package/dist/parse-enum-CrEWOhuY.mjs +11 -0
  99. package/dist/{parse-id-B3B-0hUA.mjs → parse-id-lk_K-CEF.mjs} +1 -1
  100. package/dist/{parse-ref-D1yeDOn8.mjs → parse-ref-BiETXmvm.mjs} +1 -1
  101. package/dist/{parse-schemas-DgtVLikM.mjs → parse-schemas-BqUdWUwq.mjs} +2 -2
  102. package/dist/path-AEtZ3mBq.mjs +58 -0
  103. package/dist/{poll-BCnrcUVf.mjs → poll-DHKDpCiq.mjs} +2 -2
  104. package/dist/{poll-task-0b1V6G-8.mjs → poll-task-Cooi0lQV.mjs} +3 -20
  105. package/dist/{preflight-5ACaYnDp.mjs → preflight-aXV5LyDs.mjs} +4 -4
  106. package/dist/{process-FjsqDwKo.mjs → process-C7V8LJ-j.mjs} +1 -1
  107. package/dist/{prompt-DgDNy_Pc.mjs → prompt-CFKoys7k.mjs} +3 -1
  108. package/dist/{provision-29Zt62Ft.mjs → provision-UWcNDoDe.mjs} +29 -24
  109. package/dist/{ps-BMFiRCi4.mjs → ps-CJU0EbrC.mjs} +5 -3
  110. package/dist/ps-DEroLgbI.mjs +11 -0
  111. package/dist/{query-DxA353Hy.mjs → query-AaKzYnTY.mjs} +9 -8
  112. package/dist/{query-aba8MEe_.mjs → query-BlsVNZpD.mjs} +15 -13
  113. package/dist/{remove-BfgU_CQi.mjs → remove-BFWun0e8.mjs} +9 -8
  114. package/dist/{remove-collection-Brv72xUe.mjs → remove-collection-CoCmrrQs.mjs} +13 -9
  115. package/dist/{render-DuoDUTVL.mjs → render-CfznwleY.mjs} +15 -17
  116. package/dist/render-OQn3iRsI.mjs +32 -0
  117. package/dist/{rescan-values-DIAdjoq7.mjs → rescan-values-C0FDsjT7.mjs} +10 -9
  118. package/dist/{run-CgXRo0hD.mjs → run-B4Wn43zm.mjs} +10 -9
  119. package/dist/{runs-DtLRw6xg.mjs → runs-Bbaszr18.mjs} +9 -8
  120. package/dist/{runtime-Br8L4NPm.mjs → runtime-Dmv5VtUK.mjs} +657 -428
  121. package/dist/{schema-tables-DiKMY6lx.mjs → schema-tables-CaWinbuK.mjs} +9 -8
  122. package/dist/{schemas-Bvr8cOzo.mjs → schemas-DUgGpAyB.mjs} +7 -6
  123. package/dist/{search-BT_TCcTd.mjs → search-BLrBXLUk.mjs} +12 -16
  124. package/dist/segment-B3Uwwcsm.mjs +20 -0
  125. package/dist/{set-DtG0KH6P.mjs → set-B8cUbRLD.mjs} +13 -12
  126. package/dist/{set-CAIkXlPy.mjs → set-DfGsta5O.mjs} +11 -10
  127. package/dist/{setting-BDOi5fk_.mjs → setting-D2p2MA7f.mjs} +3 -3
  128. package/dist/{setup-LjTvvlJy.mjs → setup-C9ikBRw_.mjs} +9 -8
  129. package/dist/skills-CUHIcQS6.mjs +18 -0
  130. package/dist/skills-CiN1OQ8W.mjs +191 -0
  131. package/dist/snippet-B7D0uWlz.mjs +20 -0
  132. package/dist/{start-CXKt0Q7A.mjs → start-3PX3ahjT.mjs} +68 -36
  133. package/dist/{stash-dRw1UEwg.mjs → stash-EIDcSvpF.mjs} +17 -16
  134. package/dist/{status-C2niMfrQ.mjs → status-95ElRAu9.mjs} +12 -8
  135. package/dist/status-B0_MiZEf.mjs +100 -0
  136. package/dist/status-CEplmC44.mjs +34 -0
  137. package/dist/{stop-BdedYfwU.mjs → stop-CQ0XGrN8.mjs} +11 -10
  138. package/dist/{summary-BPDA4K99.mjs → summary-C12LiEuJ.mjs} +8 -7
  139. package/dist/{sync-schema-D95LLRpf.mjs → sync-schema-Ba8M3DiX.mjs} +10 -9
  140. package/dist/{table-B-PYcgGb.mjs → table-C7a5V6Zn.mjs} +1 -1
  141. package/dist/table-e6h8SLVX.mjs +20 -0
  142. package/dist/transform-BMYh1lsC.mjs +25 -0
  143. package/dist/transform-job-Cm7z5TfH.mjs +20 -0
  144. package/dist/{transform-job-Csr86muI.mjs → transform-job-DeTDPMxt.mjs} +1 -1
  145. package/dist/{tree-DazZT7dR.mjs → tree-Des2ZG9d.mjs} +6 -5
  146. package/dist/{update-DE6kjV-f.mjs → update-Bx54nWEI.mjs} +17 -15
  147. package/dist/{update-bW-i6gjZ.mjs → update-CyIZdbIQ.mjs} +11 -10
  148. package/dist/{update-djgvzO3K.mjs → update-DBi5U8zb.mjs} +16 -14
  149. package/dist/{update-CJSDB6S8.mjs → update-DHZubok3.mjs} +18 -14
  150. package/dist/{update-BBfvArCx.mjs → update-DSgceARZ.mjs} +11 -10
  151. package/dist/{update-DSWZSfpw.mjs → update-DzAN4SPj.mjs} +15 -13
  152. package/dist/{update-WyRKlQPh.mjs → update-F6DmZncY.mjs} +11 -10
  153. package/dist/{update-DTIWJxob.mjs → update-_QfgNa53.mjs} +12 -11
  154. package/dist/{update-dashcard-BhD5x__K.mjs → update-dashcard-wpSjv4M7.mjs} +11 -10
  155. package/dist/{update-9kVyE3BJ.mjs → update-mYVnoYNV.mjs} +15 -13
  156. package/dist/{update-659eQR1L.mjs → update-njHe3j-s.mjs} +15 -13
  157. package/dist/{upgrade-D58rvXHM.mjs → upgrade-iAuvhX-W.mjs} +9 -8
  158. package/dist/{url-DKkSu2D8.mjs → url-DWaT6WIZ.mjs} +11 -10
  159. package/dist/{uuid-BF20B59s.mjs → uuid-CMKnS8-z.mjs} +8 -6
  160. package/dist/{validate-CB0bu50i.mjs → validate-dPEOnOf8.mjs} +2 -1
  161. package/dist/{validate-query-CavIA0Q2.mjs → validate-query-Cw6WE5Y8.mjs} +3 -3
  162. package/dist/{values-DyjmpcbT.mjs → values-BfSTAbzc.mjs} +8 -7
  163. package/dist/verify-D5YtTqqp.mjs +79 -0
  164. package/dist/{wait-CeUPCgdc.mjs → wait-8yV9_WIo.mjs} +2 -2
  165. package/dist/{wait-DhkTaV6E.mjs → wait-Bv3Tsnv4.mjs} +12 -8
  166. package/dist/{wait-flags-BR-yqe7y.mjs → wait-flags-Dzq9BGQY.mjs} +20 -9
  167. package/dist/workspace-CKLZrR7l.mjs +26 -0
  168. package/dist/{workspace-credentials-Cctumbru.mjs → workspace-credentials-BXpABsNZ.mjs} +2 -41
  169. package/dist/yaml-YTQiYJ9s.mjs +43 -0
  170. package/package.json +6 -2
  171. package/skill-data/core/SKILL.md +177 -0
  172. package/skill-data/git-sync/SKILL.md +196 -0
  173. package/skill-data/mbql/SKILL.md +156 -0
  174. package/skill-data/mbql/references/operators.md +253 -0
  175. package/skill-data/transform/SKILL.md +197 -0
  176. package/skill-data/viz/SKILL.md +137 -0
  177. package/skill-data/viz/references/settings.md +312 -0
  178. package/skill-data/workspace/SKILL.md +390 -0
  179. package/skills/metabase-cli/SKILL.md +21 -0
  180. package/dist/add-collection-CPL1njYZ.mjs +0 -11
  181. package/dist/api-key-9p1UPnXn.mjs +0 -13
  182. package/dist/auth-N4w5xtwW.mjs +0 -19
  183. package/dist/card-4rZRb5bc.mjs +0 -20
  184. package/dist/collection-Cp_B02I4.mjs +0 -19
  185. package/dist/command-augment-D9pI9Vbh.mjs +0 -11
  186. package/dist/create-doyv3SxU.mjs +0 -50
  187. package/dist/create-ov-De5dO.mjs +0 -125
  188. package/dist/dashboard-BYBiA-IG.mjs +0 -20
  189. package/dist/db-CObVU22j.mjs +0 -22
  190. package/dist/eid-Cr5r-t9B.mjs +0 -13
  191. package/dist/field-CbljasCH.mjs +0 -18
  192. package/dist/flag-pair-Fmcdkrfx.mjs +0 -17
  193. package/dist/get-run-CSrXHDGS.mjs +0 -36
  194. package/dist/git-sync-BGkS8o5b.mjs +0 -28
  195. package/dist/is-dirty-BOZ4xz92.mjs +0 -10
  196. package/dist/key-CCJdVWKc.mjs +0 -12
  197. package/dist/license-DLLTpFvP.mjs +0 -17
  198. package/dist/list-BNzdnE1c.mjs +0 -55
  199. package/dist/measure-B54VtKym.mjs +0 -19
  200. package/dist/package-D-aVYFKM.mjs +0 -80
  201. package/dist/ps-C5FOLwL2.mjs +0 -11
  202. package/dist/segment-C2ui5dSd.mjs +0 -19
  203. package/dist/snippet-BcgVYsoR.mjs +0 -19
  204. package/dist/status-BEONmJWv.mjs +0 -32
  205. package/dist/status-BWep0PFe.mjs +0 -56
  206. package/dist/table-lCNGbvej.mjs +0 -19
  207. package/dist/transform-BGAm1s4f.mjs +0 -24
  208. package/dist/transform-job-cNTJ30pm.mjs +0 -19
  209. package/dist/workspace-DtcBldk0.mjs +0 -24
  210. /package/dist/{body-flags-BK7J6Daz.mjs → body-flags-D7q87Btw.mjs} +0 -0
  211. /package/dist/{field-B3gvaqpK.mjs → field-yomXlkvl.mjs} +0 -0
  212. /package/dist/{paginate-CTSfuYiF.mjs → paginate-Dfm9eO9A.mjs} +0 -0
  213. /package/dist/{revision-message-flag-oyq2xrDU.mjs → revision-message-flag-WmsIzUOM.mjs} +0 -0
  214. /package/dist/{segment-BMrUBz94.mjs → segment-Be2v4ilr.mjs} +0 -0
  215. /package/dist/{setting-CTaAeMci.mjs → setting-oL97SNeO.mjs} +0 -0
  216. /package/dist/{snippet-Dw0Sjzkr.mjs → snippet-COggaWxx.mjs} +0 -0
  217. /package/dist/{transform-IEX4Mx3X.mjs → transform-GTW3G-01.mjs} +0 -0
  218. /package/dist/{workspace-C5q4nbpY.mjs → workspace-BBXJczJK.mjs} +0 -0
@@ -0,0 +1,40 @@
1
+ import "./command-augment-BH9qgQ5u.mjs";
2
+ import { connectionFlags, outputFlags, profileFlag } from "./error-C9S6PN3-.mjs";
3
+ import { defineMetabaseCommand } from "./runtime-Dmv5VtUK.mjs";
4
+ import "./capabilities-7e9MgquN.mjs";
5
+ import { renderItem } from "./render-CfznwleY.mjs";
6
+ import { parseId } from "./parse-id-lk_K-CEF.mjs";
7
+ import { Collection, collectionView } from "./collection-B3sPXRLs.mjs";
8
+
9
+ //#region src/commands/collection/archive.ts
10
+ var archive_default = defineMetabaseCommand({
11
+ meta: {
12
+ name: "archive",
13
+ description: "Archive (soft-delete) a collection by id"
14
+ },
15
+ capabilities: { minVersion: 58 },
16
+ args: {
17
+ ...outputFlags,
18
+ ...profileFlag,
19
+ ...connectionFlags,
20
+ id: {
21
+ type: "positional",
22
+ description: "Collection id",
23
+ required: true
24
+ }
25
+ },
26
+ outputSchema: Collection,
27
+ examples: ["mb collection archive 4", "mb collection archive 4 --json"],
28
+ async run({ args, ctx, getClient }) {
29
+ const id = parseId(args.id);
30
+ const client = await getClient();
31
+ const updated = await client.requestParsed(Collection, `/api/collection/${id}`, {
32
+ method: "PUT",
33
+ body: { archived: true }
34
+ });
35
+ renderItem(updated, collectionView, ctx);
36
+ }
37
+ });
38
+
39
+ //#endregion
40
+ export { archive_default as default };
@@ -0,0 +1,19 @@
1
+ import { defineCommand } from "citty";
2
+
3
+ //#region src/commands/auth/index.ts
4
+ var auth_default = defineCommand({
5
+ meta: {
6
+ name: "auth",
7
+ description: "Authenticate against a Metabase instance"
8
+ },
9
+ default: "login",
10
+ subCommands: {
11
+ login: () => import("./login-Bm2AnCez.mjs").then((m) => m.default),
12
+ status: () => import("./status-B0_MiZEf.mjs").then((m) => m.default),
13
+ list: () => import("./list-D4sFiqX8.mjs").then((m) => m.default),
14
+ logout: () => import("./logout-BlyRJODO.mjs").then((m) => m.default)
15
+ }
16
+ });
17
+
18
+ //#endregion
19
+ export { auth_default as default };
@@ -1,6 +1,6 @@
1
- import { ConfigError } from "./predicates-CGO17Q15.mjs";
2
- import { readInput } from "./input-BQ-BZA8h.mjs";
3
- import { parseJson } from "./runtime-Br8L4NPm.mjs";
1
+ import { ConfigError } from "./command-augment-BH9qgQ5u.mjs";
2
+ import { parseJson } from "./runtime-Dmv5VtUK.mjs";
3
+ import { DEFAULT_FLAG_NAME, readInput } from "./input-cMSEqISy.mjs";
4
4
 
5
5
  //#region src/runtime/body.ts
6
6
  async function readBody(sources, schema) {
@@ -10,7 +10,7 @@ async function readBody(sources, schema) {
10
10
  }
11
11
  function assertSingleSource(sources) {
12
12
  const provided = [];
13
- if (sources.flag !== void 0 && sources.flag !== "") provided.push("--body");
13
+ if (sources.flag !== void 0 && sources.flag !== "") provided.push(DEFAULT_FLAG_NAME);
14
14
  if (sources.file !== void 0 && sources.file !== "") provided.push("--file");
15
15
  if (sources.positional !== void 0 && sources.positional !== "") provided.push("positional");
16
16
  if (provided.length > 1) throw new ConfigError(`multiple body sources given (${provided.join(", ")}); pass exactly one`);
@@ -1,10 +1,10 @@
1
- import "./package-D-aVYFKM.mjs";
2
- import "./command-augment-D9pI9Vbh.mjs";
3
- import { renderList } from "./render-DuoDUTVL.mjs";
4
- import "./predicates-CGO17Q15.mjs";
5
- import { connectionFlags, defineMetabaseCommand, listEnvelopeSchema, outputFlags, profileFlag, wrapList } from "./runtime-Br8L4NPm.mjs";
6
- import { REMOTE_SYNC_PATHS } from "./poll-task-0b1V6G-8.mjs";
7
- import "./poll-BCnrcUVf.mjs";
1
+ import "./command-augment-BH9qgQ5u.mjs";
2
+ import { connectionFlags, listEnvelopeSchema, outputFlags, profileFlag, wrapList } from "./error-C9S6PN3-.mjs";
3
+ import { defineMetabaseCommand } from "./runtime-Dmv5VtUK.mjs";
4
+ import "./capabilities-7e9MgquN.mjs";
5
+ import { renderList } from "./render-CfznwleY.mjs";
6
+ import { REMOTE_SYNC_PATHS } from "./poll-task-Cooi0lQV.mjs";
7
+ import "./poll-DHKDpCiq.mjs";
8
8
  import { z } from "zod";
9
9
 
10
10
  //#region src/commands/git-sync/branches.ts
@@ -23,6 +23,10 @@ var branches_default = defineMetabaseCommand({
23
23
  name: "branches",
24
24
  description: "List branches on the configured git remote"
25
25
  },
26
+ capabilities: {
27
+ minVersion: 60,
28
+ tokenFeature: "remote_sync"
29
+ },
26
30
  args: {
27
31
  ...outputFlags,
28
32
  ...profileFlag,
@@ -1,9 +1,9 @@
1
- import "./package-D-aVYFKM.mjs";
2
- import "./command-augment-D9pI9Vbh.mjs";
3
- import { renderItem } from "./render-DuoDUTVL.mjs";
4
- import "./predicates-CGO17Q15.mjs";
5
- import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-Br8L4NPm.mjs";
6
- import { parseId } from "./parse-id-B3B-0hUA.mjs";
1
+ import "./command-augment-BH9qgQ5u.mjs";
2
+ import { connectionFlags, outputFlags, profileFlag } from "./error-C9S6PN3-.mjs";
3
+ import { defineMetabaseCommand } from "./runtime-Dmv5VtUK.mjs";
4
+ import "./capabilities-7e9MgquN.mjs";
5
+ import { renderItem } from "./render-CfznwleY.mjs";
6
+ import { parseId } from "./parse-id-lk_K-CEF.mjs";
7
7
  import { z } from "zod";
8
8
 
9
9
  //#region src/commands/transform/cancel.ts
@@ -26,6 +26,7 @@ var cancel_default = defineMetabaseCommand({
26
26
  name: "cancel",
27
27
  description: "Cancel the current run for a transform"
28
28
  },
29
+ capabilities: { minVersion: 59 },
29
30
  args: {
30
31
  ...outputFlags,
31
32
  ...profileFlag,
@@ -1,10 +1,10 @@
1
- import "./package-D-aVYFKM.mjs";
2
- import "./command-augment-D9pI9Vbh.mjs";
3
- import { renderItem } from "./render-DuoDUTVL.mjs";
4
- import "./predicates-CGO17Q15.mjs";
5
- import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-Br8L4NPm.mjs";
6
- import { REMOTE_SYNC_PATHS, SyncTask, syncTaskView } from "./poll-task-0b1V6G-8.mjs";
7
- import "./poll-BCnrcUVf.mjs";
1
+ import "./command-augment-BH9qgQ5u.mjs";
2
+ import { connectionFlags, outputFlags, profileFlag } from "./error-C9S6PN3-.mjs";
3
+ import { defineMetabaseCommand } from "./runtime-Dmv5VtUK.mjs";
4
+ import "./capabilities-7e9MgquN.mjs";
5
+ import { renderItem } from "./render-CfznwleY.mjs";
6
+ import { REMOTE_SYNC_PATHS, SyncTask, syncTaskView } from "./poll-task-Cooi0lQV.mjs";
7
+ import "./poll-DHKDpCiq.mjs";
8
8
 
9
9
  //#region src/commands/git-sync/cancel-task.ts
10
10
  var cancel_task_default = defineMetabaseCommand({
@@ -12,6 +12,10 @@ var cancel_task_default = defineMetabaseCommand({
12
12
  name: "cancel-task",
13
13
  description: "Cancel the running git-sync task"
14
14
  },
15
+ capabilities: {
16
+ minVersion: 60,
17
+ tokenFeature: "remote_sync"
18
+ },
15
19
  args: {
16
20
  ...outputFlags,
17
21
  ...profileFlag,
@@ -0,0 +1,29 @@
1
+ import { z } from "zod";
2
+
3
+ //#region src/runtime/predicates.ts
4
+ function isPlainObject(value) {
5
+ return typeof value === "object" && value !== null && !Array.isArray(value);
6
+ }
7
+
8
+ //#endregion
9
+ //#region src/output/notice.ts
10
+ function warn(message) {
11
+ process.stderr.write(message + "\n");
12
+ }
13
+ function listTruncationNotice(bytes) {
14
+ return `… cut at ${bytes} bytes; rerun with --max-bytes 0`;
15
+ }
16
+ function itemOversizeMessage(bytes, maxBytes) {
17
+ return `output is ${bytes} bytes, over the ${maxBytes}-byte --max-bytes cap; narrow with --fields, or pass --max-bytes 0 to disable`;
18
+ }
19
+
20
+ //#endregion
21
+ //#region src/runtime/capabilities.ts
22
+ const Capabilities = z.object({
23
+ minVersion: z.number(),
24
+ tokenFeature: z.string().optional()
25
+ });
26
+ const BASELINE_CAPABILITIES = Object.freeze({ minVersion: 58 });
27
+
28
+ //#endregion
29
+ export { BASELINE_CAPABILITIES, Capabilities, isPlainObject, itemOversizeMessage, listTruncationNotice, warn };
@@ -0,0 +1,21 @@
1
+ import { defineCommand } from "citty";
2
+
3
+ //#region src/commands/card/index.ts
4
+ var card_default = defineCommand({
5
+ meta: {
6
+ name: "card",
7
+ alias: "cards",
8
+ description: "Manage Metabase cards (questions, models, metrics)"
9
+ },
10
+ subCommands: {
11
+ list: () => import("./list-BI4zr8LW.mjs").then((mod) => mod.default),
12
+ get: () => import("./get-CP3Z3NiH.mjs").then((mod) => mod.default),
13
+ query: () => import("./query-AaKzYnTY.mjs").then((mod) => mod.default),
14
+ create: () => import("./create-BNiva__H.mjs").then((mod) => mod.default),
15
+ update: () => import("./update-DBi5U8zb.mjs").then((mod) => mod.default),
16
+ archive: () => import("./archive-BNinrUak.mjs").then((mod) => mod.default)
17
+ }
18
+ });
19
+
20
+ //#endregion
21
+ export { card_default as default };
@@ -1,4 +1,4 @@
1
- import { FieldBaseType, FieldSemanticType } from "./field-B3gvaqpK.mjs";
1
+ import { FieldBaseType, FieldSemanticType } from "./field-yomXlkvl.mjs";
2
2
  import { z } from "zod";
3
3
 
4
4
  //#region src/domain/card.ts
@@ -1,10 +1,10 @@
1
- import "./package-D-aVYFKM.mjs";
2
- import "./command-augment-D9pI9Vbh.mjs";
3
- import { renderList } from "./render-DuoDUTVL.mjs";
4
- import "./predicates-CGO17Q15.mjs";
5
- import { connectionFlags, defineMetabaseCommand, listEnvelopeSchema, outputFlags, profileFlag, wrapList } from "./runtime-Br8L4NPm.mjs";
6
- import { parseId } from "./parse-id-B3B-0hUA.mjs";
7
- import { DashboardDetail, DashcardCompact, dashcardView } from "./dashboard-CnMD04PQ.mjs";
1
+ import "./command-augment-BH9qgQ5u.mjs";
2
+ import { connectionFlags, listEnvelopeSchema, outputFlags, profileFlag, wrapList } from "./error-C9S6PN3-.mjs";
3
+ import { defineMetabaseCommand } from "./runtime-Dmv5VtUK.mjs";
4
+ import "./capabilities-7e9MgquN.mjs";
5
+ import { renderList } from "./render-CfznwleY.mjs";
6
+ import { parseId } from "./parse-id-lk_K-CEF.mjs";
7
+ import { DashboardDetail, DashcardCompact, dashcardView } from "./dashboard-FY5UzJ_Z.mjs";
8
8
 
9
9
  //#region src/commands/dashboard/cards.ts
10
10
  const DashcardListEnvelope = listEnvelopeSchema(DashcardCompact);
@@ -13,6 +13,7 @@ var cards_default = defineMetabaseCommand({
13
13
  name: "cards",
14
14
  description: "List dashcards on a dashboard"
15
15
  },
16
+ capabilities: { minVersion: 58 },
16
17
  args: {
17
18
  ...outputFlags,
18
19
  ...profileFlag,
package/dist/cli.mjs CHANGED
@@ -1,8 +1,55 @@
1
1
  #!/usr/bin/env node
2
- import { package_default } from "./package-D-aVYFKM.mjs";
3
- import { getMetabaseAugment } from "./command-augment-D9pI9Vbh.mjs";
2
+ import { ConfigError, flagConsumesValue, getMetabaseAugment, normalizeFlag, resolveCitty, toAliasArray } from "./command-augment-BH9qgQ5u.mjs";
3
+ import { connectionFlags, outputFlags, package_default, profileFlag, reportError } from "./error-C9S6PN3-.mjs";
4
4
  import { defineCommand, renderUsage, runMain } from "citty";
5
5
 
6
+ //#region src/commands/global-flags.ts
7
+ const ARGUMENT_SEPARATOR = "--";
8
+ const NEGATION_PREFIX = "no-";
9
+ const GLOBAL_FLAG_ARGS = {
10
+ ...outputFlags,
11
+ ...profileFlag,
12
+ ...connectionFlags
13
+ };
14
+ const GLOBAL_FLAG_NAMES = buildGlobalFlagNames();
15
+ function buildGlobalFlagNames() {
16
+ const names = new Set();
17
+ for (const [key, def] of Object.entries(GLOBAL_FLAG_ARGS)) {
18
+ names.add(normalizeFlag(key));
19
+ if ("alias" in def) for (const alias of toAliasArray(def.alias)) names.add(normalizeFlag(alias));
20
+ }
21
+ return names;
22
+ }
23
+ function isGlobalFlag(token) {
24
+ if (!token.startsWith("-") || token === ARGUMENT_SEPARATOR) return false;
25
+ const raw = token.includes("=") ? token.slice(0, token.indexOf("=")) : token;
26
+ const name = normalizeFlag(raw);
27
+ if (GLOBAL_FLAG_NAMES.has(name)) return true;
28
+ const bare = raw.replace(/^-+/, "");
29
+ if (bare.startsWith(NEGATION_PREFIX)) return GLOBAL_FLAG_NAMES.has(normalizeFlag(bare.slice(NEGATION_PREFIX.length)));
30
+ return false;
31
+ }
32
+ function hoistGlobalFlags(rawArgs) {
33
+ const leading = [];
34
+ let index = 0;
35
+ while (index < rawArgs.length) {
36
+ const token = rawArgs[index];
37
+ if (token === void 0 || !isGlobalFlag(token)) break;
38
+ leading.push(token);
39
+ index += 1;
40
+ if (flagConsumesValue(token, GLOBAL_FLAG_ARGS) && index < rawArgs.length) {
41
+ const value = rawArgs[index];
42
+ if (value !== void 0) {
43
+ leading.push(value);
44
+ index += 1;
45
+ }
46
+ }
47
+ }
48
+ if (leading.length === 0) return [...rawArgs];
49
+ return [...rawArgs.slice(index), ...leading];
50
+ }
51
+
52
+ //#endregion
6
53
  //#region src/main.ts
7
54
  const main = defineCommand({
8
55
  meta: {
@@ -11,30 +58,29 @@ const main = defineCommand({
11
58
  description: package_default.description
12
59
  },
13
60
  subCommands: {
14
- auth: () => import("./auth-N4w5xtwW.mjs").then((mod) => mod.default),
15
- license: () => import("./license-DLLTpFvP.mjs").then((mod) => mod.default),
16
- db: () => import("./db-CObVU22j.mjs").then((mod) => mod.default),
17
- table: () => import("./table-lCNGbvej.mjs").then((mod) => mod.default),
18
- field: () => import("./field-CbljasCH.mjs").then((mod) => mod.default),
19
- card: () => import("./card-4rZRb5bc.mjs").then((mod) => mod.default),
20
- dashboard: () => import("./dashboard-BYBiA-IG.mjs").then((mod) => mod.default),
21
- collection: () => import("./collection-Cp_B02I4.mjs").then((mod) => mod.default),
22
- transform: () => import("./transform-BGAm1s4f.mjs").then((mod) => mod.default),
23
- "transform-job": () => import("./transform-job-cNTJ30pm.mjs").then((mod) => mod.default),
24
- setting: () => import("./setting-BDOi5fk_.mjs").then((mod) => mod.default),
25
- search: () => import("./search-BT_TCcTd.mjs").then((mod) => mod.default),
26
- "git-sync": () => import("./git-sync-BGkS8o5b.mjs").then((mod) => mod.default),
27
- workspace: () => import("./workspace-DtcBldk0.mjs").then((mod) => mod.default),
28
- setup: () => import("./setup-LjTvvlJy.mjs").then((mod) => mod.default),
29
- "api-key": () => import("./api-key-9p1UPnXn.mjs").then((mod) => mod.default),
30
- snippet: () => import("./snippet-BcgVYsoR.mjs").then((mod) => mod.default),
31
- segment: () => import("./segment-C2ui5dSd.mjs").then((mod) => mod.default),
32
- measure: () => import("./measure-B54VtKym.mjs").then((mod) => mod.default),
33
- eid: () => import("./eid-Cr5r-t9B.mjs").then((mod) => mod.default),
34
- query: () => import("./query-aba8MEe_.mjs").then((mod) => mod.default),
35
- uuid: () => import("./uuid-BF20B59s.mjs").then((mod) => mod.default),
36
- upgrade: () => import("./upgrade-D58rvXHM.mjs").then((mod) => mod.default),
37
- __manifest: () => import("./manifest-CGM7XNLC.mjs").then((mod) => mod.createManifestCommand(main))
61
+ auth: () => import("./auth-CzXb_zB2.mjs").then((mod) => mod.default),
62
+ db: () => import("./db-DrQn_i3W.mjs").then((mod) => mod.default),
63
+ table: () => import("./table-e6h8SLVX.mjs").then((mod) => mod.default),
64
+ field: () => import("./field-Z6Pcxf4n.mjs").then((mod) => mod.default),
65
+ card: () => import("./card-DP4rfoOi.mjs").then((mod) => mod.default),
66
+ dashboard: () => import("./dashboard-ChM_Tu0l.mjs").then((mod) => mod.default),
67
+ collection: () => import("./collection-tY18ezvn.mjs").then((mod) => mod.default),
68
+ transform: () => import("./transform-BMYh1lsC.mjs").then((mod) => mod.default),
69
+ "transform-job": () => import("./transform-job-Cm7z5TfH.mjs").then((mod) => mod.default),
70
+ setting: () => import("./setting-D2p2MA7f.mjs").then((mod) => mod.default),
71
+ search: () => import("./search-BLrBXLUk.mjs").then((mod) => mod.default),
72
+ "git-sync": () => import("./git-sync-CiGAad76.mjs").then((mod) => mod.default),
73
+ workspace: () => import("./workspace-CKLZrR7l.mjs").then((mod) => mod.default),
74
+ setup: () => import("./setup-C9ikBRw_.mjs").then((mod) => mod.default),
75
+ snippet: () => import("./snippet-B7D0uWlz.mjs").then((mod) => mod.default),
76
+ segment: () => import("./segment-B3Uwwcsm.mjs").then((mod) => mod.default),
77
+ measure: () => import("./measure-C44EK_xt.mjs").then((mod) => mod.default),
78
+ eid: () => import("./eid-BXzaQh0o.mjs").then((mod) => mod.default),
79
+ query: () => import("./query-BlsVNZpD.mjs").then((mod) => mod.default),
80
+ uuid: () => import("./uuid-CMKnS8-z.mjs").then((mod) => mod.default),
81
+ upgrade: () => import("./upgrade-iAuvhX-W.mjs").then((mod) => mod.default),
82
+ skills: () => import("./skills-CUHIcQS6.mjs").then((mod) => mod.default),
83
+ __manifest: () => import("./manifest-BBR46KFM.mjs").then((mod) => mod.createManifestCommand(main))
38
84
  }
39
85
  });
40
86
  var main_default = main;
@@ -42,36 +88,213 @@ var main_default = main;
42
88
  //#endregion
43
89
  //#region src/output/help.ts
44
90
  const ANSI_ESC = String.fromCharCode(27);
45
- const BREADCRUMB_SUFFIX = new RegExp(` \\([^()]*\\)(${ANSI_ESC}\\[\\d+m)?\\s*$`);
46
- async function showUsage(cmd, parent) {
47
- const raw = await renderUsage(cmd, parent);
48
- const [first, ...rest] = raw.split("\n");
49
- const stripped = first === void 0 ? "" : first.replace(BREADCRUMB_SUFFIX, "$1");
50
- const body = [stripped, ...rest].join("\n");
51
- const examples = getMetabaseAugment(cmd)?.examples ?? [];
52
- process.stdout.write(body + renderExamples(examples) + renderSchemaHint() + "\n");
91
+ const ANSI_PATTERN = new RegExp(`${ANSI_ESC}\\[[0-9;]*m`, "g");
92
+ const BREADCRUMB_SUFFIX = / \([^()]*\)\s*$/;
93
+ const TRAILING_WHITESPACE = /[ \t]+$/;
94
+ const ALIAS_PAIR = /-([a-z0-9]+(?:-[a-z0-9]+)+), --[A-Za-z0-9]+/g;
95
+ const USAGE_PREFIX = "USAGE ";
96
+ const OPTIONS_HEADER = "OPTIONS";
97
+ const LINE_PREFIX = " ";
98
+ const COLUMN_GAP = " ";
99
+ const COMMAND_PLACEHOLDER = "<command> [options]";
100
+ const MANIFEST_COMMAND = "__manifest";
101
+ const CLI_NAME = "mb";
102
+ const HELP_FLAG_SPEC = "-h, --help";
103
+ const HELP_FLAG_DESCRIPTION = "Show help for this command";
104
+ const GETTING_STARTED_HINT = `First time? Run \`${CLI_NAME} auth login\` to connect to a Metabase instance.`;
105
+ async function showUsage(cmd, parent, breadcrumb) {
106
+ const raw = (await renderUsage(cmd, parent)).replace(ANSI_PATTERN, "");
107
+ const lines = raw.split("\n").map((line) => line.replace(TRAILING_WHITESPACE, ""));
108
+ const cmdMeta = await resolveCitty(cmd.meta);
109
+ const parentMeta = parent === void 0 ? void 0 : await resolveCitty(parent.meta);
110
+ const cmdName = cmdMeta?.name ?? "";
111
+ const cittyName = parentMeta?.name ? `${parentMeta.name} ${cmdName}` : cmdName;
112
+ const hasSubCommands = Boolean(cmd.subCommands);
113
+ const isRoot = parent === void 0 && hasSubCommands;
114
+ const isManifest = cmdName === MANIFEST_COMMAND;
115
+ const augment = getMetabaseAugment(cmd);
116
+ const details = augment?.details ?? null;
117
+ const examples = augment?.examples ?? [];
118
+ const transformed = transformBody(lines, {
119
+ cittyName,
120
+ breadcrumb: breadcrumb ?? cittyName,
121
+ hasSubCommands
122
+ });
123
+ const body = withDetails(transformed, details).join("\n").trimEnd();
124
+ const sections = [body];
125
+ if (examples.length > 0) sections.push(renderExamples(examples));
126
+ if (isRoot) sections.push(GETTING_STARTED_HINT);
127
+ if (!isManifest) sections.push(renderSchemaHint());
128
+ process.stdout.write(sections.join("\n\n") + "\n");
53
129
  }
54
- function renderExamples(examples) {
55
- if (examples.length === 0) return "";
56
- const lines = [
130
+ function transformBody(lines, rewrite) {
131
+ const mapped = lines.map((line, index) => {
132
+ if (index === 0) return line.replace(BREADCRUMB_SUFFIX, "");
133
+ if (line.startsWith(USAGE_PREFIX)) return rewriteUsageLine(line, rewrite);
134
+ return fixAliasRow(line);
135
+ });
136
+ return injectHelpOption(mapped);
137
+ }
138
+ function rewriteUsageLine(line, rewrite) {
139
+ if (rewrite.hasSubCommands) return `${USAGE_PREFIX}${rewrite.breadcrumb} ${COMMAND_PLACEHOLDER}`;
140
+ const content = line.slice(USAGE_PREFIX.length);
141
+ if (!content.startsWith(rewrite.cittyName)) return line;
142
+ const rest = content.slice(rewrite.cittyName.length);
143
+ return `${USAGE_PREFIX}${rewrite.breadcrumb}${rest}`;
144
+ }
145
+ function fixAliasRow(line) {
146
+ return line.replace(ALIAS_PAIR, (match, kebab) => `--${kebab}`.padStart(match.length));
147
+ }
148
+ function injectHelpOption(lines) {
149
+ const headerIndex = lines.indexOf(OPTIONS_HEADER);
150
+ if (headerIndex < 0) return lines;
151
+ let firstRowIndex = headerIndex + 1;
152
+ while (firstRowIndex < lines.length && lines[firstRowIndex] === "") firstRowIndex += 1;
153
+ const sample = lines[firstRowIndex];
154
+ if (sample === void 0) return lines;
155
+ const layout = optionLayout(sample);
156
+ if (layout === null) return lines;
157
+ let endIndex = firstRowIndex;
158
+ while (endIndex < lines.length && lines[endIndex] !== "") endIndex += 1;
159
+ const helpRow = HELP_FLAG_SPEC.padStart(layout.flagEnd).padEnd(layout.descStart) + HELP_FLAG_DESCRIPTION;
160
+ return [
161
+ ...lines.slice(0, endIndex),
162
+ helpRow,
163
+ ...lines.slice(endIndex)
164
+ ];
165
+ }
166
+ function optionLayout(row) {
167
+ const firstNonSpace = row.search(/\S/);
168
+ if (firstNonSpace < 0) return null;
169
+ const flagEnd = row.indexOf(COLUMN_GAP, firstNonSpace);
170
+ if (flagEnd < 0) return null;
171
+ const gapRemainder = row.slice(flagEnd).search(/\S/);
172
+ if (gapRemainder < 0) return null;
173
+ return {
174
+ flagEnd,
175
+ descStart: flagEnd + gapRemainder
176
+ };
177
+ }
178
+ function withDetails(lines, details) {
179
+ if (details === null) return lines;
180
+ const [first, ...rest] = lines;
181
+ if (first === void 0) return lines;
182
+ return [
183
+ first,
57
184
  "",
58
- "EXAMPLES",
59
- ""
185
+ details,
186
+ ...rest
60
187
  ];
61
- for (const example of examples) lines.push(` ${example}`);
62
- return lines.join("\n");
63
188
  }
64
- function renderSchemaHint() {
189
+ function renderExamples(examples) {
65
190
  return [
191
+ "EXAMPLES",
66
192
  "",
193
+ ...examples.map((example) => `${LINE_PREFIX}${example}`)
194
+ ].join("\n");
195
+ }
196
+ function renderSchemaHint() {
197
+ return [
67
198
  "SCHEMA",
68
199
  "",
69
- " mb __manifest # machine-readable command tree (flags, output, examples)"
200
+ `${LINE_PREFIX}${CLI_NAME} ${MANIFEST_COMMAND} # machine-readable command manifest (flags, output, examples)`
70
201
  ].join("\n");
71
202
  }
203
+ async function walkCommandPath(root, rawArgs) {
204
+ const rootMeta = await resolveCitty(root.meta);
205
+ const segments = rootMeta?.name === void 0 ? [] : [rootMeta.name];
206
+ let current = root;
207
+ let index = 0;
208
+ while (index < rawArgs.length) {
209
+ const subCommands = await resolveCitty(current.subCommands);
210
+ if (subCommands === void 0) break;
211
+ const argsDef = await resolveCitty(current.args) ?? {};
212
+ index = skipFlags(rawArgs, index, argsDef);
213
+ const token = rawArgs[index];
214
+ if (token === void 0) break;
215
+ const match = await findSubCommand(subCommands, token);
216
+ if (match === null) return {
217
+ segments,
218
+ unknownToken: token
219
+ };
220
+ segments.push(match.name);
221
+ current = match.command;
222
+ index += 1;
223
+ }
224
+ return {
225
+ segments,
226
+ unknownToken: null
227
+ };
228
+ }
229
+ async function resolveBreadcrumb(root, rawArgs) {
230
+ const { segments } = await walkCommandPath(root, rawArgs);
231
+ return segments.length > 0 ? segments.join(" ") : CLI_NAME;
232
+ }
233
+ async function findUnknownCommand(root, rawArgs) {
234
+ return (await walkCommandPath(root, rawArgs)).unknownToken;
235
+ }
236
+ function skipFlags(rawArgs, start, argsDef) {
237
+ let index = start;
238
+ while (index < rawArgs.length) {
239
+ const token = rawArgs[index];
240
+ if (token === void 0) return index;
241
+ if (token === "--") return rawArgs.length;
242
+ if (!token.startsWith("-")) return index;
243
+ if (flagConsumesValue(token, argsDef)) index += 1;
244
+ index += 1;
245
+ }
246
+ return index;
247
+ }
248
+ async function findSubCommand(subCommands, token) {
249
+ const direct = subCommands[token];
250
+ if (direct !== void 0) {
251
+ const command = await resolveCitty(direct);
252
+ if (command === void 0) return null;
253
+ const meta = await resolveCitty(command.meta);
254
+ return {
255
+ name: meta?.name ?? token,
256
+ command
257
+ };
258
+ }
259
+ for (const [key, loader] of Object.entries(subCommands)) {
260
+ const command = await resolveCitty(loader);
261
+ if (command === void 0) continue;
262
+ const meta = await resolveCitty(command.meta);
263
+ if (toAliasArray(meta?.alias).includes(token)) return {
264
+ name: meta?.name ?? key,
265
+ command
266
+ };
267
+ }
268
+ return null;
269
+ }
72
270
 
73
271
  //#endregion
74
272
  //#region src/cli.ts
75
- runMain(main_default, { showUsage });
273
+ const HELP_FLAGS = new Set(["--help", "-h"]);
274
+ async function run() {
275
+ const rawArgs = hoistGlobalFlags(process.argv.slice(2));
276
+ const showUsageWithBreadcrumb = async (cmd, parent) => {
277
+ const breadcrumb = await resolveBreadcrumb(main_default, rawArgs);
278
+ await showUsage(cmd, parent, breadcrumb);
279
+ };
280
+ if (rawArgs.length === 0) {
281
+ await showUsageWithBreadcrumb(main_default);
282
+ return;
283
+ }
284
+ if (!rawArgs.some((arg) => HELP_FLAGS.has(arg))) {
285
+ const unknown = await findUnknownCommand(main_default, rawArgs);
286
+ if (unknown !== null) {
287
+ reportError(new ConfigError(`unknown command: ${unknown}`));
288
+ return;
289
+ }
290
+ }
291
+ await runMain(main_default, {
292
+ showUsage: showUsageWithBreadcrumb,
293
+ rawArgs
294
+ });
295
+ }
296
+ run().catch((error) => {
297
+ reportError(error);
298
+ });
76
299
 
77
300
  //#endregion
@@ -0,0 +1,21 @@
1
+ import { defineCommand } from "citty";
2
+
3
+ //#region src/commands/collection/index.ts
4
+ var collection_default = defineCommand({
5
+ meta: {
6
+ name: "collection",
7
+ alias: "collections",
8
+ description: "Manage Metabase collections"
9
+ },
10
+ subCommands: {
11
+ list: () => import("./list-Brgh-Z2v.mjs").then((mod) => mod.default),
12
+ get: () => import("./get-lb7q3JYs.mjs").then((mod) => mod.default),
13
+ items: () => import("./items-BWfvkY-J.mjs").then((mod) => mod.default),
14
+ tree: () => import("./tree-Des2ZG9d.mjs").then((mod) => mod.default),
15
+ create: () => import("./create-BTcpaop_.mjs").then((mod) => mod.default),
16
+ archive: () => import("./archive-lWgqiFAt.mjs").then((mod) => mod.default)
17
+ }
18
+ });
19
+
20
+ //#endregion
21
+ export { collection_default as default };