@metabase/cli 0.1.0 → 0.1.1
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 +972 -57
- package/dist/add-collection--zwkmE1S.mjs +11 -0
- package/dist/add-collection-B1qe0D1U.mjs +54 -0
- package/dist/api-key-gzCbKDjL.mjs +13 -0
- package/dist/archive-CitmlD1e.mjs +39 -0
- package/dist/{archive-CsWeHXle.mjs → archive-CnhWegtR.mjs} +7 -4
- package/dist/archive-DQjBOXnx.mjs +44 -0
- package/dist/archive-Ni8-lQ1Y.mjs +44 -0
- package/dist/auth-BPjsrFxM.mjs +19 -0
- package/dist/{body-Dv9hQ0Qk.mjs → body-DRBgxS6-.mjs} +3 -2
- package/dist/{branches-BujtceGr.mjs → branches-C5Jcw8wu.mjs} +8 -6
- package/dist/cancel-Ca3r7Y6v.mjs +56 -0
- package/dist/{cancel-task-CT2xUMRg.mjs → cancel-task-C1-8vDKS.mjs} +9 -7
- package/dist/card-BGAy3eIb.mjs +20 -0
- package/dist/{card-CsXk8T6A.mjs → card-CAEZWixN.mjs} +34 -15
- package/dist/cards-CILfMPUP.mjs +37 -0
- package/dist/cli.mjs +33 -14
- package/dist/collection-B3sPXRLs.mjs +163 -0
- package/dist/collection-D8cnCB98.mjs +19 -0
- package/dist/create-3Z6rm-4O.mjs +44 -0
- package/dist/create-BsY5RrVY.mjs +44 -0
- package/dist/create-C4OCclBD.mjs +48 -0
- package/dist/create-COsD7Vzm.mjs +48 -0
- package/dist/create-CP8ou91U.mjs +125 -0
- package/dist/create-CeIi_QLj.mjs +66 -0
- package/dist/create-CqNw6PmR.mjs +50 -0
- package/dist/create-DE_5NrFy.mjs +48 -0
- package/dist/{create-B8ektf-R.mjs → create-MEhhhgMC.mjs} +8 -6
- package/dist/create-QxDmleKJ.mjs +48 -0
- package/dist/{create-branch-goZBTNnr.mjs → create-branch-CKMYaAHk.mjs} +9 -7
- package/dist/credentials-CwRKvdP2.mjs +85 -0
- package/dist/{current-task-DBjRNCFq.mjs → current-task-Dutjys16.mjs} +9 -7
- package/dist/dashboard-B4fVp392.mjs +20 -0
- package/dist/dashboard-CnMD04PQ.mjs +163 -0
- package/dist/database-BMTb0CzV.mjs +17 -0
- package/dist/database-Dvkfy3JM.mjs +51 -0
- package/dist/db-ACuuaEok.mjs +22 -0
- package/dist/{delete-8vGU35r3.mjs → delete-BMQZuVXZ.mjs} +7 -5
- package/dist/{delete-B27KLF5X.mjs → delete-BvcA4jPj.mjs} +7 -5
- package/dist/{delete-runtime-Byr60cR3.mjs → delete-runtime-BMzvfj_B.mjs} +4 -4
- package/dist/{delete-table-BNaJ_gA4.mjs → delete-table-DUPjHKk4.mjs} +7 -5
- package/dist/deprovision-Bsc1S15j.mjs +61 -0
- package/dist/{dirty-aNUuph4I.mjs → dirty-CXcdoUhY.mjs} +8 -6
- package/dist/docker-D-ieBsP7.mjs +612 -0
- package/dist/eid-pvOsEMPZ.mjs +13 -0
- package/dist/{export-QDkuuzSE.mjs → export-BjGhLEOi.mjs} +30 -23
- package/dist/field-BI2bt8e9.mjs +18 -0
- package/dist/field-DciLbuv-.mjs +276 -0
- package/dist/fields-Do8HHm_T.mjs +38 -0
- package/dist/flag-pair-DtR1AiBQ.mjs +17 -0
- package/dist/{get-BGBIzMKY.mjs → get-BGFGWkH0.mjs} +6 -4
- package/dist/get-BmE_VHdl.mjs +36 -0
- package/dist/{get-DI_IJvgk.mjs → get-C7sshmqF.mjs} +6 -4
- package/dist/get-CObKBj2J.mjs +36 -0
- package/dist/get-Cq5U_Eep.mjs +40 -0
- package/dist/get-D4GUJBiX.mjs +41 -0
- package/dist/{get-COXHplHP.mjs → get-DFrsi77F.mjs} +7 -5
- package/dist/get-DczxeETg.mjs +53 -0
- package/dist/{get-Cl8-IauC.mjs → get-DeQa3ThJ.mjs} +7 -4
- package/dist/get-DhZ_dGUb.mjs +36 -0
- package/dist/{get-i6LWOByV.mjs → get-DzCVafyO.mjs} +6 -4
- package/dist/get-YCnVqq-z.mjs +49 -0
- package/dist/get-run-CTyW29s3.mjs +36 -0
- package/dist/git-sync-BOmT8HEU.mjs +28 -0
- package/dist/{has-remote-changes-hjKoQuRy.mjs → has-remote-changes-xX8vMVsX.mjs} +8 -6
- package/dist/{import-HJsSKRYx.mjs → import-CaAUNtXz.mjs} +11 -9
- package/dist/{input-Dojr-RTw.mjs → input-ikCiip6x.mjs} +2 -1
- package/dist/is-dirty-CPu-xqkW.mjs +10 -0
- package/dist/{is-dirty-1Qy7hiHB.mjs → is-dirty-mgxEwEk4.mjs} +5 -4
- package/dist/items-Cg67tdto.mjs +77 -0
- package/dist/{key-DBxPSFwi.mjs → key-NDEARu2L.mjs} +1 -1
- package/dist/{license-MoWse3ZI.mjs → license-CwKzVMD0.mjs} +3 -3
- package/dist/list-BqdNQ1nU.mjs +47 -0
- package/dist/list-BwGdD45N.mjs +32 -0
- package/dist/list-CfOVsAZz.mjs +55 -0
- package/dist/list-CpyNn1Zn.mjs +32 -0
- package/dist/list-CwwOoGLK.mjs +40 -0
- package/dist/{list-C_PRdL5e.mjs → list-DD8CQx8l.mjs} +7 -5
- package/dist/{list-Bk6RsbJl.mjs → list-DL-RWpIE.mjs} +5 -3
- package/dist/list-DLlq3FyS.mjs +61 -0
- package/dist/list-DdQ4jmUQ.mjs +52 -0
- package/dist/{list-C4Ajrw8f.mjs → list-DshbLoqR.mjs} +6 -3
- package/dist/{list-C8tdLOH5.mjs → list-DzTMpoBs.mjs} +5 -3
- package/dist/list-JgRtCzz3.mjs +32 -0
- package/dist/{list-CWt3fqrZ.mjs → list-WzgJcwB5.mjs} +5 -3
- package/dist/{login-C9WTwNn6.mjs → login-DJnmR2wX.mjs} +14 -5
- package/dist/{logout-oLszGCOg.mjs → logout-BMe_1Zp8.mjs} +7 -6
- package/dist/logs-CQxKJ3HG.mjs +58 -0
- package/dist/{manifest-CAdjQYH8.mjs → manifest-Dv5B9Blc.mjs} +3 -7
- package/dist/measure-BEQfnLdN.mjs +67 -0
- package/dist/measure-BGyYbtqO.mjs +19 -0
- package/dist/metadata-CLIALntn.mjs +37 -0
- package/dist/metadata-T-fNUWg_.mjs +38 -0
- package/dist/{package-BGfw4ZWJ.mjs → package-DBsS7a5x.mjs} +7 -1
- package/dist/paginate-CTSfuYiF.mjs +49 -0
- package/dist/parse-id-BUOZQqjp.mjs +12 -0
- package/dist/parse-ref-DGvh4aDn.mjs +17 -0
- package/dist/parse-schemas-BnW4T1_I.mjs +12 -0
- package/dist/{poll-ILanYysl.mjs → poll-DMmmZWvi.mjs} +2 -1
- package/dist/{poll-task-DbpsiQhl.mjs → poll-task-2Ckiwp8U.mjs} +8 -7
- package/dist/predicates-DiIiS3k7.mjs +153 -0
- package/dist/preflight-CC_g6EWU.mjs +91 -0
- package/dist/{prompt-DpT8yAVy.mjs → prompt-Bf3DQ-qE.mjs} +1 -1
- package/dist/provision-BUgWJWAV.mjs +77 -0
- package/dist/ps-BUNHygf-.mjs +10 -0
- package/dist/ps-Yv0JjLVN.mjs +78 -0
- package/dist/{query-PihYi-UZ.mjs → query-CzfbuG8a.mjs} +38 -13
- package/dist/query-UIebHmbT.mjs +90 -0
- package/dist/remove-BAUbcwuF.mjs +98 -0
- package/dist/{remove-B2hVYn1v.mjs → remove-CN2PNGTR.mjs} +6 -5
- package/dist/remove-collection-C6NxEh53.mjs +38 -0
- package/dist/render-DXv-D6fU.mjs +182 -0
- package/dist/rescan-values-CcB4F9qa.mjs +43 -0
- package/dist/revision-message-flag-CWQbKhdl.mjs +11 -0
- package/dist/{run-C2so6Qp6.mjs → run-BjXZtu_6.mjs} +27 -36
- package/dist/runs-CXx7l1NY.mjs +54 -0
- package/dist/{runtime-C9CEZhcn.mjs → runtime-D7jihh81.mjs} +425 -442
- package/dist/schema-tables-BCJT2DM_.mjs +45 -0
- package/dist/schemas-DlNpbn4H.mjs +47 -0
- package/dist/{search-CopOytXY.mjs → search-Dt-6mdHZ.mjs} +6 -19
- package/dist/segment-BMrUBz94.mjs +70 -0
- package/dist/segment-C52QNnSs.mjs +19 -0
- package/dist/{set-BcF7M1GQ.mjs → set-DCESWpi3.mjs} +6 -4
- package/dist/{set-CbibegpA.mjs → set-L7cuHjVZ.mjs} +8 -6
- package/dist/{setting-U3NtBMFo.mjs → setting-DysGAuYS.mjs} +3 -3
- package/dist/setup-_ypJDPAY.mjs +71 -0
- package/dist/snippet-Dw0Sjzkr.mjs +64 -0
- package/dist/snippet-vb3G9R8a.mjs +19 -0
- package/dist/start-BokXnb0V.mjs +350 -0
- package/dist/{stash-DOBbYozC.mjs → stash-CaGX6PfX.mjs} +9 -7
- package/dist/{status-Buf1ZbNR.mjs → status-BaX9vedb.mjs} +10 -8
- package/dist/{status-CUcs8XBH.mjs → status-CyecXzN4.mjs} +4 -2
- package/dist/{status-D1F5XHae.mjs → status-RpVyPEty.mjs} +4 -2
- package/dist/stop-BRuF_Cg1.mjs +81 -0
- package/dist/summary-CpEOiOlZ.mjs +41 -0
- package/dist/sync-schema-4Cl4h8Jn.mjs +43 -0
- package/dist/table-BeMWuvzO.mjs +19 -0
- package/dist/{table-Cfk7oSvw.mjs → table-jljEqZ0R.mjs} +22 -9
- package/dist/transform-DwRc-w6y.mjs +24 -0
- package/dist/{transform-B5uRpg1G.mjs → transform-IEX4Mx3X.mjs} +56 -2
- package/dist/transform-job-BigWrctt.mjs +19 -0
- package/dist/{transform-job-C7QXWTVE.mjs → transform-job-Csr86muI.mjs} +7 -0
- package/dist/translate-DqLlXXUx.mjs +111 -0
- package/dist/tree-BT24nkLM.mjs +32 -0
- package/dist/update-BCXKQi2n.mjs +52 -0
- package/dist/{update-CL8tRbxr.mjs → update-BXbLmC2b.mjs} +9 -7
- package/dist/update-C1Frz9GR.mjs +52 -0
- package/dist/update-C5goGhNr.mjs +56 -0
- package/dist/update-CCOyB0iT.mjs +73 -0
- package/dist/update-D04NMueX.mjs +59 -0
- package/dist/update-D6WVtNV1.mjs +57 -0
- package/dist/update-DFR46LsB.mjs +56 -0
- package/dist/update-DyLItrpV.mjs +56 -0
- package/dist/update-dashcard-av0_PYeg.mjs +71 -0
- package/dist/update-mrgvQF4i.mjs +51 -0
- package/dist/url-x4wn_l3k.mjs +54 -0
- package/dist/uuid-BZHbti8B.mjs +47 -0
- package/dist/validate-DCYx6jdL.mjs +1496 -0
- package/dist/validate-query-B07oGG4K.mjs +37 -0
- package/dist/values-Be6i0Fs9.mjs +36 -0
- package/dist/{wait-Bugr9eXD.mjs → wait-BMqQD8k_.mjs} +10 -8
- package/dist/wait-CWizX_sR.mjs +19 -0
- package/dist/wait-flags-DO3ar2tf.mjs +35 -0
- package/dist/workspace-CG1xyJ86.mjs +24 -0
- package/dist/workspace-DVuqKJGG.mjs +72 -0
- package/dist/workspace-credentials-B6BL-X0d.mjs +139 -0
- package/package.json +7 -1
- package/dist/auth-BF7IjZIH.mjs +0 -18
- package/dist/card-_Ta7zdYe.mjs +0 -19
- package/dist/create-CI2Cunq5.mjs +0 -38
- package/dist/create-DdbU3TLX.mjs +0 -42
- package/dist/database-PA9Goi25.mjs +0 -33
- package/dist/db-DMghzgb6.mjs +0 -17
- package/dist/field-C8IVs6rp.mjs +0 -76
- package/dist/field-DaYo_90x.mjs +0 -13
- package/dist/get-Cwpj7lDe.mjs +0 -35
- package/dist/get-Dh_acl8q.mjs +0 -34
- package/dist/is-dirty-DpKn9HJp.mjs +0 -8
- package/dist/list-CBSBHtK-.mjs +0 -38
- package/dist/parse-id-BhmmfyCP.mjs +0 -14
- package/dist/sync-BPyGXfUk.mjs +0 -26
- package/dist/table-D7nJt7JO.mjs +0 -16
- package/dist/transform-UbyewMxY.mjs +0 -21
- package/dist/transform-job-CrYkr-Ma.mjs +0 -19
- package/dist/update-DU2oU2j-.mjs +0 -49
- /package/dist/{body-flags-BUA9XV1u.mjs → body-flags-BK7J6Daz.mjs} +0 -0
- /package/dist/{setting-26ckqHAP.mjs → setting-CTaAeMci.mjs} +0 -0
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import "./package-DBsS7a5x.mjs";
|
|
2
|
+
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
|
+
import { renderItem } from "./render-DXv-D6fU.mjs";
|
|
4
|
+
import "./predicates-DiIiS3k7.mjs";
|
|
5
|
+
import "./input-ikCiip6x.mjs";
|
|
6
|
+
import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-D7jihh81.mjs";
|
|
7
|
+
import { readBody } from "./body-DRBgxS6-.mjs";
|
|
8
|
+
import { bodyInputFlags } from "./body-flags-BK7J6Daz.mjs";
|
|
9
|
+
import { parseId } from "./parse-id-BUOZQqjp.mjs";
|
|
10
|
+
import "./field-DciLbuv-.mjs";
|
|
11
|
+
import { Card, CardUpdateInput, cardView } from "./card-CAEZWixN.mjs";
|
|
12
|
+
import "./validate-DCYx6jdL.mjs";
|
|
13
|
+
import { CARD_DATASET_QUERY_LABELS, preflightMbql5Query, skipValidateFlag } from "./validate-query-B07oGG4K.mjs";
|
|
14
|
+
|
|
15
|
+
//#region src/commands/card/update.ts
|
|
16
|
+
var update_default = defineMetabaseCommand({
|
|
17
|
+
meta: {
|
|
18
|
+
name: "update",
|
|
19
|
+
description: "Update a card by id; if dataset_query is MBQL 5 (lib/type: mbql/query) it is pre-flight-validated against the same schema as `metabase query` (see `metabase query --print-schema`)"
|
|
20
|
+
},
|
|
21
|
+
args: {
|
|
22
|
+
...outputFlags,
|
|
23
|
+
...profileFlag,
|
|
24
|
+
...connectionFlags,
|
|
25
|
+
...bodyInputFlags,
|
|
26
|
+
...skipValidateFlag,
|
|
27
|
+
id: {
|
|
28
|
+
type: "positional",
|
|
29
|
+
description: "Card id",
|
|
30
|
+
required: true
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
outputSchema: Card,
|
|
34
|
+
examples: [
|
|
35
|
+
"cat patch.json | metabase card update 1",
|
|
36
|
+
"metabase card update 1 --file patch.json",
|
|
37
|
+
"metabase card update 1 --body '{\"name\":\"renamed\"}'",
|
|
38
|
+
"metabase card update 1 --body '{\"display\":\"bar\"}'",
|
|
39
|
+
"metabase card update 1 --body '{\"archived\":true}'",
|
|
40
|
+
"metabase card update 1 --file patch.json --skip-validate"
|
|
41
|
+
],
|
|
42
|
+
async run({ args, ctx, getClient }) {
|
|
43
|
+
const id = parseId(args.id);
|
|
44
|
+
const body = await readBody({
|
|
45
|
+
flag: args.body,
|
|
46
|
+
file: args.file
|
|
47
|
+
}, CardUpdateInput);
|
|
48
|
+
preflightMbql5Query(body.dataset_query, CARD_DATASET_QUERY_LABELS, { skip: args["skip-validate"] === true });
|
|
49
|
+
const client = await getClient();
|
|
50
|
+
const updated = await client.requestParsed(Card, `/api/card/${id}`, {
|
|
51
|
+
method: "PUT",
|
|
52
|
+
body
|
|
53
|
+
});
|
|
54
|
+
renderItem(updated, cardView, ctx);
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
//#endregion
|
|
59
|
+
export { update_default as default };
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import "./package-DBsS7a5x.mjs";
|
|
2
|
+
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
|
+
import { renderItem } from "./render-DXv-D6fU.mjs";
|
|
4
|
+
import "./predicates-DiIiS3k7.mjs";
|
|
5
|
+
import "./input-ikCiip6x.mjs";
|
|
6
|
+
import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-D7jihh81.mjs";
|
|
7
|
+
import { readBody } from "./body-DRBgxS6-.mjs";
|
|
8
|
+
import { bodyInputFlags } from "./body-flags-BK7J6Daz.mjs";
|
|
9
|
+
import { parseId } from "./parse-id-BUOZQqjp.mjs";
|
|
10
|
+
import "./field-DciLbuv-.mjs";
|
|
11
|
+
import "./card-CAEZWixN.mjs";
|
|
12
|
+
import "./validate-DCYx6jdL.mjs";
|
|
13
|
+
import { DashboardDetail, DashboardUpdateInput, dashboardView } from "./dashboard-CnMD04PQ.mjs";
|
|
14
|
+
import { preflightDashcardCardReferences } from "./preflight-CC_g6EWU.mjs";
|
|
15
|
+
|
|
16
|
+
//#region src/commands/dashboard/update.ts
|
|
17
|
+
var update_default = defineMetabaseCommand({
|
|
18
|
+
meta: {
|
|
19
|
+
name: "update",
|
|
20
|
+
description: "Update a dashboard (and optionally its dashcards/tabs) by id; any positive card_id referenced from dashcards is pre-flight-validated against /api/card/:id (exists, not archived) before the PUT"
|
|
21
|
+
},
|
|
22
|
+
args: {
|
|
23
|
+
...outputFlags,
|
|
24
|
+
...profileFlag,
|
|
25
|
+
...connectionFlags,
|
|
26
|
+
...bodyInputFlags,
|
|
27
|
+
id: {
|
|
28
|
+
type: "positional",
|
|
29
|
+
description: "Dashboard id",
|
|
30
|
+
required: true
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
outputSchema: DashboardDetail,
|
|
34
|
+
examples: [
|
|
35
|
+
"cat patch.json | metabase dashboard update 1",
|
|
36
|
+
"metabase dashboard update 1 --file patch.json",
|
|
37
|
+
"metabase dashboard update 1 --body '{\"name\":\"renamed\"}'",
|
|
38
|
+
"metabase dashboard update 1 --body '{\"dashcards\":[{\"id\":-1,\"card_id\":42,\"row\":0,\"col\":0,\"size_x\":12,\"size_y\":6}]}'"
|
|
39
|
+
],
|
|
40
|
+
async run({ args, ctx, getClient }) {
|
|
41
|
+
const id = parseId(args.id);
|
|
42
|
+
const body = await readBody({
|
|
43
|
+
flag: args.body,
|
|
44
|
+
file: args.file
|
|
45
|
+
}, DashboardUpdateInput);
|
|
46
|
+
const client = await getClient();
|
|
47
|
+
await preflightDashcardCardReferences(client, body.dashcards);
|
|
48
|
+
const updated = await client.requestParsed(DashboardDetail, `/api/dashboard/${id}`, {
|
|
49
|
+
method: "PUT",
|
|
50
|
+
body
|
|
51
|
+
});
|
|
52
|
+
renderItem(updated, dashboardView, ctx);
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
//#endregion
|
|
57
|
+
export { update_default as default };
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import "./package-DBsS7a5x.mjs";
|
|
2
|
+
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
|
+
import { renderItem } from "./render-DXv-D6fU.mjs";
|
|
4
|
+
import "./predicates-DiIiS3k7.mjs";
|
|
5
|
+
import "./input-ikCiip6x.mjs";
|
|
6
|
+
import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-D7jihh81.mjs";
|
|
7
|
+
import { readBody } from "./body-DRBgxS6-.mjs";
|
|
8
|
+
import { bodyInputFlags } from "./body-flags-BK7J6Daz.mjs";
|
|
9
|
+
import { parseId } from "./parse-id-BUOZQqjp.mjs";
|
|
10
|
+
import "./validate-DCYx6jdL.mjs";
|
|
11
|
+
import { MEASURE_DEFINITION_LABELS, preflightMbql5Query, skipValidateFlag } from "./validate-query-B07oGG4K.mjs";
|
|
12
|
+
import { Measure, MeasureUpdateInput, measureView } from "./measure-BEQfnLdN.mjs";
|
|
13
|
+
|
|
14
|
+
//#region src/commands/measure/update.ts
|
|
15
|
+
var update_default = defineMetabaseCommand({
|
|
16
|
+
meta: {
|
|
17
|
+
name: "update",
|
|
18
|
+
description: "Update a measure by id; body must include revision_message (audit-logged with the change). If definition is MBQL 5 (lib/type: mbql/query) it is pre-flight-validated against the same schema as `metabase query` (see `metabase query --print-schema`)"
|
|
19
|
+
},
|
|
20
|
+
args: {
|
|
21
|
+
...outputFlags,
|
|
22
|
+
...profileFlag,
|
|
23
|
+
...connectionFlags,
|
|
24
|
+
...bodyInputFlags,
|
|
25
|
+
...skipValidateFlag,
|
|
26
|
+
id: {
|
|
27
|
+
type: "positional",
|
|
28
|
+
description: "Measure id",
|
|
29
|
+
required: true
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
outputSchema: Measure,
|
|
33
|
+
examples: [
|
|
34
|
+
"cat patch.json | metabase measure update 1",
|
|
35
|
+
"metabase measure update 1 --file patch.json",
|
|
36
|
+
"metabase measure update 1 --body '{\"name\":\"renamed\",\"revision_message\":\"rename\"}'",
|
|
37
|
+
"metabase measure update 1 --file patch.json --skip-validate"
|
|
38
|
+
],
|
|
39
|
+
async run({ args, ctx, getClient }) {
|
|
40
|
+
const id = parseId(args.id);
|
|
41
|
+
const body = await readBody({
|
|
42
|
+
flag: args.body,
|
|
43
|
+
file: args.file
|
|
44
|
+
}, MeasureUpdateInput);
|
|
45
|
+
preflightMbql5Query(body.definition, MEASURE_DEFINITION_LABELS, { skip: args["skip-validate"] === true });
|
|
46
|
+
const client = await getClient();
|
|
47
|
+
const updated = await client.requestParsed(Measure, `/api/measure/${id}`, {
|
|
48
|
+
method: "PUT",
|
|
49
|
+
body
|
|
50
|
+
});
|
|
51
|
+
renderItem(updated, measureView, ctx);
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
//#endregion
|
|
56
|
+
export { update_default as default };
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import "./package-DBsS7a5x.mjs";
|
|
2
|
+
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
|
+
import { renderItem } from "./render-DXv-D6fU.mjs";
|
|
4
|
+
import "./predicates-DiIiS3k7.mjs";
|
|
5
|
+
import "./input-ikCiip6x.mjs";
|
|
6
|
+
import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-D7jihh81.mjs";
|
|
7
|
+
import { readBody } from "./body-DRBgxS6-.mjs";
|
|
8
|
+
import { bodyInputFlags } from "./body-flags-BK7J6Daz.mjs";
|
|
9
|
+
import { parseId } from "./parse-id-BUOZQqjp.mjs";
|
|
10
|
+
import "./validate-DCYx6jdL.mjs";
|
|
11
|
+
import { SEGMENT_DEFINITION_LABELS, preflightMbql5Query, skipValidateFlag } from "./validate-query-B07oGG4K.mjs";
|
|
12
|
+
import { Segment, SegmentUpdateInput, segmentView } from "./segment-BMrUBz94.mjs";
|
|
13
|
+
|
|
14
|
+
//#region src/commands/segment/update.ts
|
|
15
|
+
var update_default = defineMetabaseCommand({
|
|
16
|
+
meta: {
|
|
17
|
+
name: "update",
|
|
18
|
+
description: "Update a segment by id; body must include revision_message (audit-logged with the change). If definition is MBQL 5 (lib/type: mbql/query) it is pre-flight-validated against the same schema as `metabase query` (see `metabase query --print-schema`)"
|
|
19
|
+
},
|
|
20
|
+
args: {
|
|
21
|
+
...outputFlags,
|
|
22
|
+
...profileFlag,
|
|
23
|
+
...connectionFlags,
|
|
24
|
+
...bodyInputFlags,
|
|
25
|
+
...skipValidateFlag,
|
|
26
|
+
id: {
|
|
27
|
+
type: "positional",
|
|
28
|
+
description: "Segment id",
|
|
29
|
+
required: true
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
outputSchema: Segment,
|
|
33
|
+
examples: [
|
|
34
|
+
"cat patch.json | metabase segment update 1",
|
|
35
|
+
"metabase segment update 1 --file patch.json",
|
|
36
|
+
"metabase segment update 1 --body '{\"name\":\"renamed\",\"revision_message\":\"rename\"}'",
|
|
37
|
+
"metabase segment update 1 --file patch.json --skip-validate"
|
|
38
|
+
],
|
|
39
|
+
async run({ args, ctx, getClient }) {
|
|
40
|
+
const id = parseId(args.id);
|
|
41
|
+
const body = await readBody({
|
|
42
|
+
flag: args.body,
|
|
43
|
+
file: args.file
|
|
44
|
+
}, SegmentUpdateInput);
|
|
45
|
+
preflightMbql5Query(body.definition, SEGMENT_DEFINITION_LABELS, { skip: args["skip-validate"] === true });
|
|
46
|
+
const client = await getClient();
|
|
47
|
+
const updated = await client.requestParsed(Segment, `/api/segment/${id}`, {
|
|
48
|
+
method: "PUT",
|
|
49
|
+
body
|
|
50
|
+
});
|
|
51
|
+
renderItem(updated, segmentView, ctx);
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
//#endregion
|
|
56
|
+
export { update_default as default };
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import "./package-DBsS7a5x.mjs";
|
|
2
|
+
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
|
+
import { renderItem } from "./render-DXv-D6fU.mjs";
|
|
4
|
+
import { ConfigError } from "./predicates-DiIiS3k7.mjs";
|
|
5
|
+
import "./input-ikCiip6x.mjs";
|
|
6
|
+
import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-D7jihh81.mjs";
|
|
7
|
+
import { readBody } from "./body-DRBgxS6-.mjs";
|
|
8
|
+
import { bodyInputFlags } from "./body-flags-BK7J6Daz.mjs";
|
|
9
|
+
import { parseId } from "./parse-id-BUOZQqjp.mjs";
|
|
10
|
+
import { DashboardDetail, Dashcard, DashcardPatchInput, dashcardView } from "./dashboard-CnMD04PQ.mjs";
|
|
11
|
+
|
|
12
|
+
//#region src/commands/dashboard/update-dashcard.ts
|
|
13
|
+
var update_dashcard_default = defineMetabaseCommand({
|
|
14
|
+
meta: {
|
|
15
|
+
name: "update-dashcard",
|
|
16
|
+
description: "Patch a single dashcard's layout or settings on a dashboard"
|
|
17
|
+
},
|
|
18
|
+
args: {
|
|
19
|
+
...outputFlags,
|
|
20
|
+
...profileFlag,
|
|
21
|
+
...connectionFlags,
|
|
22
|
+
...bodyInputFlags,
|
|
23
|
+
"dashboard-id": {
|
|
24
|
+
type: "positional",
|
|
25
|
+
description: "Dashboard id",
|
|
26
|
+
required: true
|
|
27
|
+
},
|
|
28
|
+
"dashcard-id": {
|
|
29
|
+
type: "positional",
|
|
30
|
+
description: "Dashcard id",
|
|
31
|
+
required: true
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
outputSchema: Dashcard,
|
|
35
|
+
examples: [
|
|
36
|
+
"metabase dashboard update-dashcard 1 5 --body '{\"row\":2,\"col\":0}'",
|
|
37
|
+
"metabase dashboard update-dashcard 1 5 --body '{\"size_x\":12,\"size_y\":4}'",
|
|
38
|
+
"cat patch.json | metabase dashboard update-dashcard 1 5"
|
|
39
|
+
],
|
|
40
|
+
async run({ args, ctx, getClient }) {
|
|
41
|
+
const dashboardId = parseId(args["dashboard-id"], "dashboard-id");
|
|
42
|
+
const dashcardId = parseId(args["dashcard-id"], "dashcard-id");
|
|
43
|
+
const patch = await readBody({
|
|
44
|
+
flag: args.body,
|
|
45
|
+
file: args.file
|
|
46
|
+
}, DashcardPatchInput);
|
|
47
|
+
const client = await getClient();
|
|
48
|
+
const dashboard = await client.requestParsed(DashboardDetail, `/api/dashboard/${dashboardId}`);
|
|
49
|
+
const target = dashboard.dashcards.find((dashcard) => dashcard.id === dashcardId);
|
|
50
|
+
if (target === void 0) throw new ConfigError(`dashcard ${dashcardId} not found on dashboard ${dashboardId}`);
|
|
51
|
+
const patched = Dashcard.parse({
|
|
52
|
+
...target,
|
|
53
|
+
...patch
|
|
54
|
+
});
|
|
55
|
+
const updatedDashcards = dashboard.dashcards.map((dashcard) => stripEntityId(dashcard.id === dashcardId ? patched : dashcard));
|
|
56
|
+
const result = await client.requestParsed(DashboardDetail, `/api/dashboard/${dashboardId}`, {
|
|
57
|
+
method: "PUT",
|
|
58
|
+
body: { dashcards: updatedDashcards }
|
|
59
|
+
});
|
|
60
|
+
const refreshed = result.dashcards.find((dashcard) => dashcard.id === dashcardId);
|
|
61
|
+
if (refreshed === void 0) throw new Error(`PUT /api/dashboard/${dashboardId}: dashcard ${dashcardId} missing from response`);
|
|
62
|
+
renderItem(refreshed, dashcardView, ctx);
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
function stripEntityId(dashcard) {
|
|
66
|
+
const { entity_id: _entity_id,...rest } = dashcard;
|
|
67
|
+
return rest;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
//#endregion
|
|
71
|
+
export { update_dashcard_default as default };
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import "./package-DBsS7a5x.mjs";
|
|
2
|
+
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
|
+
import { renderItem } from "./render-DXv-D6fU.mjs";
|
|
4
|
+
import "./predicates-DiIiS3k7.mjs";
|
|
5
|
+
import "./input-ikCiip6x.mjs";
|
|
6
|
+
import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-D7jihh81.mjs";
|
|
7
|
+
import { readBody } from "./body-DRBgxS6-.mjs";
|
|
8
|
+
import { bodyInputFlags } from "./body-flags-BK7J6Daz.mjs";
|
|
9
|
+
import { parseId } from "./parse-id-BUOZQqjp.mjs";
|
|
10
|
+
import { Field, FieldUpdateInput, fieldView } from "./field-DciLbuv-.mjs";
|
|
11
|
+
|
|
12
|
+
//#region src/commands/field/update.ts
|
|
13
|
+
var update_default = defineMetabaseCommand({
|
|
14
|
+
meta: {
|
|
15
|
+
name: "update",
|
|
16
|
+
description: "Update a field (description, semantic_type, FK target, visibility, etc.)"
|
|
17
|
+
},
|
|
18
|
+
args: {
|
|
19
|
+
...outputFlags,
|
|
20
|
+
...profileFlag,
|
|
21
|
+
...connectionFlags,
|
|
22
|
+
...bodyInputFlags,
|
|
23
|
+
id: {
|
|
24
|
+
type: "positional",
|
|
25
|
+
description: "Field id",
|
|
26
|
+
required: true
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
outputSchema: Field,
|
|
30
|
+
examples: [
|
|
31
|
+
"metabase field update 100 --body '{\"description\":\"customer email\"}'",
|
|
32
|
+
"metabase field update 100 --file patch.json",
|
|
33
|
+
"cat patch.json | metabase field update 100"
|
|
34
|
+
],
|
|
35
|
+
async run({ args, ctx, getClient }) {
|
|
36
|
+
const id = parseId(args.id);
|
|
37
|
+
const body = await readBody({
|
|
38
|
+
flag: args.body,
|
|
39
|
+
file: args.file
|
|
40
|
+
}, FieldUpdateInput);
|
|
41
|
+
const client = await getClient();
|
|
42
|
+
const updated = await client.requestParsed(Field, `/api/field/${id}`, {
|
|
43
|
+
method: "PUT",
|
|
44
|
+
body
|
|
45
|
+
});
|
|
46
|
+
renderItem(updated, fieldView, ctx);
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
//#endregion
|
|
51
|
+
export { update_default as default };
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import "./package-DBsS7a5x.mjs";
|
|
2
|
+
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
|
+
import { renderItem } from "./render-DXv-D6fU.mjs";
|
|
4
|
+
import "./predicates-DiIiS3k7.mjs";
|
|
5
|
+
import { defineMetabaseCommand, localUrl, outputFlags } from "./runtime-D7jihh81.mjs";
|
|
6
|
+
import { parseId } from "./parse-id-BUOZQqjp.mjs";
|
|
7
|
+
import "./poll-DMmmZWvi.mjs";
|
|
8
|
+
import { checkDockerReady, requireWorkspaceContainerLocation } from "./docker-D-ieBsP7.mjs";
|
|
9
|
+
import { z } from "zod";
|
|
10
|
+
|
|
11
|
+
//#region src/commands/workspace/url.ts
|
|
12
|
+
const UrlResult = z.object({
|
|
13
|
+
workspace_id: z.number().int().positive(),
|
|
14
|
+
url: z.string()
|
|
15
|
+
});
|
|
16
|
+
const urlResultView = {
|
|
17
|
+
compactPick: UrlResult,
|
|
18
|
+
tableColumns: [{
|
|
19
|
+
key: "workspace_id",
|
|
20
|
+
label: "ID"
|
|
21
|
+
}, {
|
|
22
|
+
key: "url",
|
|
23
|
+
label: "URL"
|
|
24
|
+
}]
|
|
25
|
+
};
|
|
26
|
+
var url_default = defineMetabaseCommand({
|
|
27
|
+
meta: {
|
|
28
|
+
name: "url",
|
|
29
|
+
description: "Print the local URL the workspace's container is bound to"
|
|
30
|
+
},
|
|
31
|
+
args: {
|
|
32
|
+
...outputFlags,
|
|
33
|
+
id: {
|
|
34
|
+
type: "positional",
|
|
35
|
+
description: "Workspace id",
|
|
36
|
+
required: true
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
outputSchema: UrlResult,
|
|
40
|
+
examples: ["metabase workspace url 1", "metabase workspace url 1 --json"],
|
|
41
|
+
async run({ args, ctx }) {
|
|
42
|
+
const workspaceId = parseId(args.id);
|
|
43
|
+
await checkDockerReady();
|
|
44
|
+
const { hostPort } = await requireWorkspaceContainerLocation(workspaceId);
|
|
45
|
+
const result = {
|
|
46
|
+
workspace_id: workspaceId,
|
|
47
|
+
url: localUrl(hostPort)
|
|
48
|
+
};
|
|
49
|
+
renderItem(result, urlResultView, ctx);
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
//#endregion
|
|
54
|
+
export { url_default as default };
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import "./package-DBsS7a5x.mjs";
|
|
2
|
+
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
|
+
import { writeJson, writeText } from "./render-DXv-D6fU.mjs";
|
|
4
|
+
import { ConfigError } from "./predicates-DiIiS3k7.mjs";
|
|
5
|
+
import { defineMetabaseCommand, outputFlags, parseInteger } from "./runtime-D7jihh81.mjs";
|
|
6
|
+
import { z } from "zod";
|
|
7
|
+
import { randomUUID } from "node:crypto";
|
|
8
|
+
|
|
9
|
+
//#region src/commands/uuid.ts
|
|
10
|
+
const MAX_COUNT = 1e4;
|
|
11
|
+
const UuidList = z.array(z.string().uuid());
|
|
12
|
+
var uuid_default = defineMetabaseCommand({
|
|
13
|
+
meta: {
|
|
14
|
+
name: "uuid",
|
|
15
|
+
description: "Mint UUID v4 strings (Node crypto.randomUUID) for MBQL `lib/uuid` slots, native template-tag ids, etc. Agents must call this to obtain UUIDs rather than authoring them by hand — hand-written placeholders fail the bundled MBQL 5 schema's `format: \"uuid\"` check."
|
|
16
|
+
},
|
|
17
|
+
args: {
|
|
18
|
+
...outputFlags,
|
|
19
|
+
count: {
|
|
20
|
+
type: "string",
|
|
21
|
+
description: `How many UUIDs to mint (default 1, max ${MAX_COUNT})`,
|
|
22
|
+
default: "1"
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
outputSchema: UuidList,
|
|
26
|
+
examples: [
|
|
27
|
+
"metabase uuid",
|
|
28
|
+
"metabase uuid --count 5",
|
|
29
|
+
"metabase uuid --count 5 --json"
|
|
30
|
+
],
|
|
31
|
+
run({ args, ctx }) {
|
|
32
|
+
const count = parseInteger(args.count, {
|
|
33
|
+
name: "--count",
|
|
34
|
+
min: 1
|
|
35
|
+
});
|
|
36
|
+
if (count > MAX_COUNT) throw new ConfigError(`invalid --count: ${count} (must be ≤ ${MAX_COUNT})`);
|
|
37
|
+
const uuids = Array.from({ length: count }, () => randomUUID());
|
|
38
|
+
if (ctx.format === "json") {
|
|
39
|
+
writeJson(uuids);
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
writeText(uuids.join("\n"));
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
//#endregion
|
|
47
|
+
export { uuid_default as default };
|