@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
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import "./
|
|
2
|
-
import "./
|
|
3
|
-
import {
|
|
4
|
-
import "./
|
|
5
|
-
import {
|
|
6
|
-
import
|
|
7
|
-
import "./
|
|
8
|
-
import { Table, TableCompact, tableView } from "./table-
|
|
1
|
+
import "./command-augment-BH9qgQ5u.mjs";
|
|
2
|
+
import { connectionFlags, listEnvelopeSchema, outputFlags, profileFlag, wrapList } 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 "./field-E0IBy4Uw.mjs";
|
|
7
|
+
import { parseId } from "./parse-id-0_tOPvfI.mjs";
|
|
8
|
+
import { Table, TableCompact, tableView } from "./table-qDD2kApF.mjs";
|
|
9
9
|
import { z } from "zod";
|
|
10
10
|
|
|
11
11
|
//#region src/commands/db/schema-tables.ts
|
|
@@ -16,6 +16,7 @@ var schema_tables_default = defineMetabaseCommand({
|
|
|
16
16
|
name: "schema-tables",
|
|
17
17
|
description: "List tables in a database schema"
|
|
18
18
|
},
|
|
19
|
+
capabilities: { minVersion: 58 },
|
|
19
20
|
args: {
|
|
20
21
|
...outputFlags,
|
|
21
22
|
...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, listEnvelopeSchema, outputFlags, profileFlag, wrapList } 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
7
|
import { z } from "zod";
|
|
8
8
|
|
|
9
9
|
//#region src/commands/db/schemas.ts
|
|
@@ -22,6 +22,7 @@ var schemas_default = defineMetabaseCommand({
|
|
|
22
22
|
name: "schemas",
|
|
23
23
|
description: "List schemas in a database"
|
|
24
24
|
},
|
|
25
|
+
capabilities: { minVersion: 58 },
|
|
25
26
|
args: {
|
|
26
27
|
...outputFlags,
|
|
27
28
|
...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, listEnvelopeSchema, outputFlags, profileFlag } from "./error-ZsFeevV2.mjs";
|
|
3
|
+
import { defineMetabaseCommand, parseEnumCsv } 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
7
|
import { z } from "zod";
|
|
8
8
|
|
|
9
9
|
//#region src/domain/search.ts
|
|
@@ -45,8 +45,7 @@ const SearchResultCompact = SearchResult.pick({
|
|
|
45
45
|
id: true,
|
|
46
46
|
name: true,
|
|
47
47
|
model: true,
|
|
48
|
-
description: true
|
|
49
|
-
archived: true
|
|
48
|
+
description: true
|
|
50
49
|
}).strip();
|
|
51
50
|
const searchResultView = {
|
|
52
51
|
compactPick: SearchResultCompact,
|
|
@@ -62,10 +61,6 @@ const searchResultView = {
|
|
|
62
61
|
{
|
|
63
62
|
key: "name",
|
|
64
63
|
label: "Name"
|
|
65
|
-
},
|
|
66
|
-
{
|
|
67
|
-
key: "archived",
|
|
68
|
-
label: "Archived"
|
|
69
64
|
}
|
|
70
65
|
]
|
|
71
66
|
};
|
|
@@ -85,6 +80,7 @@ var search_default = defineMetabaseCommand({
|
|
|
85
80
|
name: "search",
|
|
86
81
|
description: "Search Metabase content (cards, dashboards, collections, …)"
|
|
87
82
|
},
|
|
83
|
+
capabilities: { minVersion: 58 },
|
|
88
84
|
args: {
|
|
89
85
|
...outputFlags,
|
|
90
86
|
...profileFlag,
|
|
@@ -101,7 +97,7 @@ var search_default = defineMetabaseCommand({
|
|
|
101
97
|
},
|
|
102
98
|
archived: {
|
|
103
99
|
type: "boolean",
|
|
104
|
-
description: "
|
|
100
|
+
description: "Search only archived items (instead of only active ones)",
|
|
105
101
|
default: false
|
|
106
102
|
},
|
|
107
103
|
limit: {
|
|
@@ -109,7 +105,7 @@ var search_default = defineMetabaseCommand({
|
|
|
109
105
|
description: "Max results to return",
|
|
110
106
|
default: String(DEFAULT_LIMIT)
|
|
111
107
|
},
|
|
112
|
-
"
|
|
108
|
+
"db-id": {
|
|
113
109
|
type: "string",
|
|
114
110
|
description: "Restrict to items on a given database id"
|
|
115
111
|
},
|
|
@@ -126,8 +122,8 @@ var search_default = defineMetabaseCommand({
|
|
|
126
122
|
],
|
|
127
123
|
async run({ args, ctx, getClient }) {
|
|
128
124
|
const limit = parseId(args.limit, "--limit");
|
|
129
|
-
const tableDbIdRaw = args["
|
|
130
|
-
const tableDbId = tableDbIdRaw ? parseId(tableDbIdRaw, "--
|
|
125
|
+
const tableDbIdRaw = args["db-id"];
|
|
126
|
+
const tableDbId = tableDbIdRaw ? parseId(tableDbIdRaw, "--db-id") : void 0;
|
|
131
127
|
const models = parseEnumCsv(args.models, SearchModel, "--models");
|
|
132
128
|
const client = await getClient();
|
|
133
129
|
const response = await client.requestParsed(SearchApiResponse, "/api/search", { query: {
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { defineCommand } from "citty";
|
|
2
|
+
|
|
3
|
+
//#region src/commands/segment/index.ts
|
|
4
|
+
var segment_default = defineCommand({
|
|
5
|
+
meta: {
|
|
6
|
+
name: "segment",
|
|
7
|
+
description: "Manage Metabase segments"
|
|
8
|
+
},
|
|
9
|
+
subCommands: {
|
|
10
|
+
list: () => import("./list-BFlzLGlw.mjs").then((mod) => mod.default),
|
|
11
|
+
get: () => import("./get-B9kwSs6U.mjs").then((mod) => mod.default),
|
|
12
|
+
create: () => import("./create-DHscDhRd.mjs").then((mod) => mod.default),
|
|
13
|
+
update: () => import("./update-VvKMnwsM.mjs").then((mod) => mod.default),
|
|
14
|
+
archive: () => import("./archive-BXzghEQX.mjs").then((mod) => mod.default)
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
//#endregion
|
|
19
|
+
export { segment_default as default };
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import "./
|
|
2
|
-
import "./
|
|
3
|
-
import {
|
|
4
|
-
import "./
|
|
5
|
-
import "./
|
|
6
|
-
import
|
|
7
|
-
import { readBody } from "./body-
|
|
8
|
-
import { SettingValue, settingValueView } from "./setting-
|
|
9
|
-
import { parseSettingKey } from "./key-
|
|
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 { formatScalar, renderSummary } from "./render-0_GsapXa.mjs";
|
|
6
|
+
import "./input-cMSEqISy.mjs";
|
|
7
|
+
import { readBody } from "./body-tcURGnGh.mjs";
|
|
8
|
+
import { SettingValue, settingValueView } from "./setting-BzCng1Ub.mjs";
|
|
9
|
+
import { parseSettingKey, rethrowSettingError } from "./key-vkNkH82H.mjs";
|
|
10
10
|
import { z } from "zod";
|
|
11
11
|
|
|
12
12
|
//#region src/commands/setting/set.ts
|
|
@@ -15,6 +15,7 @@ var set_default = defineMetabaseCommand({
|
|
|
15
15
|
name: "set",
|
|
16
16
|
description: "Set a setting value (parsed strictly as JSON)"
|
|
17
17
|
},
|
|
18
|
+
capabilities: { minVersion: 58 },
|
|
18
19
|
args: {
|
|
19
20
|
...outputFlags,
|
|
20
21
|
...profileFlag,
|
|
@@ -54,12 +55,13 @@ var set_default = defineMetabaseCommand({
|
|
|
54
55
|
method: "PUT",
|
|
55
56
|
body: { value },
|
|
56
57
|
expectContentType: "binary"
|
|
57
|
-
});
|
|
58
|
+
}).catch((error) => rethrowSettingError(error, key));
|
|
58
59
|
const item = {
|
|
59
60
|
key,
|
|
60
61
|
value
|
|
61
62
|
};
|
|
62
|
-
|
|
63
|
+
const message = value === null ? `Cleared "${key}".` : `Set "${key}" to ${formatScalar(value)}.`;
|
|
64
|
+
renderSummary(item, settingValueView, message, ctx);
|
|
63
65
|
}
|
|
64
66
|
});
|
|
65
67
|
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import "./
|
|
2
|
-
import "./
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
1
|
+
import { ConfigError } from "./command-augment-BH9qgQ5u.mjs";
|
|
2
|
+
import { outputFlags } from "./error-ZsFeevV2.mjs";
|
|
3
|
+
import { defineMetabaseCommand, keyringFallbackWarning, readEnvLicenseToken, writeLicense } from "./runtime-Duawf5lE.mjs";
|
|
4
|
+
import { warn } from "./capabilities-7e9MgquN.mjs";
|
|
5
|
+
import { renderSummary } from "./render-0_GsapXa.mjs";
|
|
6
|
+
import { promptPassword } from "./prompt-CFKoys7k.mjs";
|
|
7
|
+
import { readInput } from "./input-cMSEqISy.mjs";
|
|
8
8
|
import { z } from "zod";
|
|
9
9
|
|
|
10
|
-
//#region src/commands/license/set.ts
|
|
10
|
+
//#region src/commands/workspace/license/set.ts
|
|
11
11
|
const LicenseSetResult = z.object({ stored: z.literal(true) });
|
|
12
12
|
const licenseSetView = {
|
|
13
13
|
compactPick: LicenseSetResult,
|
|
@@ -21,6 +21,7 @@ var set_default = defineMetabaseCommand({
|
|
|
21
21
|
name: "set",
|
|
22
22
|
description: "Store a Metabase license token"
|
|
23
23
|
},
|
|
24
|
+
capabilities: null,
|
|
24
25
|
args: {
|
|
25
26
|
...outputFlags,
|
|
26
27
|
token: {
|
|
@@ -31,16 +32,16 @@ var set_default = defineMetabaseCommand({
|
|
|
31
32
|
},
|
|
32
33
|
outputSchema: LicenseSetResult,
|
|
33
34
|
examples: [
|
|
34
|
-
"echo $METABASE_LICENSE_TOKEN | mb license set",
|
|
35
|
-
"mb license set < token.txt",
|
|
36
|
-
"mb license set $METABASE_LICENSE_TOKEN"
|
|
35
|
+
"echo $METABASE_LICENSE_TOKEN | mb workspace license set",
|
|
36
|
+
"mb workspace license set < token.txt",
|
|
37
|
+
"mb workspace license set $METABASE_LICENSE_TOKEN"
|
|
37
38
|
],
|
|
38
39
|
async run({ args, ctx }) {
|
|
39
40
|
const token = await resolveToken(args.token);
|
|
40
41
|
const location = await writeLicense(token);
|
|
41
|
-
if (location.backend === "file") warn(
|
|
42
|
+
if (location.backend === "file") warn(keyringFallbackWarning(location, "license"));
|
|
42
43
|
const result = { stored: true };
|
|
43
|
-
|
|
44
|
+
renderSummary(result, licenseSetView, "License token stored.", ctx);
|
|
44
45
|
}
|
|
45
46
|
});
|
|
46
47
|
async function resolveToken(positional) {
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { defineCommand } from "citty";
|
|
2
|
+
|
|
3
|
+
//#region src/commands/setting/index.ts
|
|
4
|
+
var setting_default = defineCommand({
|
|
5
|
+
meta: {
|
|
6
|
+
name: "setting",
|
|
7
|
+
description: "Inspect and update Metabase settings"
|
|
8
|
+
},
|
|
9
|
+
subCommands: {
|
|
10
|
+
list: () => import("./list-BJXaGk-z.mjs").then((m) => m.default),
|
|
11
|
+
get: () => import("./get-B8l4t4Pz.mjs").then((m) => m.default),
|
|
12
|
+
set: () => import("./set-DpRQqdo7.mjs").then((m) => m.default)
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
//#endregion
|
|
17
|
+
export { setting_default as default };
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import "./
|
|
2
|
-
import "./
|
|
3
|
-
import {
|
|
4
|
-
import "./
|
|
5
|
-
import "./
|
|
6
|
-
import
|
|
7
|
-
import { readBody } from "./body-
|
|
8
|
-
import { bodyInputFlags } from "./body-flags-
|
|
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 "./input-cMSEqISy.mjs";
|
|
7
|
+
import { readBody } from "./body-tcURGnGh.mjs";
|
|
8
|
+
import { bodyInputFlags } from "./body-flags-D7q87Btw.mjs";
|
|
9
9
|
import { z } from "zod";
|
|
10
10
|
|
|
11
11
|
//#region src/domain/setup.ts
|
|
@@ -41,6 +41,7 @@ var setup_default = defineMetabaseCommand({
|
|
|
41
41
|
name: "setup",
|
|
42
42
|
description: "Complete the initial Metabase setup wizard with a default user"
|
|
43
43
|
},
|
|
44
|
+
capabilities: { minVersion: 58 },
|
|
44
45
|
args: {
|
|
45
46
|
...outputFlags,
|
|
46
47
|
...profileFlag,
|
|
@@ -63,7 +64,7 @@ var setup_default = defineMetabaseCommand({
|
|
|
63
64
|
method: "POST",
|
|
64
65
|
body
|
|
65
66
|
});
|
|
66
|
-
|
|
67
|
+
renderSummary(result, setupResultView, "Metabase setup complete.", ctx);
|
|
67
68
|
}
|
|
68
69
|
});
|
|
69
70
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ConfigError, isNotFoundError } from "./
|
|
2
|
-
import { parseYamlResult } from "./yaml-
|
|
1
|
+
import { ConfigError, isNotFoundError } from "./command-augment-BH9qgQ5u.mjs";
|
|
2
|
+
import { parseYamlResult } from "./yaml-Gv6wRFMF.mjs";
|
|
3
3
|
import { z } from "zod";
|
|
4
4
|
import { closeSync, openSync, readFileSync, readSync, readdirSync, statSync } from "node:fs";
|
|
5
5
|
import { dirname, join, resolve } from "node:path";
|
|
@@ -8,9 +8,9 @@ var skills_default = defineCommand({
|
|
|
8
8
|
},
|
|
9
9
|
default: "list",
|
|
10
10
|
subCommands: {
|
|
11
|
-
list: () => import("./list-
|
|
12
|
-
get: () => import("./get-
|
|
13
|
-
path: () => import("./path-
|
|
11
|
+
list: () => import("./list-B0V7FeL2.mjs").then((m) => m.default),
|
|
12
|
+
get: () => import("./get-Bo4Cpd_c.mjs").then((m) => m.default),
|
|
13
|
+
path: () => import("./path-C8GrBdgT.mjs").then((m) => m.default)
|
|
14
14
|
}
|
|
15
15
|
});
|
|
16
16
|
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { defineCommand } from "citty";
|
|
2
|
+
|
|
3
|
+
//#region src/commands/snippet/index.ts
|
|
4
|
+
var snippet_default = defineCommand({
|
|
5
|
+
meta: {
|
|
6
|
+
name: "snippet",
|
|
7
|
+
description: "Manage Metabase native query snippets"
|
|
8
|
+
},
|
|
9
|
+
subCommands: {
|
|
10
|
+
list: () => import("./list-DrINpVLM.mjs").then((mod) => mod.default),
|
|
11
|
+
get: () => import("./get-DsqGHNHN.mjs").then((mod) => mod.default),
|
|
12
|
+
create: () => import("./create-BrUqxreg.mjs").then((mod) => mod.default),
|
|
13
|
+
update: () => import("./update-C0jP0AKT.mjs").then((mod) => mod.default),
|
|
14
|
+
archive: () => import("./archive-CBGKzEAl.mjs").then((mod) => mod.default)
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
//#endregion
|
|
19
|
+
export { snippet_default as default };
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import "./
|
|
2
|
-
import "./
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { parseId } from "./parse-id-
|
|
7
|
-
import { pollUntil } from "./poll-
|
|
8
|
-
import "./yaml-
|
|
9
|
-
import { runProcess } from "./process-
|
|
10
|
-
import { Workspace } from "./workspace-
|
|
11
|
-
import { CONTAINER_REPO_DIR, checkDockerReady, containerLifecycleStatus, containerNameFor, pullImage, removeContainer, runWorkspaceContainer, scrubContainerConfig, waitForConfigConsumed } from "./docker-
|
|
12
|
-
import { REPO_SYNC_MODES, RepoSyncMode, buildCredentialsJson, generateWorkspaceCredentials, injectCredentialsIntoConfig, injectRepoSettingsIntoConfig } from "./workspace-credentials-
|
|
1
|
+
import { ConfigError, errorMessage } from "./command-augment-BH9qgQ5u.mjs";
|
|
2
|
+
import { connectionFlags, outputFlags, profileFlag } from "./error-ZsFeevV2.mjs";
|
|
3
|
+
import { createClient, defineMetabaseCommand, localUrl, parseInteger, parseOptionalInteger, resolveLicenseToken } from "./runtime-Duawf5lE.mjs";
|
|
4
|
+
import { warn } from "./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 "./yaml-Gv6wRFMF.mjs";
|
|
9
|
+
import { runProcess } from "./process-CM7Uu5q_.mjs";
|
|
10
|
+
import { Workspace } from "./workspace-D8HtUN0y.mjs";
|
|
11
|
+
import { CONTAINER_REPO_DIR, checkDockerReady, containerLifecycleStatus, containerNameFor, pullImage, removeContainer, runWorkspaceContainer, scrubContainerConfig, waitForConfigConsumed } from "./docker-Ds252Mwc.mjs";
|
|
12
|
+
import { REPO_SYNC_MODES, RepoSyncMode, buildCredentialsJson, generateWorkspaceCredentials, injectCredentialsIntoConfig, injectRepoSettingsIntoConfig } from "./workspace-credentials-8CBMQJFz.mjs";
|
|
13
13
|
import { z } from "zod";
|
|
14
|
-
import { stat } from "node:fs/promises";
|
|
15
14
|
import { resolve } from "node:path";
|
|
15
|
+
import { stat } from "node:fs/promises";
|
|
16
16
|
import { createServer } from "node:net";
|
|
17
17
|
|
|
18
18
|
//#region src/core/http/probe.ts
|
|
@@ -53,7 +53,10 @@ async function findFreePort(start) {
|
|
|
53
53
|
|
|
54
54
|
//#endregion
|
|
55
55
|
//#region src/commands/workspace/start.ts
|
|
56
|
-
const
|
|
56
|
+
const ENTERPRISE_IMAGE = "metabase/metabase-enterprise";
|
|
57
|
+
const ENTERPRISE_HEAD_IMAGE = "metabase/metabase-enterprise-head";
|
|
58
|
+
const LATEST_TAG = "latest";
|
|
59
|
+
const WORKSPACES_MIN_VERSION = 62;
|
|
57
60
|
const DEFAULT_HOST_PORT = 3e3;
|
|
58
61
|
const DEFAULT_READY_TIMEOUT_MS = 24e4;
|
|
59
62
|
const HEALTH_INTERVAL_MS = 2e3;
|
|
@@ -122,6 +125,10 @@ var start_default = defineMetabaseCommand({
|
|
|
122
125
|
name: "start",
|
|
123
126
|
description: "Start a local Docker container that serves as the workspace's dev instance"
|
|
124
127
|
},
|
|
128
|
+
capabilities: {
|
|
129
|
+
minVersion: WORKSPACES_MIN_VERSION,
|
|
130
|
+
tokenFeature: "workspaces"
|
|
131
|
+
},
|
|
125
132
|
args: {
|
|
126
133
|
...outputFlags,
|
|
127
134
|
...profileFlag,
|
|
@@ -137,8 +144,7 @@ var start_default = defineMetabaseCommand({
|
|
|
137
144
|
},
|
|
138
145
|
image: {
|
|
139
146
|
type: "string",
|
|
140
|
-
description: `Docker image to run
|
|
141
|
-
default: DEFAULT_IMAGE
|
|
147
|
+
description: `Docker image to run. Default: ${ENTERPRISE_IMAGE}:${LATEST_TAG} once Metabase v${WORKSPACES_MIN_VERSION} is released, otherwise ${ENTERPRISE_HEAD_IMAGE}:${LATEST_TAG}.`
|
|
142
148
|
},
|
|
143
149
|
wait: {
|
|
144
150
|
type: "boolean",
|
|
@@ -184,12 +190,12 @@ var start_default = defineMetabaseCommand({
|
|
|
184
190
|
"mb workspace start 1",
|
|
185
191
|
"mb workspace start 1 --wait",
|
|
186
192
|
"mb workspace start 1 --port 3100",
|
|
187
|
-
"mb workspace start 1 --image metabase/metabase-
|
|
193
|
+
"mb workspace start 1 --image metabase/metabase-enterprise:latest --no-pull",
|
|
188
194
|
"mb workspace start 1 --force",
|
|
189
195
|
"mb workspace start 1 --repo /path/to/sync-repo --wait",
|
|
190
196
|
"mb workspace start 1 --repo /path/to/sync-repo --repo-branch dev --repo-mode read-only"
|
|
191
197
|
],
|
|
192
|
-
async run({ args, ctx, getClient, getResolvedConfig }) {
|
|
198
|
+
async run({ args, ctx, getClient, getResolvedConfig, getServerInfo }) {
|
|
193
199
|
const workspaceId = parseId(args.id);
|
|
194
200
|
const containerName = containerNameFor(workspaceId);
|
|
195
201
|
const requestedPort = parseOptionalInteger(args.port, {
|
|
@@ -203,9 +209,11 @@ var start_default = defineMetabaseCommand({
|
|
|
203
209
|
const client = await getClient();
|
|
204
210
|
const resolved = await getResolvedConfig();
|
|
205
211
|
const licenseToken = await resolveLicenseToken({});
|
|
212
|
+
const serverInfo = await getServerInfo();
|
|
213
|
+
const image = args.image ?? resolveDefaultImage(serverInfo?.version ?? null);
|
|
206
214
|
await checkDockerReady();
|
|
207
215
|
await ensureNoExistingContainer(workspaceId, containerName, args.force);
|
|
208
|
-
const pullPromise = args.pull ? pullImage(
|
|
216
|
+
const pullPromise = args.pull ? pullImage(image) : Promise.resolve();
|
|
209
217
|
const workspace = await client.requestParsed(Workspace, `/api/ee/workspace-manager/${workspaceId}`);
|
|
210
218
|
assertAllDatabasesProvisioned(workspace);
|
|
211
219
|
const hostPort = await resolveHostPort(requestedPort);
|
|
@@ -218,44 +226,46 @@ var start_default = defineMetabaseCommand({
|
|
|
218
226
|
mode: args["repo-mode"]
|
|
219
227
|
})
|
|
220
228
|
]);
|
|
221
|
-
const
|
|
222
|
-
const configWithCredentials = injectCredentialsIntoConfig(parentConfigYaml, credentials);
|
|
223
|
-
const configYaml = repoOptions !== null ? injectRepoSettingsIntoConfig(configWithCredentials, repoOptions.repo) : configWithCredentials;
|
|
224
|
-
const credentialsJson = buildCredentialsJson(credentials);
|
|
229
|
+
const bundle = assembleBootBundle(parentConfigYaml, workspaceId, repoOptions);
|
|
225
230
|
await pullPromise;
|
|
226
231
|
await runWorkspaceContainer({
|
|
227
232
|
workspaceId,
|
|
228
233
|
workspaceName: workspace.name,
|
|
229
234
|
profile: resolved.profile,
|
|
230
235
|
parentUrl: resolved.url,
|
|
231
|
-
image
|
|
236
|
+
image,
|
|
232
237
|
hostPort,
|
|
233
|
-
configYaml,
|
|
234
|
-
credentialsJson,
|
|
238
|
+
configYaml: bundle.configYaml,
|
|
239
|
+
credentialsJson: bundle.credentialsJson,
|
|
235
240
|
licenseToken,
|
|
236
241
|
bindMounts: repoOptions === null ? [] : [repoOptions.bindMount]
|
|
237
242
|
});
|
|
238
|
-
await
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
if (metadataJson !== null) await importMetadataIntoChild(hostPort, credentials, metadataJson, readyTimeoutMs);
|
|
243
|
+
const state = await finalizeContainer({
|
|
244
|
+
workspaceId,
|
|
245
|
+
hostPort,
|
|
246
|
+
credentials: bundle.credentials,
|
|
247
|
+
metadataJson,
|
|
248
|
+
wait: args.wait,
|
|
249
|
+
timeoutMs: readyTimeoutMs
|
|
250
|
+
});
|
|
247
251
|
const result = {
|
|
248
252
|
workspace_id: workspaceId,
|
|
249
253
|
workspace_name: workspace.name,
|
|
250
254
|
container_name: containerName,
|
|
251
|
-
state
|
|
255
|
+
state,
|
|
252
256
|
host_port: hostPort,
|
|
253
257
|
url: localUrl(hostPort),
|
|
254
|
-
image
|
|
258
|
+
image
|
|
255
259
|
};
|
|
256
|
-
|
|
260
|
+
const message = result.state === "running" ? `Workspace ${workspaceId} "${workspace.name}" is running at ${result.url}.` : `Workspace ${workspaceId} "${workspace.name}" is starting — container is up, instance still booting. Check \`mb workspace ps\` or rerun with --wait.`;
|
|
261
|
+
renderSummary(result, startResultView, message, ctx);
|
|
257
262
|
}
|
|
258
263
|
});
|
|
264
|
+
function resolveDefaultImage(version) {
|
|
265
|
+
const isReleased = version !== null && version.major >= WORKSPACES_MIN_VERSION;
|
|
266
|
+
const repo = isReleased ? ENTERPRISE_IMAGE : ENTERPRISE_HEAD_IMAGE;
|
|
267
|
+
return `${repo}:${LATEST_TAG}`;
|
|
268
|
+
}
|
|
259
269
|
function assertAllDatabasesProvisioned(workspace) {
|
|
260
270
|
const databases = workspace.databases ?? [];
|
|
261
271
|
if (databases.length === 0) throw new ConfigError(`workspace ${workspace.id} has no databases — provision at least one before starting`);
|
|
@@ -301,6 +311,28 @@ async function fetchMetadataJson(client, workspaceId) {
|
|
|
301
311
|
});
|
|
302
312
|
return new Uint8Array(await response.arrayBuffer());
|
|
303
313
|
}
|
|
314
|
+
function assembleBootBundle(parentConfigYaml, workspaceId, repoOptions) {
|
|
315
|
+
const credentials = generateWorkspaceCredentials(workspaceId);
|
|
316
|
+
const withCredentials = injectCredentialsIntoConfig(parentConfigYaml, credentials);
|
|
317
|
+
const configYaml = repoOptions !== null ? injectRepoSettingsIntoConfig(withCredentials, repoOptions.repo) : withCredentials;
|
|
318
|
+
return {
|
|
319
|
+
configYaml,
|
|
320
|
+
credentialsJson: buildCredentialsJson(credentials),
|
|
321
|
+
credentials
|
|
322
|
+
};
|
|
323
|
+
}
|
|
324
|
+
async function finalizeContainer(input) {
|
|
325
|
+
await waitForConfigConsumed(input.workspaceId, input.timeoutMs);
|
|
326
|
+
try {
|
|
327
|
+
await scrubContainerConfig(input.workspaceId);
|
|
328
|
+
} catch (error) {
|
|
329
|
+
warn(`could not scrub in-container config.yml: ${errorMessage(error)}`);
|
|
330
|
+
}
|
|
331
|
+
const reachedHealth = input.wait || input.metadataJson !== null;
|
|
332
|
+
if (reachedHealth) await waitForHealth(input.hostPort, input.timeoutMs);
|
|
333
|
+
if (input.metadataJson !== null) await importMetadataIntoChild(input.hostPort, input.credentials, input.metadataJson, input.timeoutMs);
|
|
334
|
+
return reachedHealth ? "running" : "starting";
|
|
335
|
+
}
|
|
304
336
|
async function waitForHealth(hostPort, timeoutMs) {
|
|
305
337
|
const url = `${localUrl(hostPort)}/api/health`;
|
|
306
338
|
await pollUntil(() => probeHealth(url, HEALTH_PROBE_TIMEOUT_MS), (probe) => probe.ready, {
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import "./
|
|
2
|
-
import "./
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
5
|
-
import {
|
|
6
|
-
import
|
|
7
|
-
import { REMOTE_SYNC_PATHS, SyncTask,
|
|
8
|
-
import "./poll-
|
|
1
|
+
import { ConfigError } from "./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 "./parse-id-0_tOPvfI.mjs";
|
|
7
|
+
import { REMOTE_SYNC_PATHS, SyncTask, formatSyncTask, pollSyncTask, throwIfFailedTask } from "./poll-task-51WRdugU.mjs";
|
|
8
|
+
import "./poll-4eoh5J0r.mjs";
|
|
9
|
+
import { gitSyncWaitFlags, parseWaitFlags } from "./wait-flags-DlfbIXHw.mjs";
|
|
9
10
|
import { z } from "zod";
|
|
10
11
|
|
|
11
12
|
//#region src/commands/git-sync/stash.ts
|
|
@@ -43,6 +44,10 @@ var stash_default = defineMetabaseCommand({
|
|
|
43
44
|
name: "stash",
|
|
44
45
|
description: "Export current Metabase state to a new branch on the git remote"
|
|
45
46
|
},
|
|
47
|
+
capabilities: {
|
|
48
|
+
minVersion: 60,
|
|
49
|
+
tokenFeature: "remote_sync"
|
|
50
|
+
},
|
|
46
51
|
args: {
|
|
47
52
|
...outputFlags,
|
|
48
53
|
...profileFlag,
|
|
@@ -59,7 +64,7 @@ var stash_default = defineMetabaseCommand({
|
|
|
59
64
|
alias: "m",
|
|
60
65
|
default: DEFAULT_STASH_MESSAGE
|
|
61
66
|
},
|
|
62
|
-
...
|
|
67
|
+
...gitSyncWaitFlags
|
|
63
68
|
},
|
|
64
69
|
outputSchema: SyncStashResult,
|
|
65
70
|
examples: ["mb git-sync stash --new-branch wip", "mb git-sync stash --new-branch wip -m \"work in progress\" --json"],
|
|
@@ -68,8 +73,7 @@ var stash_default = defineMetabaseCommand({
|
|
|
68
73
|
if (newBranch === "") throw new ConfigError("invalid new-branch: must not be blank");
|
|
69
74
|
const message = args.message.trim();
|
|
70
75
|
if (message === "") throw new ConfigError("invalid message: must not be blank");
|
|
71
|
-
const
|
|
72
|
-
const intervalMs = parseId(args.interval, "interval");
|
|
76
|
+
const wait = parseWaitFlags(args);
|
|
73
77
|
const body = {
|
|
74
78
|
new_branch: newBranch,
|
|
75
79
|
message
|
|
@@ -79,26 +83,25 @@ var stash_default = defineMetabaseCommand({
|
|
|
79
83
|
method: "POST",
|
|
80
84
|
body
|
|
81
85
|
});
|
|
82
|
-
if (!
|
|
86
|
+
if (!wait.enabled) {
|
|
83
87
|
const result$1 = {
|
|
84
88
|
status: kickoff.status,
|
|
85
89
|
message: kickoff.message,
|
|
86
90
|
task_id: kickoff.task_id
|
|
87
91
|
};
|
|
88
|
-
|
|
92
|
+
renderSummary(result$1, syncStashView, `Started stash to branch "${newBranch}" (task #${kickoff.task_id}).`, ctx);
|
|
89
93
|
return;
|
|
90
94
|
}
|
|
91
|
-
const final = await pollSyncTask(client,
|
|
92
|
-
timeoutMs,
|
|
93
|
-
intervalMs
|
|
94
|
-
});
|
|
95
|
+
const final = await pollSyncTask(client, wait.schedule);
|
|
95
96
|
const result = {
|
|
96
97
|
status: kickoff.status,
|
|
97
98
|
message: kickoff.message,
|
|
98
99
|
task_id: kickoff.task_id,
|
|
99
100
|
final
|
|
100
101
|
};
|
|
101
|
-
|
|
102
|
+
const succeeded = final === null || final.status === "successful";
|
|
103
|
+
const text = succeeded ? `Stashed Metabase state to branch "${newBranch}" (task #${kickoff.task_id}).` : formatSyncTask(final);
|
|
104
|
+
renderSummary(result, syncStashView, text, ctx);
|
|
102
105
|
throwIfFailedTask(final, "stash");
|
|
103
106
|
}
|
|
104
107
|
});
|