@metabase/cli 0.1.0 → 0.1.2
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-DwxQDXzL.mjs +54 -0
- package/dist/add-collection-SL08iMub.mjs +11 -0
- package/dist/api-key-BktzvPb7.mjs +13 -0
- package/dist/{archive-CsWeHXle.mjs → archive-C1mF-9Kj.mjs} +7 -4
- package/dist/archive-CLWtbvvH.mjs +44 -0
- package/dist/archive-Cq4WKmJt.mjs +44 -0
- package/dist/archive-kYoy5LK5.mjs +39 -0
- package/dist/auth-DfYkakP3.mjs +19 -0
- package/dist/{body-Dv9hQ0Qk.mjs → body-rDrR-C1c.mjs} +3 -2
- package/dist/{branches-BujtceGr.mjs → branches-CH2UcCpX.mjs} +8 -6
- package/dist/cancel-CgLZcItQ.mjs +56 -0
- package/dist/{cancel-task-CT2xUMRg.mjs → cancel-task-DcYrFsM6.mjs} +9 -7
- package/dist/{card-CsXk8T6A.mjs → card-CQxvHeyP.mjs} +34 -15
- package/dist/card-ZCGU2JEh.mjs +20 -0
- package/dist/cards-C4NIaERo.mjs +37 -0
- package/dist/cli.mjs +33 -14
- package/dist/collection-B3sPXRLs.mjs +163 -0
- package/dist/collection-D_uFLIAS.mjs +19 -0
- package/dist/create-BUCLNqiN.mjs +48 -0
- package/dist/create-CB0Yp__0.mjs +66 -0
- package/dist/create-CNvd5T8h.mjs +48 -0
- package/dist/create-Cbh1cGj9.mjs +48 -0
- package/dist/create-CzfNOhOF.mjs +48 -0
- package/dist/create-DU0ZhnZu.mjs +44 -0
- package/dist/create-Dh0p-c2Y.mjs +44 -0
- package/dist/create-DvrVZ2hS.mjs +125 -0
- package/dist/create-QgN369N5.mjs +50 -0
- package/dist/{create-B8ektf-R.mjs → create-bqc_rmix.mjs} +8 -6
- package/dist/{create-branch-goZBTNnr.mjs → create-branch-BJFH9Hda.mjs} +9 -7
- package/dist/credentials-DTP1xuKz.mjs +85 -0
- package/dist/{current-task-DBjRNCFq.mjs → current-task-z_TiJ0kt.mjs} +9 -7
- package/dist/dashboard-CnMD04PQ.mjs +163 -0
- package/dist/dashboard-G1-dGLUR.mjs +20 -0
- package/dist/database-DQkUxTLd.mjs +17 -0
- package/dist/database-vvig8k4x.mjs +51 -0
- package/dist/db-CBaEfumR.mjs +22 -0
- package/dist/{delete-8vGU35r3.mjs → delete-CVYII8mq.mjs} +7 -5
- package/dist/{delete-B27KLF5X.mjs → delete-DeZQ1r9w.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-ZiR9-ndv.mjs} +7 -5
- package/dist/deprovision-BhD3J-Am.mjs +61 -0
- package/dist/{dirty-aNUuph4I.mjs → dirty-D9agt7Os.mjs} +8 -6
- package/dist/docker-CHpV8PRz.mjs +612 -0
- package/dist/eid-B5wawMmO.mjs +13 -0
- package/dist/{export-QDkuuzSE.mjs → export-Bfk7JAlR.mjs} +30 -23
- package/dist/field-B3gvaqpK.mjs +278 -0
- package/dist/field-BDJ1pEgr.mjs +18 -0
- package/dist/fields-7ByLsxLg.mjs +38 -0
- package/dist/flag-pair-DtR1AiBQ.mjs +17 -0
- package/dist/get-BE6Izpus.mjs +36 -0
- package/dist/get-C3CcAJGg.mjs +49 -0
- package/dist/{get-DI_IJvgk.mjs → get-CQGeF-eP.mjs} +6 -4
- package/dist/get-D2m4jhwT.mjs +53 -0
- package/dist/{get-BGBIzMKY.mjs → get-DKy3DAJX.mjs} +6 -4
- package/dist/{get-COXHplHP.mjs → get-DUSR5i99.mjs} +7 -5
- package/dist/get-DikegGzi.mjs +36 -0
- package/dist/get-StkjKuh0.mjs +40 -0
- package/dist/get-bYc7eGYe.mjs +36 -0
- package/dist/{get-Cl8-IauC.mjs → get-cuHp9-6U.mjs} +7 -4
- package/dist/{get-i6LWOByV.mjs → get-gOT_RarI.mjs} +6 -4
- package/dist/get-run-D59Yqaoh.mjs +36 -0
- package/dist/get-tISo-cmg.mjs +41 -0
- package/dist/git-sync-BiTWfLgY.mjs +28 -0
- package/dist/{has-remote-changes-hjKoQuRy.mjs → has-remote-changes-B1TciDVD.mjs} +8 -6
- package/dist/{import-HJsSKRYx.mjs → import-DnnmmJbp.mjs} +11 -9
- package/dist/{input-Dojr-RTw.mjs → input-ikCiip6x.mjs} +2 -1
- package/dist/is-dirty-DClGFOGV.mjs +10 -0
- package/dist/{is-dirty-1Qy7hiHB.mjs → is-dirty-DlfX7e39.mjs} +5 -4
- package/dist/items-DQFQSpjF.mjs +77 -0
- package/dist/{key-DBxPSFwi.mjs → key-NDEARu2L.mjs} +1 -1
- package/dist/{license-MoWse3ZI.mjs → license-DBh13sc8.mjs} +3 -3
- package/dist/list-4kYCGv01.mjs +32 -0
- package/dist/list-9AOWhxqp.mjs +61 -0
- package/dist/{list-Bk6RsbJl.mjs → list-BwjqQ6pp.mjs} +5 -3
- package/dist/{list-C_PRdL5e.mjs → list-CP5RNjO6.mjs} +7 -5
- package/dist/{list-C8tdLOH5.mjs → list-Cy0VhXQs.mjs} +5 -3
- package/dist/list-D067ZSE5.mjs +47 -0
- package/dist/list-DAZP-IM5.mjs +32 -0
- package/dist/list-DJN-OvTZ.mjs +52 -0
- package/dist/list-DQj-QJAs.mjs +40 -0
- package/dist/list-Di529OJD.mjs +55 -0
- package/dist/{list-C4Ajrw8f.mjs → list-DlKzgnqo.mjs} +6 -3
- package/dist/list-GFfR9SuT.mjs +32 -0
- package/dist/{list-CWt3fqrZ.mjs → list-iFVEdi2J.mjs} +5 -3
- package/dist/{login-C9WTwNn6.mjs → login-DxgkosGx.mjs} +30 -9
- package/dist/{logout-oLszGCOg.mjs → logout-BlVwqBog.mjs} +7 -6
- package/dist/logs-CudNEkT4.mjs +58 -0
- package/dist/{manifest-CAdjQYH8.mjs → manifest-Dv5B9Blc.mjs} +3 -7
- package/dist/measure-BEQfnLdN.mjs +67 -0
- package/dist/measure-C7SbdYQk.mjs +19 -0
- package/dist/metadata-B2Td415K.mjs +38 -0
- package/dist/metadata-BTJAFVvZ.mjs +37 -0
- package/dist/{package-BGfw4ZWJ.mjs → package-DV6Asqim.mjs} +7 -1
- package/dist/paginate-CTSfuYiF.mjs +49 -0
- package/dist/parse-id-B38zTlYs.mjs +12 -0
- package/dist/parse-ref-DGvh4aDn.mjs +17 -0
- package/dist/parse-schemas-Ds-cVE-O.mjs +12 -0
- package/dist/{poll-ILanYysl.mjs → poll-Bh6oAifO.mjs} +2 -1
- package/dist/{poll-task-DbpsiQhl.mjs → poll-task-vPwV31Fs.mjs} +8 -7
- package/dist/predicates-DiIiS3k7.mjs +153 -0
- package/dist/preflight-DxJb-hUV.mjs +91 -0
- package/dist/{prompt-DpT8yAVy.mjs → prompt-Bf3DQ-qE.mjs} +1 -1
- package/dist/provision-B-I0zuDe.mjs +77 -0
- package/dist/ps-BmYQYC7t.mjs +10 -0
- package/dist/ps-CaiOFCv2.mjs +78 -0
- package/dist/query-BtF1yWZZ.mjs +90 -0
- package/dist/{query-PihYi-UZ.mjs → query-jmfqaXRP.mjs} +38 -13
- package/dist/remove-C2iv0g03.mjs +98 -0
- package/dist/remove-collection-DhZghaZy.mjs +38 -0
- package/dist/{remove-B2hVYn1v.mjs → remove-xskleeru.mjs} +6 -5
- package/dist/render-DXv-D6fU.mjs +182 -0
- package/dist/rescan-values-DW6u90ep.mjs +43 -0
- package/dist/revision-message-flag-CWQbKhdl.mjs +11 -0
- package/dist/{run-C2so6Qp6.mjs → run-DxVzhcF3.mjs} +27 -36
- package/dist/runs-BOHk1XnM.mjs +54 -0
- package/dist/{runtime-C9CEZhcn.mjs → runtime-cwBS8wwK.mjs} +428 -442
- package/dist/schema-tables-CcFbY_jN.mjs +45 -0
- package/dist/schemas-DZmv_V62.mjs +47 -0
- package/dist/{search-CopOytXY.mjs → search-CYMuc7Fg.mjs} +6 -19
- package/dist/segment-BMrUBz94.mjs +70 -0
- package/dist/segment-Df4pfjco.mjs +19 -0
- package/dist/{set-BcF7M1GQ.mjs → set-B_rrVwU4.mjs} +6 -4
- package/dist/{set-CbibegpA.mjs → set-CbGfQ7Ye.mjs} +8 -6
- package/dist/{setting-U3NtBMFo.mjs → setting-DqZY9NXP.mjs} +3 -3
- package/dist/setup-DxmcAorA.mjs +71 -0
- package/dist/snippet-CwSHjQyn.mjs +19 -0
- package/dist/snippet-Dw0Sjzkr.mjs +64 -0
- package/dist/start-Cn0epTks.mjs +380 -0
- package/dist/{stash-DOBbYozC.mjs → stash-BFZIl9F4.mjs} +9 -7
- package/dist/{status-Buf1ZbNR.mjs → status-BjCeJNLp.mjs} +10 -8
- package/dist/{status-CUcs8XBH.mjs → status-FDIDmqvM.mjs} +4 -2
- package/dist/{status-D1F5XHae.mjs → status-UALK3OJl.mjs} +4 -2
- package/dist/stop-DUwrDWw8.mjs +81 -0
- package/dist/summary-CS4UGiFJ.mjs +41 -0
- package/dist/sync-schema-IrHdJxmX.mjs +43 -0
- package/dist/{table-Cfk7oSvw.mjs → table-B-PYcgGb.mjs} +22 -9
- package/dist/table-Cdr5bKp1.mjs +19 -0
- package/dist/transform-CeZusR_w.mjs +24 -0
- package/dist/{transform-B5uRpg1G.mjs → transform-IEX4Mx3X.mjs} +56 -2
- package/dist/transform-job-BOn9-CGa.mjs +19 -0
- package/dist/{transform-job-C7QXWTVE.mjs → transform-job-Csr86muI.mjs} +7 -0
- package/dist/translate-B__zbDKm.mjs +111 -0
- package/dist/tree-Mh0uQ_Wy.mjs +32 -0
- package/dist/update-1Di9hbPo.mjs +56 -0
- package/dist/update-B5_pp6Jj.mjs +56 -0
- package/dist/update-B9DBMo30.mjs +52 -0
- package/dist/update-BfBsM_y1.mjs +56 -0
- package/dist/update-Bw0WZix_.mjs +73 -0
- package/dist/update-Cp1789qq.mjs +52 -0
- package/dist/update-D2VI_5cy.mjs +57 -0
- package/dist/update-D8GwQTcL.mjs +59 -0
- package/dist/{update-CL8tRbxr.mjs → update-Masp5WeT.mjs} +9 -7
- package/dist/update-dashcard-CNiQw1MD.mjs +71 -0
- package/dist/update-j9vgemKR.mjs +51 -0
- package/dist/url-GFM76VIK.mjs +54 -0
- package/dist/uuid-Uif0lNk8.mjs +47 -0
- package/dist/validate-DCYx6jdL.mjs +1496 -0
- package/dist/validate-query-B07oGG4K.mjs +37 -0
- package/dist/values-DrwNHUAI.mjs +36 -0
- package/dist/{wait-Bugr9eXD.mjs → wait-BoKk8CJy.mjs} +10 -8
- package/dist/wait-DO7tS7NI.mjs +19 -0
- package/dist/wait-flags-CjX2sEGm.mjs +35 -0
- package/dist/workspace-CyEX40D-.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,54 @@
|
|
|
1
|
+
import { renderItem } from "./render-DXv-D6fU.mjs";
|
|
2
|
+
import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-cwBS8wwK.mjs";
|
|
3
|
+
import { parseId } from "./parse-id-B38zTlYs.mjs";
|
|
4
|
+
import { REMOTE_SYNC_PATHS } from "./poll-task-vPwV31Fs.mjs";
|
|
5
|
+
import { z } from "zod";
|
|
6
|
+
|
|
7
|
+
//#region src/commands/git-sync/add-collection.ts
|
|
8
|
+
const SyncSettingsUpdateResult = z.object({
|
|
9
|
+
success: z.boolean(),
|
|
10
|
+
task_id: z.number().int().positive().optional()
|
|
11
|
+
});
|
|
12
|
+
const syncSettingsUpdateView = {
|
|
13
|
+
compactPick: SyncSettingsUpdateResult,
|
|
14
|
+
tableColumns: [{
|
|
15
|
+
key: "success",
|
|
16
|
+
label: "Success"
|
|
17
|
+
}, {
|
|
18
|
+
key: "task_id",
|
|
19
|
+
label: "Task ID"
|
|
20
|
+
}]
|
|
21
|
+
};
|
|
22
|
+
async function setCollectionRemoteSynced(client, collectionId, synced) {
|
|
23
|
+
return await client.requestParsed(SyncSettingsUpdateResult, REMOTE_SYNC_PATHS.settings, {
|
|
24
|
+
method: "PUT",
|
|
25
|
+
body: { collections: { [collectionId]: synced } }
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
var add_collection_default = defineMetabaseCommand({
|
|
29
|
+
meta: {
|
|
30
|
+
name: "add-collection",
|
|
31
|
+
description: "Mark a collection as git-synced; cascades to descendants by location prefix"
|
|
32
|
+
},
|
|
33
|
+
args: {
|
|
34
|
+
...outputFlags,
|
|
35
|
+
...profileFlag,
|
|
36
|
+
...connectionFlags,
|
|
37
|
+
id: {
|
|
38
|
+
type: "positional",
|
|
39
|
+
description: "Collection id (positive integer)",
|
|
40
|
+
required: true
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
outputSchema: SyncSettingsUpdateResult,
|
|
44
|
+
examples: ["metabase git-sync add-collection 12", "metabase git-sync add-collection 12 --json --profile prod"],
|
|
45
|
+
async run({ args, ctx, getClient }) {
|
|
46
|
+
const collectionId = parseId(args.id, "id");
|
|
47
|
+
const client = await getClient();
|
|
48
|
+
const result = await setCollectionRemoteSynced(client, collectionId, true);
|
|
49
|
+
renderItem(result, syncSettingsUpdateView, ctx);
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
//#endregion
|
|
54
|
+
export { SyncSettingsUpdateResult, add_collection_default, setCollectionRemoteSynced, syncSettingsUpdateView };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import "./package-DV6Asqim.mjs";
|
|
2
|
+
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
|
+
import "./render-DXv-D6fU.mjs";
|
|
4
|
+
import "./predicates-DiIiS3k7.mjs";
|
|
5
|
+
import "./runtime-cwBS8wwK.mjs";
|
|
6
|
+
import "./parse-id-B38zTlYs.mjs";
|
|
7
|
+
import "./poll-task-vPwV31Fs.mjs";
|
|
8
|
+
import "./poll-Bh6oAifO.mjs";
|
|
9
|
+
import { SyncSettingsUpdateResult, add_collection_default, setCollectionRemoteSynced, syncSettingsUpdateView } from "./add-collection-DwxQDXzL.mjs";
|
|
10
|
+
|
|
11
|
+
export { add_collection_default as default };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { defineCommand } from "citty";
|
|
2
|
+
|
|
3
|
+
//#region src/commands/api-key/index.ts
|
|
4
|
+
var api_key_default = defineCommand({
|
|
5
|
+
meta: {
|
|
6
|
+
name: "api-key",
|
|
7
|
+
description: "Manage Metabase API keys"
|
|
8
|
+
},
|
|
9
|
+
subCommands: { create: () => import("./create-DvrVZ2hS.mjs").then((mod) => mod.default) }
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
//#endregion
|
|
13
|
+
export { api_key_default as default };
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
import "./package-
|
|
1
|
+
import "./package-DV6Asqim.mjs";
|
|
2
2
|
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
5
|
-
import {
|
|
3
|
+
import { renderItem } from "./render-DXv-D6fU.mjs";
|
|
4
|
+
import "./predicates-DiIiS3k7.mjs";
|
|
5
|
+
import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-cwBS8wwK.mjs";
|
|
6
|
+
import { parseId } from "./parse-id-B38zTlYs.mjs";
|
|
7
|
+
import "./field-B3gvaqpK.mjs";
|
|
8
|
+
import { Card, cardView } from "./card-CQxvHeyP.mjs";
|
|
6
9
|
|
|
7
10
|
//#region src/commands/card/archive.ts
|
|
8
11
|
var archive_default = defineMetabaseCommand({
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import "./package-DV6Asqim.mjs";
|
|
2
|
+
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
|
+
import { renderItem } from "./render-DXv-D6fU.mjs";
|
|
4
|
+
import "./predicates-DiIiS3k7.mjs";
|
|
5
|
+
import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-cwBS8wwK.mjs";
|
|
6
|
+
import { parseId } from "./parse-id-B38zTlYs.mjs";
|
|
7
|
+
import { revisionMessageFlag } from "./revision-message-flag-CWQbKhdl.mjs";
|
|
8
|
+
import { Segment, segmentView } from "./segment-BMrUBz94.mjs";
|
|
9
|
+
|
|
10
|
+
//#region src/commands/segment/archive.ts
|
|
11
|
+
var archive_default = defineMetabaseCommand({
|
|
12
|
+
meta: {
|
|
13
|
+
name: "archive",
|
|
14
|
+
description: "Archive (soft-delete) a segment by id"
|
|
15
|
+
},
|
|
16
|
+
args: {
|
|
17
|
+
...outputFlags,
|
|
18
|
+
...profileFlag,
|
|
19
|
+
...connectionFlags,
|
|
20
|
+
...revisionMessageFlag,
|
|
21
|
+
id: {
|
|
22
|
+
type: "positional",
|
|
23
|
+
description: "Segment id",
|
|
24
|
+
required: true
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
outputSchema: Segment,
|
|
28
|
+
examples: ["metabase segment archive 1", "metabase segment archive 1 --revision-message \"deprecated\""],
|
|
29
|
+
async run({ args, ctx, getClient }) {
|
|
30
|
+
const id = parseId(args.id);
|
|
31
|
+
const client = await getClient();
|
|
32
|
+
const updated = await client.requestParsed(Segment, `/api/segment/${id}`, {
|
|
33
|
+
method: "PUT",
|
|
34
|
+
body: {
|
|
35
|
+
archived: true,
|
|
36
|
+
revision_message: args.revisionMessage
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
renderItem(updated, segmentView, ctx);
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
//#endregion
|
|
44
|
+
export { archive_default as default };
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import "./package-DV6Asqim.mjs";
|
|
2
|
+
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
|
+
import { renderItem } from "./render-DXv-D6fU.mjs";
|
|
4
|
+
import "./predicates-DiIiS3k7.mjs";
|
|
5
|
+
import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-cwBS8wwK.mjs";
|
|
6
|
+
import { parseId } from "./parse-id-B38zTlYs.mjs";
|
|
7
|
+
import { Measure, measureView } from "./measure-BEQfnLdN.mjs";
|
|
8
|
+
import { revisionMessageFlag } from "./revision-message-flag-CWQbKhdl.mjs";
|
|
9
|
+
|
|
10
|
+
//#region src/commands/measure/archive.ts
|
|
11
|
+
var archive_default = defineMetabaseCommand({
|
|
12
|
+
meta: {
|
|
13
|
+
name: "archive",
|
|
14
|
+
description: "Archive (soft-delete) a measure by id"
|
|
15
|
+
},
|
|
16
|
+
args: {
|
|
17
|
+
...outputFlags,
|
|
18
|
+
...profileFlag,
|
|
19
|
+
...connectionFlags,
|
|
20
|
+
...revisionMessageFlag,
|
|
21
|
+
id: {
|
|
22
|
+
type: "positional",
|
|
23
|
+
description: "Measure id",
|
|
24
|
+
required: true
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
outputSchema: Measure,
|
|
28
|
+
examples: ["metabase measure archive 1", "metabase measure archive 1 --revision-message \"deprecated\""],
|
|
29
|
+
async run({ args, ctx, getClient }) {
|
|
30
|
+
const id = parseId(args.id);
|
|
31
|
+
const client = await getClient();
|
|
32
|
+
const updated = await client.requestParsed(Measure, `/api/measure/${id}`, {
|
|
33
|
+
method: "PUT",
|
|
34
|
+
body: {
|
|
35
|
+
archived: true,
|
|
36
|
+
revision_message: args.revisionMessage
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
renderItem(updated, measureView, ctx);
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
//#endregion
|
|
44
|
+
export { archive_default as default };
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import "./package-DV6Asqim.mjs";
|
|
2
|
+
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
|
+
import { renderItem } from "./render-DXv-D6fU.mjs";
|
|
4
|
+
import "./predicates-DiIiS3k7.mjs";
|
|
5
|
+
import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-cwBS8wwK.mjs";
|
|
6
|
+
import { parseId } from "./parse-id-B38zTlYs.mjs";
|
|
7
|
+
import { Snippet, snippetView } from "./snippet-Dw0Sjzkr.mjs";
|
|
8
|
+
|
|
9
|
+
//#region src/commands/snippet/archive.ts
|
|
10
|
+
var archive_default = defineMetabaseCommand({
|
|
11
|
+
meta: {
|
|
12
|
+
name: "archive",
|
|
13
|
+
description: "Archive (soft-delete) a native query snippet by id"
|
|
14
|
+
},
|
|
15
|
+
args: {
|
|
16
|
+
...outputFlags,
|
|
17
|
+
...profileFlag,
|
|
18
|
+
...connectionFlags,
|
|
19
|
+
id: {
|
|
20
|
+
type: "positional",
|
|
21
|
+
description: "Snippet id",
|
|
22
|
+
required: true
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
outputSchema: Snippet,
|
|
26
|
+
examples: ["metabase snippet archive 1", "metabase snippet archive 1 --json"],
|
|
27
|
+
async run({ args, ctx, getClient }) {
|
|
28
|
+
const id = parseId(args.id);
|
|
29
|
+
const client = await getClient();
|
|
30
|
+
const updated = await client.requestParsed(Snippet, `/api/native-query-snippet/${id}`, {
|
|
31
|
+
method: "PUT",
|
|
32
|
+
body: { archived: true }
|
|
33
|
+
});
|
|
34
|
+
renderItem(updated, snippetView, ctx);
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
//#endregion
|
|
39
|
+
export { archive_default as default };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { defineCommand } from "citty";
|
|
2
|
+
|
|
3
|
+
//#region src/commands/auth/index.ts
|
|
4
|
+
var auth_default = defineCommand({
|
|
5
|
+
meta: {
|
|
6
|
+
name: "auth",
|
|
7
|
+
description: "Authenticate against a Metabase instance"
|
|
8
|
+
},
|
|
9
|
+
default: "login",
|
|
10
|
+
subCommands: {
|
|
11
|
+
login: () => import("./login-DxgkosGx.mjs").then((m) => m.default),
|
|
12
|
+
status: () => import("./status-FDIDmqvM.mjs").then((m) => m.default),
|
|
13
|
+
list: () => import("./list-Di529OJD.mjs").then((m) => m.default),
|
|
14
|
+
logout: () => import("./logout-BlVwqBog.mjs").then((m) => m.default)
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
//#endregion
|
|
19
|
+
export { auth_default as default };
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { ConfigError
|
|
2
|
-
import { readInput } from "./input-
|
|
1
|
+
import { ConfigError } from "./predicates-DiIiS3k7.mjs";
|
|
2
|
+
import { readInput } from "./input-ikCiip6x.mjs";
|
|
3
|
+
import { parseJson } from "./runtime-cwBS8wwK.mjs";
|
|
3
4
|
|
|
4
5
|
//#region src/runtime/body.ts
|
|
5
6
|
async function readBody(sources, schema) {
|
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
import "./package-
|
|
1
|
+
import "./package-DV6Asqim.mjs";
|
|
2
2
|
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
5
|
-
import "./
|
|
3
|
+
import { renderList } from "./render-DXv-D6fU.mjs";
|
|
4
|
+
import "./predicates-DiIiS3k7.mjs";
|
|
5
|
+
import { connectionFlags, defineMetabaseCommand, listEnvelopeSchema, outputFlags, profileFlag, wrapList } from "./runtime-cwBS8wwK.mjs";
|
|
6
|
+
import { REMOTE_SYNC_PATHS } from "./poll-task-vPwV31Fs.mjs";
|
|
7
|
+
import "./poll-Bh6oAifO.mjs";
|
|
6
8
|
import { z } from "zod";
|
|
7
9
|
|
|
8
|
-
//#region src/commands/sync/branches.ts
|
|
10
|
+
//#region src/commands/git-sync/branches.ts
|
|
9
11
|
const SyncBranchesApiResponse = z.object({ items: z.array(z.string()) });
|
|
10
12
|
const BranchRow = z.object({ name: z.string() });
|
|
11
13
|
const branchView = {
|
|
@@ -27,7 +29,7 @@ var branches_default = defineMetabaseCommand({
|
|
|
27
29
|
...connectionFlags
|
|
28
30
|
},
|
|
29
31
|
outputSchema: SyncBranchListEnvelope,
|
|
30
|
-
examples: ["metabase sync branches", "metabase sync branches --json"],
|
|
32
|
+
examples: ["metabase git-sync branches", "metabase git-sync branches --json"],
|
|
31
33
|
async run({ ctx, getClient }) {
|
|
32
34
|
const client = await getClient();
|
|
33
35
|
const response = await client.requestParsed(SyncBranchesApiResponse, REMOTE_SYNC_PATHS.branches);
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import "./package-DV6Asqim.mjs";
|
|
2
|
+
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
|
+
import { renderItem } from "./render-DXv-D6fU.mjs";
|
|
4
|
+
import "./predicates-DiIiS3k7.mjs";
|
|
5
|
+
import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-cwBS8wwK.mjs";
|
|
6
|
+
import { parseId } from "./parse-id-B38zTlYs.mjs";
|
|
7
|
+
import { z } from "zod";
|
|
8
|
+
|
|
9
|
+
//#region src/commands/transform/cancel.ts
|
|
10
|
+
const TransformCancelResult = z.object({
|
|
11
|
+
canceled: z.boolean(),
|
|
12
|
+
id: z.number().int()
|
|
13
|
+
});
|
|
14
|
+
const transformCancelView = {
|
|
15
|
+
compactPick: TransformCancelResult,
|
|
16
|
+
tableColumns: [{
|
|
17
|
+
key: "id",
|
|
18
|
+
label: "Transform"
|
|
19
|
+
}, {
|
|
20
|
+
key: "canceled",
|
|
21
|
+
label: "Canceled"
|
|
22
|
+
}]
|
|
23
|
+
};
|
|
24
|
+
var cancel_default = defineMetabaseCommand({
|
|
25
|
+
meta: {
|
|
26
|
+
name: "cancel",
|
|
27
|
+
description: "Cancel the current run for a transform"
|
|
28
|
+
},
|
|
29
|
+
args: {
|
|
30
|
+
...outputFlags,
|
|
31
|
+
...profileFlag,
|
|
32
|
+
...connectionFlags,
|
|
33
|
+
id: {
|
|
34
|
+
type: "positional",
|
|
35
|
+
description: "Transform id",
|
|
36
|
+
required: true
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
outputSchema: TransformCancelResult,
|
|
40
|
+
examples: ["metabase transform cancel 1", "metabase transform cancel 1 --json"],
|
|
41
|
+
async run({ args, ctx, getClient }) {
|
|
42
|
+
const id = parseId(args.id);
|
|
43
|
+
const client = await getClient();
|
|
44
|
+
await client.requestRaw(`/api/transform/${id}/cancel`, {
|
|
45
|
+
method: "POST",
|
|
46
|
+
expectContentType: "binary"
|
|
47
|
+
});
|
|
48
|
+
renderItem({
|
|
49
|
+
canceled: true,
|
|
50
|
+
id
|
|
51
|
+
}, transformCancelView, ctx);
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
//#endregion
|
|
56
|
+
export { cancel_default as default };
|
|
@@ -1,14 +1,16 @@
|
|
|
1
|
-
import "./package-
|
|
1
|
+
import "./package-DV6Asqim.mjs";
|
|
2
2
|
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
5
|
-
import "./
|
|
3
|
+
import { renderItem } from "./render-DXv-D6fU.mjs";
|
|
4
|
+
import "./predicates-DiIiS3k7.mjs";
|
|
5
|
+
import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-cwBS8wwK.mjs";
|
|
6
|
+
import { REMOTE_SYNC_PATHS, SyncTask, syncTaskView } from "./poll-task-vPwV31Fs.mjs";
|
|
7
|
+
import "./poll-Bh6oAifO.mjs";
|
|
6
8
|
|
|
7
|
-
//#region src/commands/sync/cancel-task.ts
|
|
9
|
+
//#region src/commands/git-sync/cancel-task.ts
|
|
8
10
|
var cancel_task_default = defineMetabaseCommand({
|
|
9
11
|
meta: {
|
|
10
12
|
name: "cancel-task",
|
|
11
|
-
description: "Cancel the running sync task"
|
|
13
|
+
description: "Cancel the running git-sync task"
|
|
12
14
|
},
|
|
13
15
|
args: {
|
|
14
16
|
...outputFlags,
|
|
@@ -16,7 +18,7 @@ var cancel_task_default = defineMetabaseCommand({
|
|
|
16
18
|
...connectionFlags
|
|
17
19
|
},
|
|
18
20
|
outputSchema: SyncTask,
|
|
19
|
-
examples: ["metabase sync cancel-task", "metabase sync cancel-task --json"],
|
|
21
|
+
examples: ["metabase git-sync cancel-task", "metabase git-sync cancel-task --json"],
|
|
20
22
|
async run({ ctx, getClient }) {
|
|
21
23
|
const client = await getClient();
|
|
22
24
|
const task = await client.requestParsed(SyncTask, REMOTE_SYNC_PATHS.cancelTask, { method: "POST" });
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { FieldBaseType, FieldSemanticType } from "./field-B3gvaqpK.mjs";
|
|
1
2
|
import { z } from "zod";
|
|
2
3
|
|
|
3
4
|
//#region src/domain/card.ts
|
|
@@ -7,6 +8,7 @@ const CardType = z.enum([
|
|
|
7
8
|
"metric"
|
|
8
9
|
]);
|
|
9
10
|
const CardQueryType = z.enum(["native", "query"]);
|
|
11
|
+
const CardDatasetQuery = z.object({}).loose().refine((value) => "lib/type" in value || "type" in value, { message: "dataset_query must include \"lib/type\" (MBQL 5) or \"type\" (legacy MBQL/native); empty `{}` is rejected" });
|
|
10
12
|
const Card = z.object({
|
|
11
13
|
id: z.number().int(),
|
|
12
14
|
name: z.string(),
|
|
@@ -70,37 +72,54 @@ const cardView = {
|
|
|
70
72
|
const CardCreateInput = z.object({
|
|
71
73
|
name: z.string().min(1),
|
|
72
74
|
type: CardType.optional(),
|
|
73
|
-
dataset_query:
|
|
75
|
+
dataset_query: CardDatasetQuery,
|
|
74
76
|
display: z.string().min(1),
|
|
75
|
-
visualization_settings: z.unknown(),
|
|
76
|
-
description: z.string().nullable().optional(),
|
|
77
|
+
visualization_settings: z.record(z.string(), z.unknown()),
|
|
78
|
+
description: z.string().min(1).nullable().optional(),
|
|
77
79
|
collection_id: z.number().int().positive().nullable().optional(),
|
|
78
80
|
collection_position: z.number().int().positive().nullable().optional(),
|
|
79
81
|
dashboard_id: z.number().int().positive().nullable().optional(),
|
|
80
82
|
parameters: z.array(z.unknown()).optional(),
|
|
81
83
|
parameter_mappings: z.array(z.unknown()).optional()
|
|
82
84
|
}).loose();
|
|
85
|
+
const CardUpdateInput = z.object({
|
|
86
|
+
name: z.string().min(1).optional(),
|
|
87
|
+
type: CardType.optional(),
|
|
88
|
+
dataset_query: CardDatasetQuery.optional(),
|
|
89
|
+
display: z.string().min(1).optional(),
|
|
90
|
+
visualization_settings: z.record(z.string(), z.unknown()).optional(),
|
|
91
|
+
description: z.string().nullable().optional(),
|
|
92
|
+
archived: z.boolean().optional(),
|
|
93
|
+
enable_embedding: z.boolean().optional(),
|
|
94
|
+
embedding_type: z.string().optional(),
|
|
95
|
+
embedding_params: z.unknown().optional(),
|
|
96
|
+
collection_id: z.number().int().positive().nullable().optional(),
|
|
97
|
+
collection_position: z.number().int().positive().nullable().optional(),
|
|
98
|
+
collection_preview: z.boolean().optional(),
|
|
99
|
+
cache_ttl: z.number().int().positive().nullable().optional(),
|
|
100
|
+
dashboard_id: z.number().int().positive().nullable().optional(),
|
|
101
|
+
dashboard_tab_id: z.number().int().positive().nullable().optional(),
|
|
102
|
+
parameters: z.array(z.unknown()).optional(),
|
|
103
|
+
parameter_mappings: z.array(z.unknown()).optional(),
|
|
104
|
+
result_metadata: z.array(z.unknown()).nullable().optional()
|
|
105
|
+
}).loose();
|
|
83
106
|
const QueryColumn = z.object({
|
|
84
107
|
name: z.string(),
|
|
85
108
|
display_name: z.string().optional(),
|
|
86
|
-
base_type:
|
|
87
|
-
semantic_type:
|
|
109
|
+
base_type: FieldBaseType.optional(),
|
|
110
|
+
semantic_type: FieldSemanticType.nullable().optional()
|
|
88
111
|
}).loose();
|
|
89
|
-
const
|
|
112
|
+
const CardQueryData = z.object({
|
|
90
113
|
rows: z.array(z.unknown()),
|
|
91
114
|
cols: z.array(QueryColumn)
|
|
92
115
|
}).loose();
|
|
93
|
-
const
|
|
94
|
-
status: z.
|
|
95
|
-
row_count: z.number().int().nonnegative(),
|
|
96
|
-
data:
|
|
97
|
-
}).loose();
|
|
98
|
-
const CardQueryFailed = z.object({
|
|
99
|
-
status: z.literal("failed"),
|
|
116
|
+
const CardQueryResult = z.object({
|
|
117
|
+
status: z.string(),
|
|
118
|
+
row_count: z.number().int().nonnegative().optional(),
|
|
119
|
+
data: CardQueryData.optional(),
|
|
100
120
|
error: z.string().nullable().optional(),
|
|
101
121
|
error_type: z.string().nullable().optional()
|
|
102
122
|
}).loose();
|
|
103
|
-
const CardQueryResult = z.discriminatedUnion("status", [CardQueryCompleted, CardQueryFailed]);
|
|
104
123
|
const cardQueryView = {
|
|
105
124
|
compactPick: CardQueryResult,
|
|
106
125
|
tableColumns: [{
|
|
@@ -110,4 +129,4 @@ const cardQueryView = {
|
|
|
110
129
|
};
|
|
111
130
|
|
|
112
131
|
//#endregion
|
|
113
|
-
export { Card, CardCompact, CardCreateInput, CardQueryResult, cardQueryView, cardView };
|
|
132
|
+
export { Card, CardCompact, CardCreateInput, CardQueryResult, CardUpdateInput, cardQueryView, cardView };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { defineCommand } from "citty";
|
|
2
|
+
|
|
3
|
+
//#region src/commands/card/index.ts
|
|
4
|
+
var card_default = defineCommand({
|
|
5
|
+
meta: {
|
|
6
|
+
name: "card",
|
|
7
|
+
description: "Manage Metabase cards (questions, models, metrics)"
|
|
8
|
+
},
|
|
9
|
+
subCommands: {
|
|
10
|
+
list: () => import("./list-DlKzgnqo.mjs").then((mod) => mod.default),
|
|
11
|
+
get: () => import("./get-cuHp9-6U.mjs").then((mod) => mod.default),
|
|
12
|
+
query: () => import("./query-jmfqaXRP.mjs").then((mod) => mod.default),
|
|
13
|
+
create: () => import("./create-QgN369N5.mjs").then((mod) => mod.default),
|
|
14
|
+
update: () => import("./update-D8GwQTcL.mjs").then((mod) => mod.default),
|
|
15
|
+
archive: () => import("./archive-C1mF-9Kj.mjs").then((mod) => mod.default)
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
//#endregion
|
|
20
|
+
export { card_default as default };
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import "./package-DV6Asqim.mjs";
|
|
2
|
+
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
|
+
import { renderList } from "./render-DXv-D6fU.mjs";
|
|
4
|
+
import "./predicates-DiIiS3k7.mjs";
|
|
5
|
+
import { connectionFlags, defineMetabaseCommand, listEnvelopeSchema, outputFlags, profileFlag, wrapList } from "./runtime-cwBS8wwK.mjs";
|
|
6
|
+
import { parseId } from "./parse-id-B38zTlYs.mjs";
|
|
7
|
+
import { DashboardDetail, DashcardCompact, dashcardView } from "./dashboard-CnMD04PQ.mjs";
|
|
8
|
+
|
|
9
|
+
//#region src/commands/dashboard/cards.ts
|
|
10
|
+
const DashcardListEnvelope = listEnvelopeSchema(DashcardCompact);
|
|
11
|
+
var cards_default = defineMetabaseCommand({
|
|
12
|
+
meta: {
|
|
13
|
+
name: "cards",
|
|
14
|
+
description: "List dashcards on a dashboard"
|
|
15
|
+
},
|
|
16
|
+
args: {
|
|
17
|
+
...outputFlags,
|
|
18
|
+
...profileFlag,
|
|
19
|
+
...connectionFlags,
|
|
20
|
+
id: {
|
|
21
|
+
type: "positional",
|
|
22
|
+
description: "Dashboard id",
|
|
23
|
+
required: true
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
outputSchema: DashcardListEnvelope,
|
|
27
|
+
examples: ["metabase dashboard cards 1", "metabase dashboard cards 1 --json"],
|
|
28
|
+
async run({ args, ctx, getClient }) {
|
|
29
|
+
const id = parseId(args.id);
|
|
30
|
+
const client = await getClient();
|
|
31
|
+
const dashboard = await client.requestParsed(DashboardDetail, `/api/dashboard/${id}`);
|
|
32
|
+
renderList(wrapList(dashboard.dashcards), dashcardView, ctx);
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
//#endregion
|
|
37
|
+
export { cards_default as default };
|
package/dist/cli.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { package_default } from "./package-
|
|
2
|
+
import { package_default } from "./package-DV6Asqim.mjs";
|
|
3
3
|
import { getMetabaseAugment } from "./command-augment-D9pI9Vbh.mjs";
|
|
4
4
|
import { defineCommand, renderUsage, runMain } from "citty";
|
|
5
5
|
|
|
@@ -11,18 +11,29 @@ const main = defineCommand({
|
|
|
11
11
|
description: package_default.description
|
|
12
12
|
},
|
|
13
13
|
subCommands: {
|
|
14
|
-
auth: () => import("./auth-
|
|
15
|
-
license: () => import("./license-
|
|
16
|
-
db: () => import("./db-
|
|
17
|
-
table: () => import("./table-
|
|
18
|
-
field: () => import("./field-
|
|
19
|
-
card: () => import("./card-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
14
|
+
auth: () => import("./auth-DfYkakP3.mjs").then((mod) => mod.default),
|
|
15
|
+
license: () => import("./license-DBh13sc8.mjs").then((mod) => mod.default),
|
|
16
|
+
db: () => import("./db-CBaEfumR.mjs").then((mod) => mod.default),
|
|
17
|
+
table: () => import("./table-Cdr5bKp1.mjs").then((mod) => mod.default),
|
|
18
|
+
field: () => import("./field-BDJ1pEgr.mjs").then((mod) => mod.default),
|
|
19
|
+
card: () => import("./card-ZCGU2JEh.mjs").then((mod) => mod.default),
|
|
20
|
+
dashboard: () => import("./dashboard-G1-dGLUR.mjs").then((mod) => mod.default),
|
|
21
|
+
collection: () => import("./collection-D_uFLIAS.mjs").then((mod) => mod.default),
|
|
22
|
+
transform: () => import("./transform-CeZusR_w.mjs").then((mod) => mod.default),
|
|
23
|
+
"transform-job": () => import("./transform-job-BOn9-CGa.mjs").then((mod) => mod.default),
|
|
24
|
+
setting: () => import("./setting-DqZY9NXP.mjs").then((mod) => mod.default),
|
|
25
|
+
search: () => import("./search-CYMuc7Fg.mjs").then((mod) => mod.default),
|
|
26
|
+
"git-sync": () => import("./git-sync-BiTWfLgY.mjs").then((mod) => mod.default),
|
|
27
|
+
workspace: () => import("./workspace-CyEX40D-.mjs").then((mod) => mod.default),
|
|
28
|
+
setup: () => import("./setup-DxmcAorA.mjs").then((mod) => mod.default),
|
|
29
|
+
"api-key": () => import("./api-key-BktzvPb7.mjs").then((mod) => mod.default),
|
|
30
|
+
snippet: () => import("./snippet-CwSHjQyn.mjs").then((mod) => mod.default),
|
|
31
|
+
segment: () => import("./segment-Df4pfjco.mjs").then((mod) => mod.default),
|
|
32
|
+
measure: () => import("./measure-C7SbdYQk.mjs").then((mod) => mod.default),
|
|
33
|
+
eid: () => import("./eid-B5wawMmO.mjs").then((mod) => mod.default),
|
|
34
|
+
query: () => import("./query-BtF1yWZZ.mjs").then((mod) => mod.default),
|
|
35
|
+
uuid: () => import("./uuid-Uif0lNk8.mjs").then((mod) => mod.default),
|
|
36
|
+
__manifest: () => import("./manifest-Dv5B9Blc.mjs").then((mod) => mod.createManifestCommand(main))
|
|
26
37
|
}
|
|
27
38
|
});
|
|
28
39
|
var main_default = main;
|
|
@@ -37,7 +48,7 @@ async function showUsage(cmd, parent) {
|
|
|
37
48
|
const stripped = first === void 0 ? "" : first.replace(BREADCRUMB_SUFFIX, "$1");
|
|
38
49
|
const body = [stripped, ...rest].join("\n");
|
|
39
50
|
const examples = getMetabaseAugment(cmd)?.examples ?? [];
|
|
40
|
-
process.stdout.write(body + renderExamples(examples) + "\n");
|
|
51
|
+
process.stdout.write(body + renderExamples(examples) + renderSchemaHint() + "\n");
|
|
41
52
|
}
|
|
42
53
|
function renderExamples(examples) {
|
|
43
54
|
if (examples.length === 0) return "";
|
|
@@ -49,6 +60,14 @@ function renderExamples(examples) {
|
|
|
49
60
|
for (const example of examples) lines.push(` ${example}`);
|
|
50
61
|
return lines.join("\n");
|
|
51
62
|
}
|
|
63
|
+
function renderSchemaHint() {
|
|
64
|
+
return [
|
|
65
|
+
"",
|
|
66
|
+
"SCHEMA",
|
|
67
|
+
"",
|
|
68
|
+
" metabase __manifest # machine-readable command tree (flags, output, examples)"
|
|
69
|
+
].join("\n");
|
|
70
|
+
}
|
|
52
71
|
|
|
53
72
|
//#endregion
|
|
54
73
|
//#region src/cli.ts
|