@metabase/cli 0.1.5 → 0.1.7
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 +128 -115
- package/dist/add-collection-C9BdVBs2.mjs +11 -0
- package/dist/{add-collection-C_iovi9i.mjs → add-collection-DQjTlDNF.mjs} +12 -5
- package/dist/archive-B3qiL-kK.mjs +40 -0
- package/dist/{archive-DdaP94H3.mjs → archive-BXzghEQX.mjs} +10 -9
- package/dist/{archive-WaEW85NB.mjs → archive-CBGKzEAl.mjs} +9 -8
- package/dist/{archive-BKPO8lEO.mjs → archive-CuVk8iwN.mjs} +10 -9
- package/dist/archive-DTN9tLGT.mjs +40 -0
- package/dist/{archive-Dvzrmdbk.mjs → archive-De8jzzq7.mjs} +10 -9
- package/dist/auth-D9eAyVoG.mjs +19 -0
- package/dist/{body-XtR7-uCO.mjs → body-tcURGnGh.mjs} +4 -4
- package/dist/{branches-XUY4JY-X.mjs → branches-CIGkjXIk.mjs} +11 -7
- package/dist/{cancel-BrUVO_ax.mjs → cancel-pPsvgJ0Z.mjs} +9 -8
- package/dist/{cancel-task-oXheTOB6.mjs → cancel-task-BLGE4UlL.mjs} +12 -8
- package/dist/capabilities-7e9MgquN.mjs +29 -0
- package/dist/card-DDDrWcDU.mjs +20 -0
- package/dist/{card-CQxvHeyP.mjs → card-ezYiriML.mjs} +1 -1
- package/dist/{cards-CONTTAG9.mjs → cards-Dq3nx_9n.mjs} +8 -7
- package/dist/cli.mjs +264 -44
- package/dist/collection-DkEvCDar.mjs +20 -0
- package/dist/{predicates-CGO17Q15.mjs → command-augment-BH9qgQ5u.mjs} +66 -14
- package/dist/{create-Cs2xntFG.mjs → create-9DBTkbMq.mjs} +18 -16
- package/dist/{create-kYpjobrq.mjs → create-B1dyuL9Y.mjs} +16 -10
- package/dist/create-BIphz0kO.mjs +52 -0
- package/dist/create-BcgoukG4.mjs +50 -0
- package/dist/create-BdPoSk_7.mjs +50 -0
- package/dist/{create-DZxUeqdf.mjs → create-BrUqxreg.mjs} +11 -10
- package/dist/create-DHscDhRd.mjs +50 -0
- package/dist/{create-Dq25vsMu.mjs → create-aPaUEGdr.mjs} +11 -10
- package/dist/{create-branch-D5u14AxL.mjs → create-branch-DGoc9CUU.mjs} +12 -8
- package/dist/{create-Ca9lIDwP.mjs → create-w3mQg9n4.mjs} +11 -10
- package/dist/{credentials-BIQ1cEzM.mjs → credentials-qryRLUed.mjs} +12 -11
- package/dist/current-task-DZM28rnr.mjs +40 -0
- package/dist/{dashboard-CnMD04PQ.mjs → dashboard-B4bn3z6t.mjs} +2 -1
- package/dist/dashboard-BLf1RZlk.mjs +21 -0
- package/dist/{database-vvig8k4x.mjs → database-BXiue1in.mjs} +1 -1
- package/dist/{database-BSvzYlRe.mjs → database-Ce1gOJF7.mjs} +3 -3
- package/dist/db-CWTFe_FZ.mjs +22 -0
- package/dist/{delete-VTAS9EUt.mjs → delete-BPaFdHZP.mjs} +11 -8
- package/dist/{delete-CUx6RT9e.mjs → delete-BrJOotpW.mjs} +11 -8
- package/dist/{remove-C6bS0Z6w.mjs → delete-FFj1xQWO.mjs} +25 -20
- package/dist/{delete-runtime-DfFMWJJ6.mjs → delete-runtime-uuYbd4k2.mjs} +9 -7
- package/dist/{delete-table-DzUneMKe.mjs → delete-table-CNupWUO0.mjs} +11 -8
- package/dist/{deprovision-CpJfGgCt.mjs → deprovision-BNr9fPDY.mjs} +18 -12
- package/dist/{dirty-nkAOXxgC.mjs → dirty-BCkNOY8c.mjs} +11 -7
- package/dist/{docker-D5FTIoD0.mjs → docker-Ds252Mwc.mjs} +4 -4
- package/dist/{translate-Cqsd0Px5.mjs → eid-CLY5X0Uw.mjs} +43 -23
- package/dist/error-ZsFeevV2.mjs +191 -0
- package/dist/{export-BWvY7X_G.mjs → export-CgHgWW3I.mjs} +20 -18
- package/dist/{field-B3gvaqpK.mjs → field-E0IBy4Uw.mjs} +12 -3
- package/dist/field-LL6W_c-c.mjs +18 -0
- package/dist/{fields-dH16G5UV.mjs → fields-RkRWU-u9.mjs} +9 -8
- package/dist/{get-D96QEU49.mjs → get-42tJ7BNp.mjs} +8 -7
- package/dist/{get-C6SR3A9t.mjs → get-B8l4t4Pz.mjs} +10 -9
- package/dist/{get-BnBRKHr7.mjs → get-B9kwSs6U.mjs} +8 -7
- package/dist/{get-7macOPAI.mjs → get-Bo4Cpd_c.mjs} +7 -7
- package/dist/{get-BcqxMVC1.mjs → get-C9O_aEGo.mjs} +8 -7
- package/dist/{get-CKxlhMy1.mjs → get-CRvbChoX.mjs} +8 -7
- package/dist/{get-B7i_nYJB.mjs → get-CTDqioaj.mjs} +8 -7
- package/dist/{get-D8e_RzZ0.mjs → get-CiZrZJLt.mjs} +10 -9
- package/dist/{get-B08K82JV.mjs → get-CvmqPN30.mjs} +8 -7
- package/dist/{get-CACaBFLt.mjs → get-DmzgSgrl.mjs} +9 -8
- package/dist/{get-R7OaVL_t.mjs → get-DsqGHNHN.mjs} +8 -7
- package/dist/get-run-CBwcRc8E.mjs +38 -0
- package/dist/{get-DNN1X2gN.mjs → get-sMpa-X4E.mjs} +9 -8
- package/dist/{get-DAWofnzK.mjs → get-y17zJMnU.mjs} +8 -7
- package/dist/git-sync-CrWTo3YX.mjs +28 -0
- package/dist/{has-remote-changes-BAnIXQXU.mjs → has-remote-changes-CfRidwXT.mjs} +13 -8
- package/dist/{import-CfdPEMng.mjs → import-BZV0Z2KR.mjs} +21 -18
- package/dist/{input-BQ-BZA8h.mjs → input-cMSEqISy.mjs} +7 -4
- package/dist/is-dirty-CPzOnnH6.mjs +10 -0
- package/dist/{is-dirty-CZWcG0vj.mjs → is-dirty-hKcB4OH9.mjs} +9 -4
- package/dist/{items-DqwahOKf.mjs → items-C94eW2Yd.mjs} +10 -9
- package/dist/key-vkNkH82H.mjs +17 -0
- package/dist/license-B37055sr.mjs +17 -0
- package/dist/{list-L63TpX1t.mjs → list-B0V7FeL2.mjs} +7 -7
- package/dist/{list-Bkd7Nbds.mjs → list-BFlzLGlw.mjs} +7 -6
- package/dist/{list-yxVAE1S7.mjs → list-BJXaGk-z.mjs} +7 -6
- package/dist/{list-BqNMpIXy.mjs → list-BS_Bxejg.mjs} +9 -8
- package/dist/{list-J277Qtki.mjs → list-BmHoYJr7.mjs} +7 -6
- package/dist/list-C-oZe1_p.mjs +173 -0
- package/dist/{list-ViT2KWhv.mjs → list-CF1pMN4S.mjs} +7 -6
- package/dist/{list-BpNU1neq.mjs → list-CU6sOfI-.mjs} +9 -7
- package/dist/{list-oftHLFbE.mjs → list-CqN4gvCk.mjs} +9 -7
- package/dist/{list-DBOYoJtA.mjs → list-DUXdt0XI.mjs} +10 -6
- package/dist/{list-D41gfkKb.mjs → list-DfDZr55C.mjs} +10 -8
- package/dist/{list-vF4EneaE.mjs → list-DrINpVLM.mjs} +7 -6
- package/dist/{list-DJcGwJ4W.mjs → list-DuSoEk_J.mjs} +9 -8
- package/dist/{list-CQkDqphl.mjs → list-HS15y_WN.mjs} +7 -6
- package/dist/login-enh9Yimb.mjs +181 -0
- package/dist/{logout-DD4q5whi.mjs → logout-BWLPLDh8.mjs} +13 -11
- package/dist/{logs-Ci3mJE2z.mjs → logs-Cu3QtvPs.mjs} +9 -8
- package/dist/{manifest-CGM7XNLC.mjs → manifest-BNh0Lw6p.mjs} +15 -15
- package/dist/{measure-BEQfnLdN.mjs → measure-Bt3InQsA.mjs} +2 -2
- package/dist/measure-CDlEPFtB.mjs +19 -0
- package/dist/{metadata-BDat-jN9.mjs → metadata-BTTEBWdS.mjs} +10 -9
- package/dist/{metadata-29_qlqbz.mjs → metadata-D2TxboMm.mjs} +9 -8
- package/dist/parse-enum-CrEWOhuY.mjs +11 -0
- package/dist/{parse-id-CysSaCbf.mjs → parse-id-0_tOPvfI.mjs} +1 -1
- package/dist/{parse-ref-D1yeDOn8.mjs → parse-ref-DKag6a6I.mjs} +1 -1
- package/dist/{parse-schemas-B10n01ez.mjs → parse-schemas-D-qVLl4z.mjs} +2 -2
- package/dist/{path-DLByFMMA.mjs → path-C8GrBdgT.mjs} +7 -7
- package/dist/{poll-p9Y7-JEQ.mjs → poll-4eoh5J0r.mjs} +2 -2
- package/dist/{poll-task-BQe0NvJZ.mjs → poll-task-51WRdugU.mjs} +19 -20
- package/dist/{preflight-CvFu0Cct.mjs → preflight-BhsErYz3.mjs} +4 -4
- package/dist/{process-zJeVJZTM.mjs → process-CM7Uu5q_.mjs} +1 -1
- package/dist/{prompt-DgDNy_Pc.mjs → prompt-CFKoys7k.mjs} +3 -1
- package/dist/provision-Chf86BF0.mjs +83 -0
- package/dist/{ps-BxQdpkr5.mjs → ps-CEYtsKBj.mjs} +5 -3
- package/dist/ps-CIDwaubS.mjs +11 -0
- package/dist/{query-C7zTlFJA.mjs → query-BBCAF-tG.mjs} +17 -14
- package/dist/{query-CFH4nBlK.mjs → query-DYVBnu9d.mjs} +12 -9
- package/dist/query-result-ABPLz6I4.mjs +19 -0
- package/dist/{remove-BuWxx3hY.mjs → remove-2yInufA6.mjs} +14 -12
- package/dist/remove-collection-CBAHz0Dk.mjs +44 -0
- package/dist/{render-DuoDUTVL.mjs → render-0_GsapXa.mjs} +51 -23
- package/dist/render-khznBlla.mjs +32 -0
- package/dist/{rescan-values-DabyRYQ_.mjs → rescan-values-cfTSNQZo.mjs} +12 -11
- package/dist/{run-Cl-9RtC4.mjs → run-qgdEJv-I.mjs} +17 -15
- package/dist/{runs-BH6s1Zao.mjs → runs-BFIIH4GL.mjs} +9 -8
- package/dist/{runtime-CDu6fykq.mjs → runtime-Duawf5lE.mjs} +653 -428
- package/dist/{schema-tables-i58wp_p3.mjs → schema-tables-C2xM3dho.mjs} +9 -8
- package/dist/{schemas-_m8RYRl9.mjs → schemas-BP7xiktH.mjs} +7 -6
- package/dist/{search-DObOsjbP.mjs → search-DYP3lOlq.mjs} +12 -16
- package/dist/segment-B6HnNGDs.mjs +19 -0
- package/dist/{set-CwVWeAsi.mjs → set-DpRQqdo7.mjs} +13 -11
- package/dist/{set-CJA9dpK6.mjs → set-Tt-ioa4L.mjs} +14 -13
- package/dist/setting-DUa96KF3.mjs +17 -0
- package/dist/{setup-DqBOe3HZ.mjs → setup-BPlllnim.mjs} +10 -9
- package/dist/{skills-CHU7uuDU.mjs → skills-BkregMyb.mjs} +2 -2
- package/dist/{skills-C2rTVj0n.mjs → skills-SqbPo0BI.mjs} +3 -3
- package/dist/snippet-dJ68tGsl.mjs +19 -0
- package/dist/{start-CfruN4wF.mjs → start-DJZA67WF.mjs} +70 -38
- package/dist/{stash-CWuXKSZq.mjs → stash-C89zNKxo.mjs} +21 -18
- package/dist/{status-D-RYZB9G.mjs → status-B1EJ_jv0.mjs} +16 -9
- package/dist/status-BNvFPemM.mjs +100 -0
- package/dist/status-D5wSqYV_.mjs +34 -0
- package/dist/{stop-D8Hr4cKX.mjs → stop-5rCLmkCQ.mjs} +16 -11
- package/dist/{summary-Lt2XLBK9.mjs → summary-Cihbx0Qs.mjs} +8 -7
- package/dist/{sync-schema-BDElSynU.mjs → sync-schema-C3odu0ZH.mjs} +12 -11
- package/dist/table-J2f0STnB.mjs +19 -0
- package/dist/{table-B-PYcgGb.mjs → table-qDD2kApF.mjs} +1 -1
- package/dist/{transform-job-BrhOLO4M.mjs → transform-job-DjhoJbiV.mjs} +1 -1
- package/dist/transform-job-OW4SDhsQ.mjs +19 -0
- package/dist/transform-q1LYWQtW.mjs +24 -0
- package/dist/{tree-DfvjDjmk.mjs → tree-mvq9gM9w.mjs} +7 -6
- package/dist/{update-DzgXF082.mjs → update-BoIiuC70.mjs} +16 -14
- package/dist/{update-qnFY5IuC.mjs → update-C0jP0AKT.mjs} +12 -11
- package/dist/{update-zp7pCBZH.mjs → update-CbBnHz42.mjs} +16 -14
- package/dist/{update-B0bjPqKC.mjs → update-CtOo3LsX.mjs} +13 -12
- package/dist/{update-CVxOxmt6.mjs → update-DCrOQ1PW.mjs} +17 -15
- package/dist/{update-BYduslhn.mjs → update-DEZayTb4.mjs} +20 -15
- package/dist/{update-BgcroYkF.mjs → update-DwRxdflw.mjs} +12 -11
- package/dist/{update-D9Z8cL7h.mjs → update-Rr4usmCo.mjs} +12 -11
- package/dist/{update-DuA8-cCq.mjs → update-VvKMnwsM.mjs} +16 -14
- package/dist/{update-dashcard-CQ3kmmss.mjs → update-dashcard-DFvIz8Qj.mjs} +12 -11
- package/dist/{update-CqnDMNtZ.mjs → update-tRparnUs.mjs} +18 -16
- package/dist/{upgrade-CIgTr2CG.mjs → upgrade-D-Rl_fH9.mjs} +16 -29
- package/dist/{url-B5MgZXzg.mjs → url-BB6jeNQj.mjs} +11 -10
- package/dist/{uuid-CJz9TmHI.mjs → uuid-BSVUk8u2.mjs} +8 -6
- package/dist/{validate-CB0bu50i.mjs → validate-dPEOnOf8.mjs} +2 -1
- package/dist/{validate-query-CavIA0Q2.mjs → validate-query-CYvOP8Ld.mjs} +3 -3
- package/dist/values-D1RJE4H6.mjs +45 -0
- package/dist/verify-A7BWfBPZ.mjs +79 -0
- package/dist/{wait-BFqBlg0y.mjs → wait-B17I_pWy.mjs} +2 -2
- package/dist/{wait-tDp9ZOou.mjs → wait-DK5QDZ8n.mjs} +14 -10
- package/dist/{wait-flags-CN-e9zNq.mjs → wait-flags-DlfbIXHw.mjs} +20 -9
- package/dist/{workspace-credentials-4lIxxz4g.mjs → workspace-credentials-8CBMQJFz.mjs} +2 -2
- package/dist/workspace-ri6r3zWo.mjs +25 -0
- package/dist/{yaml-ECiog374.mjs → yaml-Gv6wRFMF.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/create-Le3Bqn7b.mjs +0 -48
- package/dist/create-V-q2rU0T.mjs +0 -48
- package/dist/create-swbIXdo5.mjs +0 -48
- package/dist/current-task-DCq7rk9V.mjs +0 -36
- 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/login-D1nZwgKv.mjs +0 -192
- package/dist/measure-XhJuL77y.mjs +0 -19
- package/dist/package-DFUprkSZ.mjs +0 -85
- package/dist/provision-BP-b4Are.mjs +0 -77
- package/dist/ps-Bk6unzaX.mjs +0 -11
- package/dist/remove-collection-Bc4roCq0.mjs +0 -38
- package/dist/segment-DfxZdJmR.mjs +0 -19
- package/dist/setting-Czy4ws6h.mjs +0 -18
- 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/values-BXN6tx1i.mjs +0 -36
- package/dist/workspace-BBsT0H0g.mjs +0 -24
- /package/dist/{body-flags-BK7J6Daz.mjs → body-flags-D7q87Btw.mjs} +0 -0
- /package/dist/{collection-B3sPXRLs.mjs → collection-Bcy8cWYH.mjs} +0 -0
- /package/dist/{paginate-CTSfuYiF.mjs → paginate-BexjkjbY.mjs} +0 -0
- /package/dist/{revision-message-flag-oyq2xrDU.mjs → revision-message-flag-DY29-cgz.mjs} +0 -0
- /package/dist/{segment-BMrUBz94.mjs → segment-DhBmcr_E.mjs} +0 -0
- /package/dist/{setting-CTaAeMci.mjs → setting-BzCng1Ub.mjs} +0 -0
- /package/dist/{snippet-CSWqkslB.mjs → snippet-bi_0XbNT.mjs} +0 -0
- /package/dist/{transform-DR4ejuPM.mjs → transform-BKahefz_.mjs} +0 -0
- /package/dist/{workspace-DUfqhPm5.mjs → workspace-D8HtUN0y.mjs} +0 -0
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import "./command-augment-BH9qgQ5u.mjs";
|
|
2
|
+
import { connectionFlags, outputFlags, profileFlag } from "./error-ZsFeevV2.mjs";
|
|
3
|
+
import { defineMetabaseCommand } from "./runtime-Duawf5lE.mjs";
|
|
4
|
+
import "./capabilities-7e9MgquN.mjs";
|
|
5
|
+
import { renderSummary } from "./render-0_GsapXa.mjs";
|
|
6
|
+
import { parseId } from "./parse-id-0_tOPvfI.mjs";
|
|
7
|
+
import "./poll-task-51WRdugU.mjs";
|
|
8
|
+
import "./poll-4eoh5J0r.mjs";
|
|
9
|
+
import { SyncSettingsUpdateResult, setCollectionRemoteSynced, syncSettingsUpdateView } from "./add-collection-DQjTlDNF.mjs";
|
|
10
|
+
|
|
11
|
+
//#region src/commands/git-sync/remove-collection.ts
|
|
12
|
+
var remove_collection_default = defineMetabaseCommand({
|
|
13
|
+
meta: {
|
|
14
|
+
name: "remove-collection",
|
|
15
|
+
description: "Unmark a collection as git-synced; cascades to descendants by location prefix"
|
|
16
|
+
},
|
|
17
|
+
capabilities: {
|
|
18
|
+
minVersion: 60,
|
|
19
|
+
tokenFeature: "remote_sync"
|
|
20
|
+
},
|
|
21
|
+
args: {
|
|
22
|
+
...outputFlags,
|
|
23
|
+
...profileFlag,
|
|
24
|
+
...connectionFlags,
|
|
25
|
+
id: {
|
|
26
|
+
type: "positional",
|
|
27
|
+
description: "Collection id (positive integer)",
|
|
28
|
+
required: true
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
outputSchema: SyncSettingsUpdateResult,
|
|
32
|
+
examples: ["mb git-sync remove-collection 12", "mb git-sync remove-collection 12 --json --profile prod"],
|
|
33
|
+
async run({ args, ctx, getClient }) {
|
|
34
|
+
const collectionId = parseId(args.id, "id");
|
|
35
|
+
const client = await getClient();
|
|
36
|
+
const result = await setCollectionRemoteSynced(client, collectionId, false);
|
|
37
|
+
const taskPart = result.task_id !== void 0 ? ` (task #${result.task_id})` : "";
|
|
38
|
+
const message = result.success ? `Collection ${collectionId} is no longer git-synced${taskPart}.` : `Could not update git-sync setting for collection ${collectionId}.`;
|
|
39
|
+
renderSummary(result, syncSettingsUpdateView, message, ctx);
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
//#endregion
|
|
44
|
+
export { remove_collection_default as default };
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { ConfigError
|
|
1
|
+
import { ConfigError } from "./command-augment-BH9qgQ5u.mjs";
|
|
2
|
+
import { isPlainObject, itemOversizeMessage, listTruncationNotice, warn } from "./capabilities-7e9MgquN.mjs";
|
|
2
3
|
import Table from "cli-table3";
|
|
3
4
|
|
|
4
5
|
//#region src/output/cap.ts
|
|
@@ -30,18 +31,6 @@ function jsonByteLength(value) {
|
|
|
30
31
|
return Buffer.byteLength(JSON.stringify(value), "utf8");
|
|
31
32
|
}
|
|
32
33
|
|
|
33
|
-
//#endregion
|
|
34
|
-
//#region src/output/notice.ts
|
|
35
|
-
function warn(message) {
|
|
36
|
-
process.stderr.write(message + "\n");
|
|
37
|
-
}
|
|
38
|
-
function listTruncationNotice(bytes) {
|
|
39
|
-
return `… cut at ${bytes} bytes; rerun with --max-bytes 0`;
|
|
40
|
-
}
|
|
41
|
-
function itemOversizeNotice(bytes) {
|
|
42
|
-
return `… item is ${bytes} bytes (exceeds --max-bytes); narrow with --fields, or pass --max-bytes 0`;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
34
|
//#endregion
|
|
46
35
|
//#region src/output/projection.ts
|
|
47
36
|
function applyProjection(value, view, full, fields) {
|
|
@@ -92,17 +81,33 @@ function setPath(target, parts, value) {
|
|
|
92
81
|
|
|
93
82
|
//#endregion
|
|
94
83
|
//#region src/output/table.ts
|
|
84
|
+
const PLAIN_TABLE_STYLE = {
|
|
85
|
+
head: [],
|
|
86
|
+
border: []
|
|
87
|
+
};
|
|
95
88
|
function renderTable(rows, columns) {
|
|
96
89
|
const head = columns.map((column) => column.label ?? column.key);
|
|
97
90
|
const widths = columns.map((column) => column.width ?? null);
|
|
98
91
|
const hasWidth = widths.some((width) => width !== null);
|
|
99
92
|
const table = new Table(hasWidth ? {
|
|
100
93
|
head,
|
|
101
|
-
colWidths: widths
|
|
102
|
-
|
|
94
|
+
colWidths: widths,
|
|
95
|
+
style: PLAIN_TABLE_STYLE
|
|
96
|
+
} : {
|
|
97
|
+
head,
|
|
98
|
+
style: PLAIN_TABLE_STYLE
|
|
99
|
+
});
|
|
103
100
|
for (const row of rows) table.push(columns.map((column) => formatCell(row, column)));
|
|
104
101
|
return table.toString();
|
|
105
102
|
}
|
|
103
|
+
function renderRows(head, rows) {
|
|
104
|
+
const table = new Table({
|
|
105
|
+
head: [...head],
|
|
106
|
+
style: PLAIN_TABLE_STYLE
|
|
107
|
+
});
|
|
108
|
+
for (const row of rows) table.push([...row]);
|
|
109
|
+
return table.toString();
|
|
110
|
+
}
|
|
106
111
|
function formatCell(row, column) {
|
|
107
112
|
const value = row[column.key];
|
|
108
113
|
if (column.format !== void 0) return column.format(value);
|
|
@@ -125,11 +130,20 @@ function writeText(text) {
|
|
|
125
130
|
function renderItem(item, view, opts) {
|
|
126
131
|
const projected = applyProjection(item, view, opts.full, opts.fields);
|
|
127
132
|
const body = renderItemBody(item, view, projected, opts) + "\n";
|
|
133
|
+
assertItemWithinMaxBytes(body, opts.maxBytes);
|
|
134
|
+
process.stdout.write(body);
|
|
135
|
+
}
|
|
136
|
+
function renderSummary(item, view, summaryText, opts) {
|
|
137
|
+
if (opts.format === "json" || opts.fields !== void 0 || opts.full) {
|
|
138
|
+
renderItem(item, view, opts);
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
const body = (typeof summaryText === "function" ? summaryText() : summaryText) + "\n";
|
|
142
|
+
assertItemWithinMaxBytes(body, opts.maxBytes);
|
|
128
143
|
process.stdout.write(body);
|
|
129
|
-
emitItemOversizeNotice(body, opts.maxBytes);
|
|
130
144
|
}
|
|
131
145
|
function renderList(envelope, view, opts) {
|
|
132
|
-
if (opts.format === "json"
|
|
146
|
+
if (opts.format === "json") {
|
|
133
147
|
renderJsonEnvelope(envelope, view, opts);
|
|
134
148
|
return;
|
|
135
149
|
}
|
|
@@ -137,10 +151,24 @@ function renderList(envelope, view, opts) {
|
|
|
137
151
|
process.stdout.write("(no results)\n");
|
|
138
152
|
return;
|
|
139
153
|
}
|
|
154
|
+
if (opts.fields !== void 0) {
|
|
155
|
+
renderProjectedTable(envelope, view, opts.fields, opts.maxBytes);
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
140
158
|
const capped = capListEnvelope(envelope, opts.maxBytes);
|
|
141
159
|
process.stdout.write(renderTable(capped.data, view.tableColumns) + "\n");
|
|
142
160
|
if (capped.truncated !== void 0) warn(listTruncationNotice(capped.truncated.bytes));
|
|
143
161
|
}
|
|
162
|
+
function renderProjectedTable(envelope, view, fields, maxBytes) {
|
|
163
|
+
const projectedItems = envelope.data.map((item) => applyProjection(item, view, false, fields));
|
|
164
|
+
const capped = capListEnvelope({
|
|
165
|
+
...envelope,
|
|
166
|
+
data: projectedItems
|
|
167
|
+
}, maxBytes);
|
|
168
|
+
const rows = capped.data.map((item) => fields.map((path) => formatScalar(pickPath(item, path.split(".")))));
|
|
169
|
+
process.stdout.write(renderRows(fields, rows) + "\n");
|
|
170
|
+
if (capped.truncated !== void 0) warn(listTruncationNotice(capped.truncated.bytes));
|
|
171
|
+
}
|
|
144
172
|
function renderJsonEnvelope(envelope, view, opts) {
|
|
145
173
|
const projectedItems = envelope.data.map((item) => applyProjection(item, view, opts.full, opts.fields));
|
|
146
174
|
const projectedEnvelope = {
|
|
@@ -152,9 +180,9 @@ function renderJsonEnvelope(envelope, view, opts) {
|
|
|
152
180
|
if (capped.truncated !== void 0) warn(listTruncationNotice(capped.truncated.bytes));
|
|
153
181
|
}
|
|
154
182
|
function renderItemBody(item, view, projected, opts) {
|
|
155
|
-
if (opts.format === "json"
|
|
156
|
-
if (
|
|
157
|
-
return renderKeyValueLines(
|
|
183
|
+
if (opts.format === "json") return JSON.stringify(projected, null, 2);
|
|
184
|
+
if (opts.fields !== void 0 || opts.full) return renderKeyValueLines(objectPairs(projected));
|
|
185
|
+
return renderKeyValueLines(columnPairs(item, view.tableColumns));
|
|
158
186
|
}
|
|
159
187
|
function columnPairs(item, columns) {
|
|
160
188
|
return columns.map((column) => [column.label ?? column.key, formatCell(item, column)]);
|
|
@@ -171,12 +199,12 @@ function renderKeyValueLines(pairs) {
|
|
|
171
199
|
const padding = Math.max(...pairs.map(([label]) => label.length));
|
|
172
200
|
return pairs.map(([label, value]) => `${label.padEnd(padding)} ${value}`).join("\n");
|
|
173
201
|
}
|
|
174
|
-
function
|
|
202
|
+
function assertItemWithinMaxBytes(body, maxBytes) {
|
|
175
203
|
if (maxBytes <= 0) return;
|
|
176
204
|
const bytes = Buffer.byteLength(body, "utf8");
|
|
177
205
|
if (bytes <= maxBytes) return;
|
|
178
|
-
|
|
206
|
+
throw new ConfigError(itemOversizeMessage(bytes, maxBytes));
|
|
179
207
|
}
|
|
180
208
|
|
|
181
209
|
//#endregion
|
|
182
|
-
export { renderItem, renderList,
|
|
210
|
+
export { formatScalar, renderItem, renderList, renderRows, renderSummary, writeJson, writeText };
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
//#region src/commands/auth/render.ts
|
|
2
|
+
const EMPTY_CELL = "—";
|
|
3
|
+
function pickProperty(value, key) {
|
|
4
|
+
if (typeof value !== "object" || value === null || !(key in value)) return void 0;
|
|
5
|
+
const inner = Reflect.get(value, key);
|
|
6
|
+
return inner;
|
|
7
|
+
}
|
|
8
|
+
function pickString(value, key) {
|
|
9
|
+
const inner = pickProperty(value, key);
|
|
10
|
+
return typeof inner === "string" ? inner : null;
|
|
11
|
+
}
|
|
12
|
+
function pickBoolean(value, key) {
|
|
13
|
+
const inner = pickProperty(value, key);
|
|
14
|
+
return typeof inner === "boolean" ? inner : null;
|
|
15
|
+
}
|
|
16
|
+
function renderUserName(value) {
|
|
17
|
+
return pickString(value, "name") ?? EMPTY_CELL;
|
|
18
|
+
}
|
|
19
|
+
function renderUserRole(value) {
|
|
20
|
+
const isAdmin = pickBoolean(value, "isAdmin");
|
|
21
|
+
if (isAdmin === null) return EMPTY_CELL;
|
|
22
|
+
return isAdmin ? "Admin" : "User";
|
|
23
|
+
}
|
|
24
|
+
function renderVersionTag(value) {
|
|
25
|
+
return pickString(value, "tag") ?? EMPTY_CELL;
|
|
26
|
+
}
|
|
27
|
+
function renderTimestamp(value) {
|
|
28
|
+
return typeof value === "string" ? value : EMPTY_CELL;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
//#endregion
|
|
32
|
+
export { EMPTY_CELL, renderTimestamp, renderUserName, renderUserRole, renderVersionTag };
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import "./
|
|
2
|
-
import "./
|
|
3
|
-
import {
|
|
4
|
-
import "./
|
|
5
|
-
import {
|
|
6
|
-
import
|
|
7
|
-
import "./
|
|
8
|
-
import "./table-
|
|
9
|
-
import { DatabaseSyncResult, databaseSyncResultView } from "./database-
|
|
1
|
+
import "./command-augment-BH9qgQ5u.mjs";
|
|
2
|
+
import { connectionFlags, outputFlags, profileFlag } from "./error-ZsFeevV2.mjs";
|
|
3
|
+
import { defineMetabaseCommand } from "./runtime-Duawf5lE.mjs";
|
|
4
|
+
import "./capabilities-7e9MgquN.mjs";
|
|
5
|
+
import { renderSummary } from "./render-0_GsapXa.mjs";
|
|
6
|
+
import "./field-E0IBy4Uw.mjs";
|
|
7
|
+
import { parseId } from "./parse-id-0_tOPvfI.mjs";
|
|
8
|
+
import "./table-qDD2kApF.mjs";
|
|
9
|
+
import { DatabaseSyncResult, databaseSyncResultView } from "./database-BXiue1in.mjs";
|
|
10
10
|
import { z } from "zod";
|
|
11
11
|
|
|
12
12
|
//#region src/commands/db/rescan-values.ts
|
|
@@ -16,6 +16,7 @@ var rescan_values_default = defineMetabaseCommand({
|
|
|
16
16
|
name: "rescan-values",
|
|
17
17
|
description: "Trigger a rescan of cached field values for a database"
|
|
18
18
|
},
|
|
19
|
+
capabilities: { minVersion: 58 },
|
|
19
20
|
args: {
|
|
20
21
|
...outputFlags,
|
|
21
22
|
...profileFlag,
|
|
@@ -32,10 +33,10 @@ var rescan_values_default = defineMetabaseCommand({
|
|
|
32
33
|
const id = parseId(args.id);
|
|
33
34
|
const client = await getClient();
|
|
34
35
|
const response = await client.requestParsed(RescanValuesApiResponse, `/api/database/${id}/rescan_values`, { method: "POST" });
|
|
35
|
-
|
|
36
|
+
renderSummary({
|
|
36
37
|
id,
|
|
37
38
|
status: response.status
|
|
38
|
-
}, databaseSyncResultView, ctx);
|
|
39
|
+
}, databaseSyncResultView, `Field-values rescan queued for database ${id}.`, ctx);
|
|
39
40
|
}
|
|
40
41
|
});
|
|
41
42
|
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import "./
|
|
2
|
-
import "./
|
|
3
|
-
import {
|
|
4
|
-
import "./
|
|
5
|
-
import {
|
|
6
|
-
import { parseId } from "./parse-id-
|
|
7
|
-
import { pollUntil } from "./poll-
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
1
|
+
import "./command-augment-BH9qgQ5u.mjs";
|
|
2
|
+
import { connectionFlags, outputFlags, profileFlag } from "./error-ZsFeevV2.mjs";
|
|
3
|
+
import { defineMetabaseCommand } from "./runtime-Duawf5lE.mjs";
|
|
4
|
+
import "./capabilities-7e9MgquN.mjs";
|
|
5
|
+
import { renderSummary } from "./render-0_GsapXa.mjs";
|
|
6
|
+
import { parseId } from "./parse-id-0_tOPvfI.mjs";
|
|
7
|
+
import { pollUntil } from "./poll-4eoh5J0r.mjs";
|
|
8
|
+
import { parseWaitFlags, waitFlags } from "./wait-flags-DlfbIXHw.mjs";
|
|
9
|
+
import { TransformRun } from "./transform-BKahefz_.mjs";
|
|
10
10
|
import { z } from "zod";
|
|
11
11
|
|
|
12
12
|
//#region src/commands/transform/run.ts
|
|
@@ -45,6 +45,7 @@ var run_default = defineMetabaseCommand({
|
|
|
45
45
|
name: "run",
|
|
46
46
|
description: "Trigger a transform run by id"
|
|
47
47
|
},
|
|
48
|
+
capabilities: { minVersion: 59 },
|
|
48
49
|
args: {
|
|
49
50
|
...outputFlags,
|
|
50
51
|
...profileFlag,
|
|
@@ -64,28 +65,29 @@ var run_default = defineMetabaseCommand({
|
|
|
64
65
|
const client = await getClient();
|
|
65
66
|
const kickoff = await client.requestParsed(TransformRunKickoff, `/api/transform/${id}/run`, { method: "POST" });
|
|
66
67
|
if (!wait.enabled) {
|
|
67
|
-
|
|
68
|
+
const started = kickoff.run_id === null ? kickoff.message : `Started run ${kickoff.run_id} for transform ${id}.`;
|
|
69
|
+
renderSummary({
|
|
68
70
|
message: kickoff.message,
|
|
69
71
|
run_id: kickoff.run_id,
|
|
70
72
|
final: null
|
|
71
|
-
}, transformRunResultView, ctx);
|
|
73
|
+
}, transformRunResultView, started, ctx);
|
|
72
74
|
return;
|
|
73
75
|
}
|
|
74
76
|
if (kickoff.run_id === null) {
|
|
75
|
-
|
|
77
|
+
renderSummary({
|
|
76
78
|
message: kickoff.message,
|
|
77
79
|
run_id: null,
|
|
78
80
|
final: null
|
|
79
|
-
}, transformRunResultView, ctx);
|
|
81
|
+
}, transformRunResultView, kickoff.message, ctx);
|
|
80
82
|
throw new Error(`transform run did not start: ${kickoff.message}`);
|
|
81
83
|
}
|
|
82
84
|
const runId = kickoff.run_id;
|
|
83
85
|
const final = await pollUntil(async () => client.requestParsed(TransformRun, `/api/transform/run/${runId}`), (run) => RUN_TERMINAL_STATUSES.has(run.status), wait.schedule);
|
|
84
|
-
|
|
86
|
+
renderSummary({
|
|
85
87
|
message: kickoff.message,
|
|
86
88
|
run_id: runId,
|
|
87
89
|
final
|
|
88
|
-
}, transformRunResultView, ctx);
|
|
90
|
+
}, transformRunResultView, `Run ${runId} of transform ${id} ${final.status}.`, ctx);
|
|
89
91
|
if (RUN_FAILURE_STATUSES.has(final.status)) throw new Error(`transform run ${runId} ${final.status}`);
|
|
90
92
|
}
|
|
91
93
|
});
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import "./
|
|
2
|
-
import "./
|
|
3
|
-
import {
|
|
4
|
-
import "./
|
|
5
|
-
import {
|
|
6
|
-
import { parseId } from "./parse-id-
|
|
7
|
-
import { collectPaginated } from "./paginate-
|
|
8
|
-
import { TransformRun, TransformRunCompact, transformRunView } from "./transform-
|
|
1
|
+
import "./command-augment-BH9qgQ5u.mjs";
|
|
2
|
+
import { connectionFlags, listEnvelopeSchema, outputFlags, profileFlag } from "./error-ZsFeevV2.mjs";
|
|
3
|
+
import { defineMetabaseCommand } from "./runtime-Duawf5lE.mjs";
|
|
4
|
+
import "./capabilities-7e9MgquN.mjs";
|
|
5
|
+
import { renderList } from "./render-0_GsapXa.mjs";
|
|
6
|
+
import { parseId } from "./parse-id-0_tOPvfI.mjs";
|
|
7
|
+
import { collectPaginated } from "./paginate-BexjkjbY.mjs";
|
|
8
|
+
import { TransformRun, TransformRunCompact, transformRunView } from "./transform-BKahefz_.mjs";
|
|
9
9
|
|
|
10
10
|
//#region src/commands/transform/runs.ts
|
|
11
11
|
const TransformRunListEnvelope = listEnvelopeSchema(TransformRunCompact);
|
|
@@ -14,6 +14,7 @@ var runs_default = defineMetabaseCommand({
|
|
|
14
14
|
name: "runs",
|
|
15
15
|
description: "List recent transform runs"
|
|
16
16
|
},
|
|
17
|
+
capabilities: { minVersion: 59 },
|
|
17
18
|
args: {
|
|
18
19
|
...outputFlags,
|
|
19
20
|
...profileFlag,
|