@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,66 +1,21 @@
|
|
|
1
|
-
import "./
|
|
2
|
-
import "./
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
1
|
+
import { ConfigError, errorMessage } from "./command-augment-BH9qgQ5u.mjs";
|
|
2
|
+
import { connectionFlags, outputFlags, profileFlag } from "./error-C9S6PN3-.mjs";
|
|
3
|
+
import { DEFAULT_PROFILE, ParsedVersionSchema, ProbedUser, defineMetabaseCommand, explicitProfileName, keyringFallbackWarning, normalizeUrl, readEnvCredentials, writeProbeFailure, writeProbeResult, writeProfile } from "./runtime-Dmv5VtUK.mjs";
|
|
4
|
+
import { verifyAndProbe } from "./verify-D5YtTqqp.mjs";
|
|
5
|
+
import { warn } from "./capabilities-7e9MgquN.mjs";
|
|
6
|
+
import { renderItem } from "./render-CfznwleY.mjs";
|
|
7
|
+
import { renderUserName, renderUserRole, renderVersionTag } from "./render-OQn3iRsI.mjs";
|
|
8
|
+
import { promptPassword, promptText } from "./prompt-CFKoys7k.mjs";
|
|
9
|
+
import { readInput } from "./input-cMSEqISy.mjs";
|
|
8
10
|
import { z } from "zod";
|
|
9
11
|
|
|
10
|
-
//#region src/domain/user.ts
|
|
11
|
-
const CurrentUser = z.object({
|
|
12
|
-
id: z.number().int(),
|
|
13
|
-
email: z.email()
|
|
14
|
-
}).loose();
|
|
15
|
-
const CurrentUserCompact = CurrentUser.pick({
|
|
16
|
-
id: true,
|
|
17
|
-
email: true
|
|
18
|
-
}).strip();
|
|
19
|
-
|
|
20
|
-
//#endregion
|
|
21
|
-
//#region src/core/auth/verify.ts
|
|
22
|
-
const VERIFY_TIMEOUT_MS = 15e3;
|
|
23
|
-
async function verifyCredentials(url, apiKey) {
|
|
24
|
-
const client = createClient({
|
|
25
|
-
url,
|
|
26
|
-
apiKey
|
|
27
|
-
});
|
|
28
|
-
try {
|
|
29
|
-
const user = await client.requestParsed(CurrentUser, "/api/user/current", {
|
|
30
|
-
timeoutMs: VERIFY_TIMEOUT_MS,
|
|
31
|
-
retries: 0
|
|
32
|
-
});
|
|
33
|
-
return {
|
|
34
|
-
ok: true,
|
|
35
|
-
user
|
|
36
|
-
};
|
|
37
|
-
} catch (error) {
|
|
38
|
-
return failure(error);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
function failure(error) {
|
|
42
|
-
if (error instanceof HttpError) return {
|
|
43
|
-
ok: false,
|
|
44
|
-
status: error.status,
|
|
45
|
-
message: error.userMessage
|
|
46
|
-
};
|
|
47
|
-
if (error instanceof MetabaseError) return {
|
|
48
|
-
ok: false,
|
|
49
|
-
message: error.userMessage
|
|
50
|
-
};
|
|
51
|
-
return {
|
|
52
|
-
ok: false,
|
|
53
|
-
message: errorMessage(error)
|
|
54
|
-
};
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
//#endregion
|
|
58
12
|
//#region src/commands/auth/login.ts
|
|
59
13
|
const LoginResult = z.object({
|
|
60
14
|
profile: z.string(),
|
|
61
15
|
url: z.string(),
|
|
62
16
|
authenticated: z.boolean(),
|
|
63
|
-
|
|
17
|
+
user: ProbedUser.nullable(),
|
|
18
|
+
version: ParsedVersionSchema.nullable()
|
|
64
19
|
});
|
|
65
20
|
const loginView = {
|
|
66
21
|
compactPick: LoginResult,
|
|
@@ -75,12 +30,23 @@ const loginView = {
|
|
|
75
30
|
},
|
|
76
31
|
{
|
|
77
32
|
key: "authenticated",
|
|
78
|
-
label: "
|
|
33
|
+
label: "Authenticated",
|
|
79
34
|
format: (value) => value === true ? "credentials verified" : "saved without verification"
|
|
80
35
|
},
|
|
81
36
|
{
|
|
82
|
-
key: "
|
|
83
|
-
label: "Logged in as"
|
|
37
|
+
key: "user",
|
|
38
|
+
label: "Logged in as",
|
|
39
|
+
format: (value) => renderUserName(value)
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
key: "user",
|
|
43
|
+
label: "Role",
|
|
44
|
+
format: (value) => renderUserRole(value)
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
key: "version",
|
|
48
|
+
label: "Version",
|
|
49
|
+
format: (value) => renderVersionTag(value)
|
|
84
50
|
}
|
|
85
51
|
]
|
|
86
52
|
};
|
|
@@ -89,6 +55,8 @@ var login_default = defineMetabaseCommand({
|
|
|
89
55
|
name: "login",
|
|
90
56
|
description: "Set Metabase credentials for a profile"
|
|
91
57
|
},
|
|
58
|
+
details: "API-key auth only. The key is read from --api-key, $METABASE_API_KEY, or piped stdin (first non-empty wins); the URL from --url or $METABASE_URL. Both are prompted when stdin is a TTY.",
|
|
59
|
+
capabilities: { minVersion: 58 },
|
|
92
60
|
args: {
|
|
93
61
|
...outputFlags,
|
|
94
62
|
...profileFlag,
|
|
@@ -111,44 +79,61 @@ var login_default = defineMetabaseCommand({
|
|
|
111
79
|
if (args.apiKey) warn("warning: --api-key is visible in shell history and process listings — pipe the key on stdin or set METABASE_API_KEY instead");
|
|
112
80
|
const url = await resolveUrl(args.url, env.url);
|
|
113
81
|
const apiKey = await resolveApiKey(args.apiKey, env.apiKey);
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
82
|
+
if (args["skip-verify"]) {
|
|
83
|
+
const location$1 = await writeProfile({
|
|
84
|
+
url,
|
|
85
|
+
apiKey
|
|
86
|
+
}, profileName);
|
|
87
|
+
if (location$1.backend === "file") warn(keyringFallbackWarning(location$1, "credentials"));
|
|
88
|
+
renderItem({
|
|
89
|
+
profile: profileName,
|
|
90
|
+
url,
|
|
91
|
+
authenticated: false,
|
|
92
|
+
user: null,
|
|
93
|
+
version: null
|
|
94
|
+
}, loginView, ctx);
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
const result = await verifyAndProbe(url, apiKey);
|
|
98
|
+
if (!result.ok) {
|
|
99
|
+
await writeProbeFailure(profileName, {
|
|
100
|
+
kind: result.kind,
|
|
101
|
+
reason: result.message
|
|
102
|
+
});
|
|
103
|
+
throw new ConfigError(formatVerifyFailureMessage(profileName, result));
|
|
127
104
|
}
|
|
128
105
|
const location = await writeProfile({
|
|
129
106
|
url,
|
|
130
107
|
apiKey
|
|
131
108
|
}, profileName);
|
|
132
|
-
|
|
133
|
-
|
|
109
|
+
if (location.backend === "file") warn(keyringFallbackWarning(location, "credentials"));
|
|
110
|
+
await writeProbeResult(profileName, {
|
|
111
|
+
user: result.user,
|
|
112
|
+
server: result.server
|
|
113
|
+
});
|
|
134
114
|
renderItem({
|
|
135
115
|
profile: profileName,
|
|
136
116
|
url,
|
|
137
|
-
authenticated,
|
|
138
|
-
|
|
117
|
+
authenticated: true,
|
|
118
|
+
user: result.user,
|
|
119
|
+
version: result.server.version
|
|
139
120
|
}, loginView, ctx);
|
|
140
121
|
}
|
|
141
122
|
});
|
|
123
|
+
function formatVerifyFailureMessage(profileName, failure) {
|
|
124
|
+
const which = failure.which === "user" ? "/api/user/current" : "/api/session/properties";
|
|
125
|
+
return `verification failed (${which}): ${failure.message} — credentials were not saved for profile "${profileName}"`;
|
|
126
|
+
}
|
|
142
127
|
async function resolveLoginProfile(flagProfile) {
|
|
143
128
|
const explicit = explicitProfileName(flagProfile);
|
|
144
129
|
if (explicit !== null) return explicit;
|
|
145
130
|
if (!process.stdin.isTTY) return DEFAULT_PROFILE;
|
|
146
|
-
|
|
131
|
+
const entered = (await promptText({
|
|
147
132
|
message: "Profile name",
|
|
148
133
|
placeholder: DEFAULT_PROFILE,
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
134
|
+
defaultValue: DEFAULT_PROFILE
|
|
135
|
+
})).trim();
|
|
136
|
+
return entered === "" ? DEFAULT_PROFILE : entered;
|
|
152
137
|
}
|
|
153
138
|
async function resolveUrl(flagUrl, envUrl) {
|
|
154
139
|
if (flagUrl) return normalizeUrl(flagUrl);
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import "./
|
|
2
|
-
import "./
|
|
3
|
-
import {
|
|
4
|
-
import "./
|
|
5
|
-
import {
|
|
6
|
-
import { promptConfirm } from "./prompt-
|
|
1
|
+
import "./command-augment-BH9qgQ5u.mjs";
|
|
2
|
+
import { outputFlags, profileFlag } from "./error-C9S6PN3-.mjs";
|
|
3
|
+
import { clearProfile, defineMetabaseCommand, resolveProfileName } from "./runtime-Dmv5VtUK.mjs";
|
|
4
|
+
import "./capabilities-7e9MgquN.mjs";
|
|
5
|
+
import { renderItem } from "./render-CfznwleY.mjs";
|
|
6
|
+
import { promptConfirm } from "./prompt-CFKoys7k.mjs";
|
|
7
7
|
import { z } from "zod";
|
|
8
8
|
|
|
9
9
|
//#region src/commands/auth/logout.ts
|
|
@@ -34,6 +34,7 @@ var logout_default = defineMetabaseCommand({
|
|
|
34
34
|
name: "logout",
|
|
35
35
|
description: "Clear stored credentials for a profile"
|
|
36
36
|
},
|
|
37
|
+
capabilities: null,
|
|
37
38
|
args: {
|
|
38
39
|
...outputFlags,
|
|
39
40
|
...profileFlag,
|
|
@@ -61,7 +62,7 @@ var logout_default = defineMetabaseCommand({
|
|
|
61
62
|
return;
|
|
62
63
|
}
|
|
63
64
|
}
|
|
64
|
-
const
|
|
65
|
+
const cleared = await clearProfile(profileName);
|
|
65
66
|
renderItem({
|
|
66
67
|
profile: profileName,
|
|
67
68
|
cleared,
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import "./
|
|
2
|
-
import "./
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
5
|
-
import { parseId } from "./parse-id-
|
|
6
|
-
import "./poll-
|
|
7
|
-
import "./process-
|
|
8
|
-
import { checkDockerReady, containerLifecycleStatus, containerNameFor, streamLogs } from "./docker-
|
|
1
|
+
import { ConfigError } from "./command-augment-BH9qgQ5u.mjs";
|
|
2
|
+
import { outputFlags } from "./error-C9S6PN3-.mjs";
|
|
3
|
+
import { defineMetabaseCommand, parseInteger } from "./runtime-Dmv5VtUK.mjs";
|
|
4
|
+
import "./capabilities-7e9MgquN.mjs";
|
|
5
|
+
import { parseId } from "./parse-id-lk_K-CEF.mjs";
|
|
6
|
+
import "./poll-DHKDpCiq.mjs";
|
|
7
|
+
import "./process-C7V8LJ-j.mjs";
|
|
8
|
+
import { checkDockerReady, containerLifecycleStatus, containerNameFor, streamLogs } from "./docker-Oq80q3tu.mjs";
|
|
9
9
|
|
|
10
10
|
//#region src/commands/workspace/logs.ts
|
|
11
11
|
const DEFAULT_TAIL = 200;
|
|
@@ -14,6 +14,7 @@ var logs_default = defineMetabaseCommand({
|
|
|
14
14
|
name: "logs",
|
|
15
15
|
description: "Stream the local container's logs (passthrough to `docker logs`)"
|
|
16
16
|
},
|
|
17
|
+
capabilities: null,
|
|
17
18
|
args: {
|
|
18
19
|
...outputFlags,
|
|
19
20
|
id: {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { getMetabaseAugment } from "./command-augment-
|
|
2
|
-
import {
|
|
3
|
-
import "./
|
|
1
|
+
import { getMetabaseAugment, resolveCitty, toAliasArray } from "./command-augment-BH9qgQ5u.mjs";
|
|
2
|
+
import { Capabilities } from "./capabilities-7e9MgquN.mjs";
|
|
3
|
+
import { writeJson } from "./render-CfznwleY.mjs";
|
|
4
4
|
import { defineCommand } from "citty";
|
|
5
5
|
import { z } from "zod";
|
|
6
6
|
|
|
@@ -26,9 +26,11 @@ const ManifestArg = z.object({
|
|
|
26
26
|
const ManifestEntry = z.object({
|
|
27
27
|
command: z.string(),
|
|
28
28
|
description: z.string(),
|
|
29
|
+
details: z.string().optional(),
|
|
29
30
|
examples: z.array(z.string()),
|
|
30
31
|
args: z.array(ManifestArg),
|
|
31
|
-
outputSchema: z.unknown().nullable()
|
|
32
|
+
outputSchema: z.unknown().nullable(),
|
|
33
|
+
capabilities: Capabilities.nullable()
|
|
32
34
|
});
|
|
33
35
|
const Manifest = z.object({
|
|
34
36
|
version: z.literal(1),
|
|
@@ -53,13 +55,17 @@ async function walk(cmd, path) {
|
|
|
53
55
|
}
|
|
54
56
|
const args = await resolveCitty(cmd.args) ?? {};
|
|
55
57
|
const augment = getMetabaseAugment(cmd);
|
|
56
|
-
return [
|
|
58
|
+
if (augment === null) return [];
|
|
59
|
+
const entry = {
|
|
57
60
|
command: path.join(" "),
|
|
58
61
|
description: readDescription(meta),
|
|
59
|
-
examples:
|
|
62
|
+
examples: Array.from(augment.examples),
|
|
60
63
|
args: convertArgs(args),
|
|
61
|
-
outputSchema: augment
|
|
62
|
-
|
|
64
|
+
outputSchema: augment.outputSchema ? z.toJSONSchema(augment.outputSchema) : null,
|
|
65
|
+
capabilities: augment.capabilities
|
|
66
|
+
};
|
|
67
|
+
if (augment.details !== null) entry.details = augment.details;
|
|
68
|
+
return [entry];
|
|
63
69
|
}
|
|
64
70
|
function readDescription(meta) {
|
|
65
71
|
if (meta === void 0) return "";
|
|
@@ -87,17 +93,11 @@ function readOptions(def) {
|
|
|
87
93
|
return [...def.options];
|
|
88
94
|
}
|
|
89
95
|
function readAlias(def) {
|
|
90
|
-
|
|
91
|
-
return Array.isArray(def.alias) ? def.alias : [def.alias];
|
|
96
|
+
return "alias" in def ? toAliasArray(def.alias) : [];
|
|
92
97
|
}
|
|
93
98
|
function isPrimitiveDefault(value) {
|
|
94
99
|
return typeof value === "string" || typeof value === "boolean" || typeof value === "number";
|
|
95
100
|
}
|
|
96
|
-
async function resolveCitty(value) {
|
|
97
|
-
if (value === void 0) return void 0;
|
|
98
|
-
if (typeof value === "function") return value();
|
|
99
|
-
return value;
|
|
100
|
-
}
|
|
101
101
|
|
|
102
102
|
//#endregion
|
|
103
103
|
//#region src/commands/manifest.ts
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { defineCommand } from "citty";
|
|
2
|
+
|
|
3
|
+
//#region src/commands/measure/index.ts
|
|
4
|
+
var measure_default = defineCommand({
|
|
5
|
+
meta: {
|
|
6
|
+
name: "measure",
|
|
7
|
+
alias: "measures",
|
|
8
|
+
description: "Manage Metabase measures"
|
|
9
|
+
},
|
|
10
|
+
subCommands: {
|
|
11
|
+
list: () => import("./list-CL7eCOQE.mjs").then((mod) => mod.default),
|
|
12
|
+
get: () => import("./get-DQTZG_NP.mjs").then((mod) => mod.default),
|
|
13
|
+
create: () => import("./create-CwGtmwqm.mjs").then((mod) => mod.default),
|
|
14
|
+
update: () => import("./update-DzAN4SPj.mjs").then((mod) => mod.default),
|
|
15
|
+
archive: () => import("./archive-CRhiBpPJ.mjs").then((mod) => mod.default)
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
//#endregion
|
|
20
|
+
export { measure_default as default };
|
|
@@ -10,8 +10,8 @@ const Measure = z.object({
|
|
|
10
10
|
definition: z.unknown(),
|
|
11
11
|
creator_id: z.number().int(),
|
|
12
12
|
entity_id: z.string().nullable(),
|
|
13
|
-
dimensions: z.array(z.unknown()).
|
|
14
|
-
dimension_mappings: z.array(z.unknown()).
|
|
13
|
+
dimensions: z.array(z.unknown()).nullish(),
|
|
14
|
+
dimension_mappings: z.array(z.unknown()).nullish(),
|
|
15
15
|
definition_description: z.string().nullable().optional(),
|
|
16
16
|
result_column_name: z.string().nullable().optional(),
|
|
17
17
|
created_at: z.string(),
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import "./
|
|
2
|
-
import "./
|
|
3
|
-
import {
|
|
4
|
-
import "./
|
|
5
|
-
import {
|
|
6
|
-
import
|
|
7
|
-
import "./
|
|
8
|
-
import "./table-
|
|
9
|
-
import { Database, databaseView } from "./database-
|
|
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 "./field-yomXlkvl.mjs";
|
|
7
|
+
import { parseId } from "./parse-id-lk_K-CEF.mjs";
|
|
8
|
+
import "./table-C7a5V6Zn.mjs";
|
|
9
|
+
import { Database, databaseView } from "./database-lH-B3G1I.mjs";
|
|
10
10
|
|
|
11
11
|
//#region src/commands/db/metadata.ts
|
|
12
12
|
var metadata_default = defineMetabaseCommand({
|
|
@@ -14,6 +14,7 @@ var metadata_default = defineMetabaseCommand({
|
|
|
14
14
|
name: "metadata",
|
|
15
15
|
description: "Get a database with its tables and fields hydrated"
|
|
16
16
|
},
|
|
17
|
+
capabilities: { minVersion: 58 },
|
|
17
18
|
args: {
|
|
18
19
|
...outputFlags,
|
|
19
20
|
...profileFlag,
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import "./
|
|
2
|
-
import "./
|
|
3
|
-
import {
|
|
4
|
-
import "./
|
|
5
|
-
import {
|
|
6
|
-
import
|
|
7
|
-
import "./
|
|
8
|
-
import { TableQueryMetadata, tableView } from "./table-
|
|
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 "./field-yomXlkvl.mjs";
|
|
7
|
+
import { parseId } from "./parse-id-lk_K-CEF.mjs";
|
|
8
|
+
import { TableQueryMetadata, tableView } from "./table-C7a5V6Zn.mjs";
|
|
9
9
|
|
|
10
10
|
//#region src/commands/table/metadata.ts
|
|
11
11
|
var metadata_default = defineMetabaseCommand({
|
|
@@ -13,6 +13,7 @@ var metadata_default = defineMetabaseCommand({
|
|
|
13
13
|
name: "metadata",
|
|
14
14
|
description: "Get a table with its fields, FKs, and dimensions hydrated"
|
|
15
15
|
},
|
|
16
|
+
capabilities: { minVersion: 58 },
|
|
16
17
|
args: {
|
|
17
18
|
...outputFlags,
|
|
18
19
|
...profileFlag,
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ConfigError } from "./command-augment-BH9qgQ5u.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/commands/parse-enum.ts
|
|
4
|
+
function parseEnumFlag(value, schema, name) {
|
|
5
|
+
const result = schema.safeParse(value);
|
|
6
|
+
if (result.success) return result.data;
|
|
7
|
+
throw new ConfigError(`invalid ${name}: "${value}" (expected one of: ${schema.options.join(", ")})`);
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
//#endregion
|
|
11
|
+
export { parseEnumFlag };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ConfigError } from "./
|
|
2
|
-
import { parseCsv } from "./runtime-
|
|
1
|
+
import { ConfigError } from "./command-augment-BH9qgQ5u.mjs";
|
|
2
|
+
import { parseCsv } from "./runtime-Dmv5VtUK.mjs";
|
|
3
3
|
|
|
4
4
|
//#region src/commands/workspace/database/parse-schemas.ts
|
|
5
5
|
function parseSchemasCsv(raw) {
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import "./
|
|
2
|
-
import "./
|
|
3
|
-
import {
|
|
4
|
-
import "./
|
|
5
|
-
import {
|
|
6
|
-
import "./yaml-
|
|
7
|
-
import { findSkillByName, loadAllSkills, loadVisibleSkills } from "./skills-
|
|
1
|
+
import "./command-augment-BH9qgQ5u.mjs";
|
|
2
|
+
import { listEnvelopeSchema, outputFlags, 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 "./yaml-YTQiYJ9s.mjs";
|
|
7
|
+
import { findSkillByName, loadAllSkills, loadVisibleSkills } from "./skills-CiN1OQ8W.mjs";
|
|
8
8
|
import { z } from "zod";
|
|
9
9
|
|
|
10
10
|
//#region src/commands/skills/path.ts
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { TimeoutError } from "./
|
|
2
|
-
import { combineAborts, throwIfAborted } from "./runtime-
|
|
1
|
+
import { TimeoutError } from "./command-augment-BH9qgQ5u.mjs";
|
|
2
|
+
import { combineAborts, throwIfAborted } from "./runtime-Dmv5VtUK.mjs";
|
|
3
3
|
import { setTimeout } from "node:timers/promises";
|
|
4
4
|
|
|
5
5
|
//#region src/runtime/poll.ts
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { parseJsonOrPlain } from "./runtime-
|
|
2
|
-
import {
|
|
1
|
+
import { parseJsonOrPlain } from "./runtime-Dmv5VtUK.mjs";
|
|
2
|
+
import { pollUntil } from "./poll-DHKDpCiq.mjs";
|
|
3
3
|
import { z } from "zod";
|
|
4
4
|
|
|
5
5
|
//#region src/domain/git-sync.ts
|
|
@@ -144,23 +144,6 @@ const syncTaskIdleView = {
|
|
|
144
144
|
label: "Status"
|
|
145
145
|
}]
|
|
146
146
|
};
|
|
147
|
-
const pollFlags = {
|
|
148
|
-
wait: {
|
|
149
|
-
type: "boolean",
|
|
150
|
-
description: "Poll the resulting task until it reaches a terminal status",
|
|
151
|
-
default: true
|
|
152
|
-
},
|
|
153
|
-
timeout: {
|
|
154
|
-
type: "string",
|
|
155
|
-
description: "Polling timeout in ms (used with --wait)",
|
|
156
|
-
default: String(DEFAULT_TIMEOUT_MS)
|
|
157
|
-
},
|
|
158
|
-
interval: {
|
|
159
|
-
type: "string",
|
|
160
|
-
description: "Polling interval in ms (used with --wait)",
|
|
161
|
-
default: String(DEFAULT_INTERVAL_MS)
|
|
162
|
-
}
|
|
163
|
-
};
|
|
164
147
|
function isTerminal(status) {
|
|
165
148
|
return TERMINAL_STATUSES.has(status);
|
|
166
149
|
}
|
|
@@ -192,4 +175,4 @@ function throwIfFailedTask(final, verb) {
|
|
|
192
175
|
}
|
|
193
176
|
|
|
194
177
|
//#endregion
|
|
195
|
-
export { REMOTE_SYNC_PATHS, SyncDirtyItem, SyncDirtyItemCompact, SyncTask, SyncTaskOrIdle, fetchCurrentTask, fetchOptionalParsed,
|
|
178
|
+
export { REMOTE_SYNC_PATHS, SyncDirtyItem, SyncDirtyItemCompact, SyncTask, SyncTaskOrIdle, fetchCurrentTask, fetchOptionalParsed, pollSyncTask, syncDirtyItemView, syncTaskIdleView, syncTaskView, throwIfFailedTask };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { Card } from "./card-
|
|
1
|
+
import { ChainedRequestError, ConfigError, MetabaseError } from "./command-augment-BH9qgQ5u.mjs";
|
|
2
|
+
import { HttpError } from "./runtime-Dmv5VtUK.mjs";
|
|
3
|
+
import { writeJson } from "./render-CfznwleY.mjs";
|
|
4
|
+
import { Card } from "./card-DlCAaAPq.mjs";
|
|
5
5
|
import { z } from "zod";
|
|
6
6
|
|
|
7
7
|
//#region src/commands/dashboard/preflight.ts
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AbortError, ConfigError } from "./
|
|
1
|
+
import { AbortError, ConfigError } from "./command-augment-BH9qgQ5u.mjs";
|
|
2
2
|
import { confirm, isCancel, password, text } from "@clack/prompts";
|
|
3
3
|
|
|
4
4
|
//#region src/output/prompt.ts
|
|
@@ -6,8 +6,10 @@ async function promptText(opts) {
|
|
|
6
6
|
requireTty(opts.message);
|
|
7
7
|
const value = await text({
|
|
8
8
|
message: opts.message,
|
|
9
|
+
defaultValue: "",
|
|
9
10
|
...opts.placeholder !== void 0 && { placeholder: opts.placeholder },
|
|
10
11
|
...opts.initialValue !== void 0 && { initialValue: opts.initialValue },
|
|
12
|
+
...opts.defaultValue !== void 0 && { defaultValue: opts.defaultValue },
|
|
11
13
|
...opts.validate !== void 0 && { validate: opts.validate }
|
|
12
14
|
});
|
|
13
15
|
if (isCancel(value)) throw new AbortError();
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import "./
|
|
2
|
-
import "./
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
5
|
-
import "./
|
|
6
|
-
import
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import "./poll-
|
|
11
|
-
import { parseWaitFlags, waitFlags } from "./wait-flags-
|
|
12
|
-
import { Workspace, WorkspaceProvisionInput, workspaceView } from "./workspace-
|
|
13
|
-
import { waitForDatabaseProvisioned } from "./wait-
|
|
14
|
-
import { parseSchemasCsv } from "./parse-schemas-
|
|
1
|
+
import { ConfigError } from "./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 "./input-cMSEqISy.mjs";
|
|
7
|
+
import { parseId } from "./parse-id-lk_K-CEF.mjs";
|
|
8
|
+
import { readBody } from "./body-DjdFxjpg.mjs";
|
|
9
|
+
import { bodyInputFlags } from "./body-flags-D7q87Btw.mjs";
|
|
10
|
+
import "./poll-DHKDpCiq.mjs";
|
|
11
|
+
import { parseWaitFlags, waitFlags } from "./wait-flags-Dzq9BGQY.mjs";
|
|
12
|
+
import { Workspace, WorkspaceProvisionInput, workspaceView } from "./workspace-BBXJczJK.mjs";
|
|
13
|
+
import { waitForDatabaseProvisioned } from "./wait-8yV9_WIo.mjs";
|
|
14
|
+
import { parseSchemasCsv } from "./parse-schemas-BqUdWUwq.mjs";
|
|
15
15
|
|
|
16
16
|
//#region src/commands/workspace/database/provision.ts
|
|
17
17
|
var provision_default = defineMetabaseCommand({
|
|
@@ -19,16 +19,16 @@ var provision_default = defineMetabaseCommand({
|
|
|
19
19
|
name: "provision",
|
|
20
20
|
description: "Provision a database into a workspace"
|
|
21
21
|
},
|
|
22
|
+
capabilities: {
|
|
23
|
+
minVersion: 62,
|
|
24
|
+
tokenFeature: "workspaces"
|
|
25
|
+
},
|
|
22
26
|
args: {
|
|
23
27
|
...outputFlags,
|
|
24
28
|
...profileFlag,
|
|
25
29
|
...connectionFlags,
|
|
26
30
|
...bodyInputFlags,
|
|
27
31
|
...waitFlags,
|
|
28
|
-
"database-id": {
|
|
29
|
-
type: "string",
|
|
30
|
-
description: "Database id (alternative to --body / --file)"
|
|
31
|
-
},
|
|
32
32
|
schemas: {
|
|
33
33
|
type: "string",
|
|
34
34
|
description: "Comma-separated input schemas (alternative to --body / --file)"
|
|
@@ -37,23 +37,28 @@ var provision_default = defineMetabaseCommand({
|
|
|
37
37
|
type: "positional",
|
|
38
38
|
description: "Workspace id",
|
|
39
39
|
required: true
|
|
40
|
+
},
|
|
41
|
+
"db-id": {
|
|
42
|
+
type: "positional",
|
|
43
|
+
description: "Database id (alternative to --body / --file)",
|
|
44
|
+
required: false
|
|
40
45
|
}
|
|
41
46
|
},
|
|
42
47
|
outputSchema: Workspace,
|
|
43
48
|
examples: [
|
|
44
|
-
"mb workspace database provision 1
|
|
45
|
-
"mb workspace database provision 1
|
|
49
|
+
"mb workspace database provision 1 5 --schemas analytics,github",
|
|
50
|
+
"mb workspace database provision 1 5 --schemas analytics --wait",
|
|
46
51
|
"mb workspace database provision 1 --file provision.json"
|
|
47
52
|
],
|
|
48
53
|
async run({ args, ctx, getClient }) {
|
|
49
54
|
const workspaceId = parseId(args.id);
|
|
50
|
-
const
|
|
55
|
+
const databaseIdArg = args["db-id"];
|
|
51
56
|
const schemasFlag = args.schemas;
|
|
52
57
|
const wait = parseWaitFlags(args);
|
|
53
58
|
let body;
|
|
54
|
-
if (
|
|
55
|
-
const databaseId = parseId(
|
|
56
|
-
if (schemasFlag === void 0 || schemasFlag === "") throw new ConfigError("--schemas is required when
|
|
59
|
+
if (databaseIdArg !== void 0 && databaseIdArg !== "") {
|
|
60
|
+
const databaseId = parseId(databaseIdArg, "db-id");
|
|
61
|
+
if (schemasFlag === void 0 || schemasFlag === "") throw new ConfigError("--schemas is required when providing a db-id");
|
|
57
62
|
const input_schemas = parseSchemasCsv(schemasFlag);
|
|
58
63
|
body = WorkspaceProvisionInput.parse({
|
|
59
64
|
database_id: databaseId,
|