@metabase/cli 0.1.5 → 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.
- package/README.md +115 -102
- package/dist/{add-collection-C_iovi9i.mjs → add-collection-BU8r3r2M.mjs} +9 -4
- package/dist/add-collection-C0w6ACQF.mjs +11 -0
- package/dist/{archive-Dvzrmdbk.mjs → archive-BNinrUak.mjs} +9 -8
- package/dist/{archive-WaEW85NB.mjs → archive-C1enZgKV.mjs} +8 -7
- package/dist/archive-CDA0KxL8.mjs +40 -0
- package/dist/{archive-BKPO8lEO.mjs → archive-CRhiBpPJ.mjs} +9 -8
- package/dist/{archive-DdaP94H3.mjs → archive-DMPS8Kih.mjs} +9 -8
- package/dist/archive-lWgqiFAt.mjs +40 -0
- package/dist/auth-CzXb_zB2.mjs +19 -0
- package/dist/{body-XtR7-uCO.mjs → body-DjdFxjpg.mjs} +4 -4
- package/dist/{branches-XUY4JY-X.mjs → branches-B1WRfG7-.mjs} +11 -7
- package/dist/{cancel-BrUVO_ax.mjs → cancel-Dl_Ho056.mjs} +7 -6
- package/dist/{cancel-task-oXheTOB6.mjs → cancel-task-CdigdCaO.mjs} +11 -7
- package/dist/capabilities-7e9MgquN.mjs +29 -0
- package/dist/card-DP4rfoOi.mjs +21 -0
- package/dist/{card-CQxvHeyP.mjs → card-DlCAaAPq.mjs} +1 -1
- package/dist/{cards-CONTTAG9.mjs → cards-BGiJS675.mjs} +8 -7
- package/dist/cli.mjs +264 -44
- package/dist/collection-tY18ezvn.mjs +21 -0
- package/dist/{predicates-CGO17Q15.mjs → command-augment-BH9qgQ5u.mjs} +66 -14
- package/dist/create-BNiva__H.mjs +52 -0
- package/dist/{create-Ca9lIDwP.mjs → create-BTcpaop_.mjs} +9 -8
- package/dist/{create-V-q2rU0T.mjs → create-BYlIju0b.mjs} +14 -12
- package/dist/{create-DZxUeqdf.mjs → create-Be_0Vier.mjs} +10 -9
- package/dist/{create-kYpjobrq.mjs → create-CHF313Qg.mjs} +13 -9
- package/dist/{create-swbIXdo5.mjs → create-CwGtmwqm.mjs} +14 -12
- package/dist/{create-Dq25vsMu.mjs → create-CzzrbL0u.mjs} +10 -9
- package/dist/{create-Le3Bqn7b.mjs → create-DGth_uOp.mjs} +14 -12
- package/dist/{create-branch-D5u14AxL.mjs → create-branch-DKZkoQ64.mjs} +11 -7
- package/dist/{create-Cs2xntFG.mjs → create-dhxPxfF3.mjs} +16 -14
- package/dist/{credentials-BIQ1cEzM.mjs → credentials-dzeq7ckm.mjs} +12 -11
- package/dist/{current-task-DCq7rk9V.mjs → current-task-CCRzm0_7.mjs} +11 -7
- package/dist/dashboard-ChM_Tu0l.mjs +22 -0
- package/dist/{dashboard-CnMD04PQ.mjs → dashboard-FY5UzJ_Z.mjs} +2 -1
- package/dist/{database-BSvzYlRe.mjs → database-CIXwHKjK.mjs} +3 -3
- package/dist/{database-vvig8k4x.mjs → database-lH-B3G1I.mjs} +1 -1
- package/dist/db-DrQn_i3W.mjs +22 -0
- package/dist/{remove-C6bS0Z6w.mjs → delete-CM3jnAeQ.mjs} +21 -20
- package/dist/{delete-CUx6RT9e.mjs → delete-Dimc-2y8.mjs} +9 -8
- package/dist/{delete-VTAS9EUt.mjs → delete-ZjnV35OJ.mjs} +9 -8
- package/dist/{delete-runtime-DfFMWJJ6.mjs → delete-runtime-B6RQo_pw.mjs} +5 -3
- package/dist/{delete-table-DzUneMKe.mjs → delete-table-agZJpivt.mjs} +9 -8
- package/dist/{deprovision-CpJfGgCt.mjs → deprovision-CwxcIT3k.mjs} +16 -12
- package/dist/{dirty-nkAOXxgC.mjs → dirty-D4d0yHqj.mjs} +11 -7
- package/dist/{docker-D5FTIoD0.mjs → docker-Oq80q3tu.mjs} +4 -4
- package/dist/{translate-Cqsd0Px5.mjs → eid-BXzaQh0o.mjs} +37 -22
- package/dist/error-C9S6PN3-.mjs +190 -0
- package/dist/{export-BWvY7X_G.mjs → export-DTygoXBP.mjs} +17 -16
- package/dist/field-Z6Pcxf4n.mjs +19 -0
- package/dist/{fields-dH16G5UV.mjs → fields-CoQi99gv.mjs} +9 -8
- package/dist/{get-BnBRKHr7.mjs → get-Bzys7vgp.mjs} +8 -7
- package/dist/{get-B7i_nYJB.mjs → get-C2p383Qc.mjs} +8 -7
- package/dist/{get-D96QEU49.mjs → get-C3HdQ91a.mjs} +8 -7
- package/dist/{get-DNN1X2gN.mjs → get-CP3Z3NiH.mjs} +9 -8
- package/dist/{get-CACaBFLt.mjs → get-C_w1kvN3.mjs} +9 -8
- package/dist/{get-D8e_RzZ0.mjs → get-CzuzeKSe.mjs} +10 -9
- package/dist/{get-C6SR3A9t.mjs → get-D3SbEQSE.mjs} +10 -9
- package/dist/{get-7macOPAI.mjs → get-DFxZXaKz.mjs} +7 -7
- package/dist/{get-DAWofnzK.mjs → get-DQTZG_NP.mjs} +8 -7
- package/dist/{get-BcqxMVC1.mjs → get-DSWFjy7O.mjs} +8 -7
- package/dist/{get-R7OaVL_t.mjs → get-Ddr0XLh7.mjs} +8 -7
- package/dist/{get-B08K82JV.mjs → get-Hc93A0Yz.mjs} +8 -7
- package/dist/{get-CKxlhMy1.mjs → get-lb7q3JYs.mjs} +7 -6
- package/dist/get-run-B7sKdaDU.mjs +38 -0
- package/dist/git-sync-CiGAad76.mjs +28 -0
- package/dist/{has-remote-changes-BAnIXQXU.mjs → has-remote-changes-BY10-nnE.mjs} +11 -7
- package/dist/{import-CfdPEMng.mjs → import-CiMz4Wz-.mjs} +17 -16
- package/dist/{input-BQ-BZA8h.mjs → input-cMSEqISy.mjs} +7 -4
- package/dist/{is-dirty-CZWcG0vj.mjs → is-dirty-BZOaryxT.mjs} +9 -4
- package/dist/is-dirty-Ume4oV0j.mjs +10 -0
- package/dist/{items-DqwahOKf.mjs → items-BWfvkY-J.mjs} +9 -8
- package/dist/key-C2XG394c.mjs +17 -0
- package/dist/license-Dxarh-gG.mjs +17 -0
- package/dist/{list-vF4EneaE.mjs → list--OYdUTtu.mjs} +7 -6
- package/dist/{list-yxVAE1S7.mjs → list-2j7GsXsl.mjs} +7 -6
- package/dist/{list-D41gfkKb.mjs → list-BI4zr8LW.mjs} +10 -8
- package/dist/{list-BpNU1neq.mjs → list-Brgh-Z2v.mjs} +8 -6
- package/dist/{list-ViT2KWhv.mjs → list-C3hfovHv.mjs} +7 -6
- package/dist/{list-CQkDqphl.mjs → list-CL7eCOQE.mjs} +7 -6
- package/dist/{list-L63TpX1t.mjs → list-Clz5igWg.mjs} +7 -7
- package/dist/list-D4sFiqX8.mjs +173 -0
- package/dist/{list-oftHLFbE.mjs → list-DXH7TlkU.mjs} +9 -7
- package/dist/{list-BqNMpIXy.mjs → list-DZ8fNUoQ.mjs} +9 -8
- package/dist/{list-Bkd7Nbds.mjs → list-SOG0whQ-.mjs} +7 -6
- package/dist/{list-J277Qtki.mjs → list-d58BprgJ.mjs} +7 -6
- package/dist/{list-DJcGwJ4W.mjs → list-sD5N3fGk.mjs} +9 -8
- package/dist/{list-DBOYoJtA.mjs → list-zSO0DMw-.mjs} +10 -6
- package/dist/{login-D1nZwgKv.mjs → login-Bm2AnCez.mjs} +65 -80
- package/dist/{logout-DD4q5whi.mjs → logout-BlyRJODO.mjs} +8 -7
- package/dist/{logs-Ci3mJE2z.mjs → logs-CywPikkL.mjs} +9 -8
- package/dist/{manifest-CGM7XNLC.mjs → manifest-BBR46KFM.mjs} +15 -15
- package/dist/measure-C44EK_xt.mjs +20 -0
- package/dist/{measure-BEQfnLdN.mjs → measure-ClESGxIb.mjs} +2 -2
- package/dist/{metadata-BDat-jN9.mjs → metadata-B8ZSF9LA.mjs} +10 -9
- package/dist/{metadata-29_qlqbz.mjs → metadata-DqiI2q9q.mjs} +9 -8
- package/dist/parse-enum-CrEWOhuY.mjs +11 -0
- package/dist/{parse-id-CysSaCbf.mjs → parse-id-lk_K-CEF.mjs} +1 -1
- package/dist/{parse-ref-D1yeDOn8.mjs → parse-ref-BiETXmvm.mjs} +1 -1
- package/dist/{parse-schemas-B10n01ez.mjs → parse-schemas-BqUdWUwq.mjs} +2 -2
- package/dist/{path-DLByFMMA.mjs → path-AEtZ3mBq.mjs} +7 -7
- package/dist/{poll-p9Y7-JEQ.mjs → poll-DHKDpCiq.mjs} +2 -2
- package/dist/{poll-task-BQe0NvJZ.mjs → poll-task-Cooi0lQV.mjs} +3 -20
- package/dist/{preflight-CvFu0Cct.mjs → preflight-aXV5LyDs.mjs} +4 -4
- package/dist/{process-zJeVJZTM.mjs → process-C7V8LJ-j.mjs} +1 -1
- package/dist/{prompt-DgDNy_Pc.mjs → prompt-CFKoys7k.mjs} +3 -1
- package/dist/{provision-BP-b4Are.mjs → provision-UWcNDoDe.mjs} +29 -24
- package/dist/{ps-BxQdpkr5.mjs → ps-CJU0EbrC.mjs} +5 -3
- package/dist/ps-DEroLgbI.mjs +11 -0
- package/dist/{query-CFH4nBlK.mjs → query-AaKzYnTY.mjs} +9 -8
- package/dist/{query-C7zTlFJA.mjs → query-BlsVNZpD.mjs} +15 -13
- package/dist/{remove-BuWxx3hY.mjs → remove-BFWun0e8.mjs} +9 -8
- package/dist/{remove-collection-Bc4roCq0.mjs → remove-collection-CoCmrrQs.mjs} +13 -9
- package/dist/{render-DuoDUTVL.mjs → render-CfznwleY.mjs} +15 -17
- package/dist/render-OQn3iRsI.mjs +32 -0
- package/dist/{rescan-values-DabyRYQ_.mjs → rescan-values-C0FDsjT7.mjs} +10 -9
- package/dist/{run-Cl-9RtC4.mjs → run-B4Wn43zm.mjs} +10 -9
- package/dist/{runs-BH6s1Zao.mjs → runs-Bbaszr18.mjs} +9 -8
- package/dist/{runtime-CDu6fykq.mjs → runtime-Dmv5VtUK.mjs} +657 -428
- package/dist/{schema-tables-i58wp_p3.mjs → schema-tables-CaWinbuK.mjs} +9 -8
- package/dist/{schemas-_m8RYRl9.mjs → schemas-DUgGpAyB.mjs} +7 -6
- package/dist/{search-DObOsjbP.mjs → search-BLrBXLUk.mjs} +12 -16
- package/dist/segment-B3Uwwcsm.mjs +20 -0
- package/dist/{set-CJA9dpK6.mjs → set-B8cUbRLD.mjs} +13 -12
- package/dist/{set-CwVWeAsi.mjs → set-DfGsta5O.mjs} +11 -10
- package/dist/{setting-Czy4ws6h.mjs → setting-D2p2MA7f.mjs} +3 -3
- package/dist/{setup-DqBOe3HZ.mjs → setup-C9ikBRw_.mjs} +9 -8
- package/dist/{skills-C2rTVj0n.mjs → skills-CUHIcQS6.mjs} +3 -3
- package/dist/{skills-CHU7uuDU.mjs → skills-CiN1OQ8W.mjs} +2 -2
- package/dist/snippet-B7D0uWlz.mjs +20 -0
- package/dist/{start-CfruN4wF.mjs → start-3PX3ahjT.mjs} +68 -37
- package/dist/{stash-CWuXKSZq.mjs → stash-EIDcSvpF.mjs} +17 -16
- package/dist/{status-D-RYZB9G.mjs → status-95ElRAu9.mjs} +12 -8
- package/dist/status-B0_MiZEf.mjs +100 -0
- package/dist/status-CEplmC44.mjs +34 -0
- package/dist/{stop-D8Hr4cKX.mjs → stop-CQ0XGrN8.mjs} +11 -10
- package/dist/{summary-Lt2XLBK9.mjs → summary-C12LiEuJ.mjs} +8 -7
- package/dist/{sync-schema-BDElSynU.mjs → sync-schema-Ba8M3DiX.mjs} +10 -9
- package/dist/{table-B-PYcgGb.mjs → table-C7a5V6Zn.mjs} +1 -1
- package/dist/table-e6h8SLVX.mjs +20 -0
- package/dist/transform-BMYh1lsC.mjs +25 -0
- package/dist/transform-job-Cm7z5TfH.mjs +20 -0
- package/dist/{transform-job-BrhOLO4M.mjs → transform-job-DeTDPMxt.mjs} +1 -1
- package/dist/{tree-DfvjDjmk.mjs → tree-Des2ZG9d.mjs} +6 -5
- package/dist/{update-CqnDMNtZ.mjs → update-Bx54nWEI.mjs} +17 -15
- package/dist/{update-D9Z8cL7h.mjs → update-CyIZdbIQ.mjs} +11 -10
- package/dist/{update-CVxOxmt6.mjs → update-DBi5U8zb.mjs} +16 -14
- package/dist/{update-BYduslhn.mjs → update-DHZubok3.mjs} +18 -14
- package/dist/{update-BgcroYkF.mjs → update-DSgceARZ.mjs} +11 -10
- package/dist/{update-zp7pCBZH.mjs → update-DzAN4SPj.mjs} +15 -13
- package/dist/{update-qnFY5IuC.mjs → update-F6DmZncY.mjs} +11 -10
- package/dist/{update-B0bjPqKC.mjs → update-_QfgNa53.mjs} +12 -11
- package/dist/{update-dashcard-CQ3kmmss.mjs → update-dashcard-wpSjv4M7.mjs} +11 -10
- package/dist/{update-DzgXF082.mjs → update-mYVnoYNV.mjs} +15 -13
- package/dist/{update-DuA8-cCq.mjs → update-njHe3j-s.mjs} +15 -13
- package/dist/{upgrade-CIgTr2CG.mjs → upgrade-iAuvhX-W.mjs} +9 -8
- package/dist/{url-B5MgZXzg.mjs → url-DWaT6WIZ.mjs} +11 -10
- package/dist/{uuid-CJz9TmHI.mjs → uuid-CMKnS8-z.mjs} +8 -6
- package/dist/{validate-CB0bu50i.mjs → validate-dPEOnOf8.mjs} +2 -1
- package/dist/{validate-query-CavIA0Q2.mjs → validate-query-Cw6WE5Y8.mjs} +3 -3
- package/dist/{values-BXN6tx1i.mjs → values-BfSTAbzc.mjs} +8 -7
- package/dist/verify-D5YtTqqp.mjs +79 -0
- package/dist/{wait-BFqBlg0y.mjs → wait-8yV9_WIo.mjs} +2 -2
- package/dist/{wait-tDp9ZOou.mjs → wait-Bv3Tsnv4.mjs} +12 -8
- package/dist/{wait-flags-CN-e9zNq.mjs → wait-flags-Dzq9BGQY.mjs} +20 -9
- package/dist/workspace-CKLZrR7l.mjs +26 -0
- package/dist/{workspace-credentials-4lIxxz4g.mjs → workspace-credentials-BXpABsNZ.mjs} +2 -2
- package/dist/{yaml-ECiog374.mjs → yaml-YTQiYJ9s.mjs} +1 -1
- package/package.json +2 -1
- package/skill-data/core/SKILL.md +55 -453
- package/skill-data/git-sync/SKILL.md +1 -1
- package/skill-data/mbql/SKILL.md +156 -0
- package/skill-data/mbql/references/operators.md +253 -0
- package/skill-data/transform/SKILL.md +2 -40
- package/skill-data/viz/SKILL.md +137 -0
- package/skill-data/viz/references/settings.md +312 -0
- package/skill-data/workspace/SKILL.md +45 -63
- package/skills/metabase-cli/SKILL.md +5 -26
- package/dist/add-collection-ucsyAMkV.mjs +0 -11
- package/dist/api-key-BENHbTbV.mjs +0 -13
- package/dist/auth-DICRtJDy.mjs +0 -19
- package/dist/card-l-UmrUIo.mjs +0 -20
- package/dist/collection-oV0olVY-.mjs +0 -19
- package/dist/command-augment-D9pI9Vbh.mjs +0 -11
- package/dist/create-CrUq6sib.mjs +0 -125
- package/dist/create-D3Z878yr.mjs +0 -50
- package/dist/dashboard-hbKDd36X.mjs +0 -20
- package/dist/db-qVK6NsdB.mjs +0 -22
- package/dist/eid-CDFXX_6H.mjs +0 -13
- package/dist/field-C0LE7RQI.mjs +0 -18
- package/dist/flag-pair-Fmcdkrfx.mjs +0 -17
- package/dist/get-run-CwFuR4Uw.mjs +0 -36
- package/dist/git-sync-DV7YjniX.mjs +0 -28
- package/dist/is-dirty-LxVbm2C5.mjs +0 -10
- package/dist/key-CCJdVWKc.mjs +0 -12
- package/dist/license-Cb6ewEJO.mjs +0 -17
- package/dist/list-DV6CONhp.mjs +0 -55
- package/dist/measure-XhJuL77y.mjs +0 -19
- package/dist/package-DFUprkSZ.mjs +0 -85
- package/dist/ps-Bk6unzaX.mjs +0 -11
- package/dist/segment-DfxZdJmR.mjs +0 -19
- package/dist/snippet-BCY4KHBU.mjs +0 -19
- package/dist/status-1oUnw803.mjs +0 -56
- package/dist/status-J9HIDcA5.mjs +0 -32
- package/dist/table-BwX3Ib5f.mjs +0 -19
- package/dist/transform-iaAi37V0.mjs +0 -24
- package/dist/transform-job-Bemonf82.mjs +0 -19
- package/dist/workspace-BBsT0H0g.mjs +0 -24
- /package/dist/{body-flags-BK7J6Daz.mjs → body-flags-D7q87Btw.mjs} +0 -0
- /package/dist/{field-B3gvaqpK.mjs → field-yomXlkvl.mjs} +0 -0
- /package/dist/{paginate-CTSfuYiF.mjs → paginate-Dfm9eO9A.mjs} +0 -0
- /package/dist/{revision-message-flag-oyq2xrDU.mjs → revision-message-flag-WmsIzUOM.mjs} +0 -0
- /package/dist/{segment-BMrUBz94.mjs → segment-Be2v4ilr.mjs} +0 -0
- /package/dist/{setting-CTaAeMci.mjs → setting-oL97SNeO.mjs} +0 -0
- /package/dist/{snippet-CSWqkslB.mjs → snippet-COggaWxx.mjs} +0 -0
- /package/dist/{transform-DR4ejuPM.mjs → transform-GTW3G-01.mjs} +0 -0
- /package/dist/{workspace-DUfqhPm5.mjs → workspace-BBXJczJK.mjs} +0 -0
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import "./
|
|
2
|
-
import "./
|
|
3
|
-
import {
|
|
4
|
-
import "./
|
|
5
|
-
import {
|
|
6
|
-
import { REMOTE_SYNC_PATHS } from "./poll-task-
|
|
7
|
-
import "./poll-
|
|
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 "./
|
|
2
|
-
import "./
|
|
3
|
-
import {
|
|
4
|
-
import "./
|
|
5
|
-
import {
|
|
6
|
-
import { parseId } from "./parse-id-
|
|
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 "./
|
|
2
|
-
import "./
|
|
3
|
-
import {
|
|
4
|
-
import "./
|
|
5
|
-
import {
|
|
6
|
-
import { REMOTE_SYNC_PATHS, SyncTask, syncTaskView } from "./poll-task-
|
|
7
|
-
import "./poll-
|
|
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,10 +1,10 @@
|
|
|
1
|
-
import "./
|
|
2
|
-
import "./
|
|
3
|
-
import {
|
|
4
|
-
import "./
|
|
5
|
-
import {
|
|
6
|
-
import { parseId } from "./parse-id-
|
|
7
|
-
import { DashboardDetail, DashcardCompact, dashcardView } from "./dashboard-
|
|
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 {
|
|
3
|
-
import {
|
|
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,31 +58,29 @@ const main = defineCommand({
|
|
|
11
58
|
description: package_default.description
|
|
12
59
|
},
|
|
13
60
|
subCommands: {
|
|
14
|
-
auth: () => import("./auth-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
transform: () => import("./transform-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
skills: () => import("./skills-C2rTVj0n.mjs").then((mod) => mod.default),
|
|
38
|
-
__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))
|
|
39
84
|
}
|
|
40
85
|
});
|
|
41
86
|
var main_default = main;
|
|
@@ -43,38 +88,213 @@ var main_default = main;
|
|
|
43
88
|
//#endregion
|
|
44
89
|
//#region src/output/help.ts
|
|
45
90
|
const ANSI_ESC = String.fromCharCode(27);
|
|
46
|
-
const
|
|
91
|
+
const ANSI_PATTERN = new RegExp(`${ANSI_ESC}\\[[0-9;]*m`, "g");
|
|
92
|
+
const BREADCRUMB_SUFFIX = / \([^()]*\)\s*$/;
|
|
47
93
|
const TRAILING_WHITESPACE = /[ \t]+$/;
|
|
48
|
-
|
|
49
|
-
|
|
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, "");
|
|
50
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");
|
|
129
|
+
}
|
|
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;
|
|
51
180
|
const [first, ...rest] = lines;
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
181
|
+
if (first === void 0) return lines;
|
|
182
|
+
return [
|
|
183
|
+
first,
|
|
184
|
+
"",
|
|
185
|
+
details,
|
|
186
|
+
...rest
|
|
187
|
+
];
|
|
56
188
|
}
|
|
57
189
|
function renderExamples(examples) {
|
|
58
|
-
|
|
59
|
-
const lines = [
|
|
60
|
-
"",
|
|
190
|
+
return [
|
|
61
191
|
"EXAMPLES",
|
|
62
|
-
""
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
return lines.join("\n");
|
|
192
|
+
"",
|
|
193
|
+
...examples.map((example) => `${LINE_PREFIX}${example}`)
|
|
194
|
+
].join("\n");
|
|
66
195
|
}
|
|
67
196
|
function renderSchemaHint() {
|
|
68
197
|
return [
|
|
69
|
-
"",
|
|
70
198
|
"SCHEMA",
|
|
71
199
|
"",
|
|
72
|
-
|
|
200
|
+
`${LINE_PREFIX}${CLI_NAME} ${MANIFEST_COMMAND} # machine-readable command manifest (flags, output, examples)`
|
|
73
201
|
].join("\n");
|
|
74
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
|
+
}
|
|
75
270
|
|
|
76
271
|
//#endregion
|
|
77
272
|
//#region src/cli.ts
|
|
78
|
-
|
|
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
|
+
});
|
|
79
299
|
|
|
80
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 };
|
|
@@ -1,6 +1,31 @@
|
|
|
1
1
|
import { ZodError, core } from "zod";
|
|
2
2
|
import { isCancel } from "@clack/prompts";
|
|
3
3
|
|
|
4
|
+
//#region src/runtime/citty.ts
|
|
5
|
+
async function resolveCitty(value) {
|
|
6
|
+
if (value === void 0) return void 0;
|
|
7
|
+
if (typeof value === "function") return value();
|
|
8
|
+
return value;
|
|
9
|
+
}
|
|
10
|
+
function toAliasArray(alias) {
|
|
11
|
+
if (alias === void 0) return [];
|
|
12
|
+
return Array.isArray(alias) ? alias : [alias];
|
|
13
|
+
}
|
|
14
|
+
function normalizeFlag(value) {
|
|
15
|
+
return value.replace(/^-+/, "").replace(/-/g, "").toLowerCase();
|
|
16
|
+
}
|
|
17
|
+
function flagConsumesValue(token, argsDef) {
|
|
18
|
+
if (token.includes("=")) return false;
|
|
19
|
+
const name = normalizeFlag(token);
|
|
20
|
+
for (const [key, def] of Object.entries(argsDef)) {
|
|
21
|
+
if (def.type !== "string" && def.type !== "enum") continue;
|
|
22
|
+
if (normalizeFlag(key) === name) return true;
|
|
23
|
+
if (toAliasArray(def.alias).some((alias) => normalizeFlag(alias) === name)) return true;
|
|
24
|
+
}
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
//#endregion
|
|
4
29
|
//#region src/core/json-pointer.ts
|
|
5
30
|
function escapeJsonPointerSegment(key) {
|
|
6
31
|
if (typeof key === "number") return String(key);
|
|
@@ -51,23 +76,46 @@ var ValidationError = class extends MetabaseError {
|
|
|
51
76
|
get userMessage() {
|
|
52
77
|
const issues = this.developerDetail.zodIssues;
|
|
53
78
|
if (issues.length === 0) return this.message;
|
|
54
|
-
return `${this.message}\n${
|
|
79
|
+
return `${this.message}\n${formatIssueLines(issues, VALIDATION_ISSUE_FORMAT)}`;
|
|
55
80
|
}
|
|
56
81
|
};
|
|
57
|
-
const
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
82
|
+
const VALIDATION_MAX_ISSUES = 10;
|
|
83
|
+
const RESPONSE_SHAPE_MAX_ISSUES = 5;
|
|
84
|
+
const VALIDATION_ISSUE_FORMAT = {
|
|
85
|
+
max: VALIDATION_MAX_ISSUES,
|
|
86
|
+
formatIssue: (issue) => `${formatZodIssuePointer(issue.path)}: ${issue.message}`
|
|
87
|
+
};
|
|
88
|
+
const RESPONSE_SHAPE_ISSUE_FORMAT = {
|
|
89
|
+
max: RESPONSE_SHAPE_MAX_ISSUES,
|
|
90
|
+
formatIssue: formatZodIssue
|
|
91
|
+
};
|
|
92
|
+
function formatIssueLines(issues, format) {
|
|
93
|
+
const head = issues.slice(0, format.max).map(format.formatIssue);
|
|
94
|
+
const overflow = issues.length - format.max;
|
|
95
|
+
if (overflow > 0) head.push(`... and ${overflow} more`);
|
|
96
|
+
return head.map((line) => ` ${line}`).join("\n");
|
|
66
97
|
}
|
|
67
98
|
function formatZodIssuePointer(path) {
|
|
68
99
|
if (path.length === 0) return "/";
|
|
69
100
|
return path.map((key) => `/${escapeJsonPointerSegment(key)}`).join("");
|
|
70
101
|
}
|
|
102
|
+
const RESPONSE_SHAPE_LEAD_UNKNOWN_VERSION = "Metabase returned unexpected response shape";
|
|
103
|
+
var ResponseShapeError = class extends MetabaseError {
|
|
104
|
+
category = "response-shape";
|
|
105
|
+
isRetryable = false;
|
|
106
|
+
exitCode = 1;
|
|
107
|
+
developerDetail;
|
|
108
|
+
constructor(developerDetail) {
|
|
109
|
+
super(formatResponseShapeMessage(developerDetail.zodIssues, developerDetail.serverTag));
|
|
110
|
+
this.name = "ResponseShapeError";
|
|
111
|
+
this.developerDetail = developerDetail;
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
function formatResponseShapeMessage(issues, serverTag) {
|
|
115
|
+
const lead = serverTag === null ? RESPONSE_SHAPE_LEAD_UNKNOWN_VERSION : `On Metabase ${serverTag} the response shape was unexpected`;
|
|
116
|
+
if (issues.length === 0) return lead;
|
|
117
|
+
return `${lead}:\n${formatIssueLines(issues, RESPONSE_SHAPE_ISSUE_FORMAT)}`;
|
|
118
|
+
}
|
|
71
119
|
var ConfigError = class extends MetabaseError {
|
|
72
120
|
category = "config";
|
|
73
121
|
isRetryable = false;
|
|
@@ -144,10 +192,14 @@ function errorMessage(value) {
|
|
|
144
192
|
}
|
|
145
193
|
|
|
146
194
|
//#endregion
|
|
147
|
-
//#region src/runtime/
|
|
148
|
-
|
|
149
|
-
|
|
195
|
+
//#region src/runtime/command-augment.ts
|
|
196
|
+
const augments = new WeakMap();
|
|
197
|
+
function setMetabaseAugment(cmd, augment) {
|
|
198
|
+
augments.set(cmd, augment);
|
|
199
|
+
}
|
|
200
|
+
function getMetabaseAugment(cmd) {
|
|
201
|
+
return augments.get(cmd) ?? null;
|
|
150
202
|
}
|
|
151
203
|
|
|
152
204
|
//#endregion
|
|
153
|
-
export { AbortError, ChainedRequestError, ConfigError, MetabaseError, NetworkError, TimeoutError, UnknownError, VERBOSE_ENV, ValidationError, errorMessage, escapeJsonPointerSegment, isNotFoundError,
|
|
205
|
+
export { AbortError, ChainedRequestError, ConfigError, MetabaseError, NetworkError, ResponseShapeError, TimeoutError, UnknownError, VERBOSE_ENV, ValidationError, errorMessage, escapeJsonPointerSegment, flagConsumesValue, getMetabaseAugment, isNotFoundError, normalizeFlag, resolveCitty, setMetabaseAugment, toAliasArray, toMetabaseError };
|