@koda-sl/baker-cli 0.161.0 → 0.162.0
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/dist/cli.js +158 -35
- package/dist/cli.js.map +1 -1
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -4265,14 +4265,40 @@ import { defineCommand as defineCommand31 } from "citty";
|
|
|
4265
4265
|
|
|
4266
4266
|
// src/commands/ads/google/accounts.ts
|
|
4267
4267
|
import { defineCommand as defineCommand19 } from "citty";
|
|
4268
|
+
|
|
4269
|
+
// src/connected-resources.ts
|
|
4270
|
+
function listed(resources) {
|
|
4271
|
+
return resources.map((resource) => resource.label ? `${resource.id} (${resource.label})` : resource.id).join("; ");
|
|
4272
|
+
}
|
|
4273
|
+
function connectedResourceHints({ plural, singular, flag, resources }) {
|
|
4274
|
+
if (resources.length === 0) {
|
|
4275
|
+
return [];
|
|
4276
|
+
}
|
|
4277
|
+
if (resources.length === 1) {
|
|
4278
|
+
return [`This company connected one ${singular}: ${listed(resources)}. Commands use it unless you pass ${flag}.`];
|
|
4279
|
+
}
|
|
4280
|
+
return [
|
|
4281
|
+
`This company connected ${resources.length} ${plural}: ${listed(resources)}. Each command works on one, so pass ${flag} \u2014 nothing is picked for you. A question about the whole business covers all ${resources.length}: answering from one and reporting it as the total is wrong.`
|
|
4282
|
+
];
|
|
4283
|
+
}
|
|
4284
|
+
|
|
4285
|
+
// src/commands/ads/google/accounts.ts
|
|
4268
4286
|
registerSchema({
|
|
4269
4287
|
command: "ads.google.accounts",
|
|
4270
|
-
description: "List
|
|
4288
|
+
description: "List the Google Ads accounts this company connected \u2014 there can be several, and every one of them is yours to work in. Returns accounts with id, name, access_type (direct or managed), level in the hierarchy, and optional manager_id for managed accounts. Run this first to find account IDs for other commands.",
|
|
4271
4289
|
args: {
|
|
4272
4290
|
"no-cache": { type: "boolean", description: "Skip cache, hit API directly", required: false },
|
|
4273
4291
|
output: { type: "string", description: "Format: json|csv|md", required: false, default: "json" }
|
|
4274
4292
|
}
|
|
4275
4293
|
});
|
|
4294
|
+
function accountHints(accounts) {
|
|
4295
|
+
return connectedResourceHints({
|
|
4296
|
+
plural: "Google Ads accounts",
|
|
4297
|
+
singular: "Google Ads account",
|
|
4298
|
+
flag: "--customer-id",
|
|
4299
|
+
resources: accounts.map((account) => ({ id: account.id, label: account.name }))
|
|
4300
|
+
});
|
|
4301
|
+
}
|
|
4276
4302
|
function handleAccountsError(err) {
|
|
4277
4303
|
if (err instanceof ApiError) {
|
|
4278
4304
|
if (err.code === "UNAUTHORIZED" || err.code === "NOT_FOUND") {
|
|
@@ -4313,7 +4339,7 @@ Examples:
|
|
|
4313
4339
|
if (useCache) {
|
|
4314
4340
|
const cached = cacheGet("accounts", "list");
|
|
4315
4341
|
if (cached) {
|
|
4316
|
-
|
|
4342
|
+
writeJsonEnvelope({ ok: true, data: cached.data, cached: true, hints: accountHints(cached.data) });
|
|
4317
4343
|
return;
|
|
4318
4344
|
}
|
|
4319
4345
|
}
|
|
@@ -4328,7 +4354,7 @@ Examples:
|
|
|
4328
4354
|
writeAdsOutput(data, format);
|
|
4329
4355
|
return;
|
|
4330
4356
|
}
|
|
4331
|
-
|
|
4357
|
+
writeJsonEnvelope({ ok: true, data, hints: accountHints(data) });
|
|
4332
4358
|
} catch (err) {
|
|
4333
4359
|
handleAccountsError(err);
|
|
4334
4360
|
}
|
|
@@ -4491,6 +4517,16 @@ var GOOGLE_ADS_LIMITS = {
|
|
|
4491
4517
|
descriptionTextMax: 90,
|
|
4492
4518
|
businessNameMax: 25
|
|
4493
4519
|
},
|
|
4520
|
+
appAd: {
|
|
4521
|
+
headlinesMin: 1,
|
|
4522
|
+
headlinesMax: 5,
|
|
4523
|
+
headlineTextMax: 30,
|
|
4524
|
+
descriptionsMin: 1,
|
|
4525
|
+
descriptionsMax: 5,
|
|
4526
|
+
descriptionTextMax: 90,
|
|
4527
|
+
imagesMax: 20,
|
|
4528
|
+
youtubeVideosMax: 20
|
|
4529
|
+
},
|
|
4494
4530
|
sharedSet: {
|
|
4495
4531
|
nameMax: 255
|
|
4496
4532
|
},
|
|
@@ -4843,15 +4879,15 @@ var callAdSchema = z13.strictObject({
|
|
|
4843
4879
|
});
|
|
4844
4880
|
var appAdSchema = z13.strictObject({
|
|
4845
4881
|
format: z13.literal("app"),
|
|
4846
|
-
headlines: z13.array(z13.object({ text: z13.string().min(1).max(
|
|
4847
|
-
descriptions: z13.array(z13.object({ text: z13.string().min(1).max(
|
|
4882
|
+
headlines: z13.array(z13.object({ text: z13.string().min(1).max(GOOGLE_ADS_LIMITS.appAd.headlineTextMax) })).min(GOOGLE_ADS_LIMITS.appAd.headlinesMin).max(GOOGLE_ADS_LIMITS.appAd.headlinesMax),
|
|
4883
|
+
descriptions: z13.array(z13.object({ text: z13.string().min(1).max(GOOGLE_ADS_LIMITS.appAd.descriptionTextMax) })).min(GOOGLE_ADS_LIMITS.appAd.descriptionsMin).max(GOOGLE_ADS_LIMITS.appAd.descriptionsMax),
|
|
4848
4884
|
// An App campaign ad carries its images on its own content (`AppAdInfo.images`), not as
|
|
4849
4885
|
// campaign-level asset links — same shape as a responsive display ad's marketing images.
|
|
4850
|
-
images: z13.array(refSchema).optional(),
|
|
4886
|
+
images: z13.array(refSchema).max(GOOGLE_ADS_LIMITS.appAd.imagesMax).optional(),
|
|
4851
4887
|
// `AppAdInfo.youtube_videos` — an App ad's videos live on its content too. Without this field
|
|
4852
4888
|
// there is no way to express "keep these videos on the ad", so a content update that only
|
|
4853
4889
|
// restated headlines silently left the ad's videos to whatever the mask happened to omit.
|
|
4854
|
-
youtubeVideos: z13.array(refSchema).optional()
|
|
4890
|
+
youtubeVideos: z13.array(refSchema).max(GOOGLE_ADS_LIMITS.appAd.youtubeVideosMax).optional()
|
|
4855
4891
|
});
|
|
4856
4892
|
var videoAdSchema = z13.strictObject({
|
|
4857
4893
|
format: z13.literal("video"),
|
|
@@ -10106,6 +10142,17 @@ Examples:
|
|
|
10106
10142
|
// src/commands/ads/linkedin/accounts.ts
|
|
10107
10143
|
import { defineCommand as defineCommand33 } from "citty";
|
|
10108
10144
|
var ACCOUNTS_TTL_MS = 60 * 60 * 1e3;
|
|
10145
|
+
function accountHints2(accounts, includeAll) {
|
|
10146
|
+
if (includeAll) {
|
|
10147
|
+
return [];
|
|
10148
|
+
}
|
|
10149
|
+
return connectedResourceHints({
|
|
10150
|
+
plural: "LinkedIn ad accounts",
|
|
10151
|
+
singular: "LinkedIn ad account",
|
|
10152
|
+
flag: "--account-id",
|
|
10153
|
+
resources: accounts.map((account) => ({ id: account.externalId, label: account.name }))
|
|
10154
|
+
});
|
|
10155
|
+
}
|
|
10109
10156
|
var accountsCommand2 = defineCommand33({
|
|
10110
10157
|
meta: {
|
|
10111
10158
|
name: "accounts",
|
|
@@ -10129,7 +10176,12 @@ Examples:
|
|
|
10129
10176
|
if (useCache) {
|
|
10130
10177
|
const cached = cacheGet("linkedin-accounts", cacheKey);
|
|
10131
10178
|
if (cached) {
|
|
10132
|
-
|
|
10179
|
+
writeJsonEnvelope({
|
|
10180
|
+
ok: true,
|
|
10181
|
+
data: cached.data,
|
|
10182
|
+
cached: true,
|
|
10183
|
+
hints: accountHints2(cached.data, includeAll)
|
|
10184
|
+
});
|
|
10133
10185
|
return;
|
|
10134
10186
|
}
|
|
10135
10187
|
}
|
|
@@ -10146,7 +10198,7 @@ Examples:
|
|
|
10146
10198
|
writeAdsOutput(data, fmt);
|
|
10147
10199
|
return;
|
|
10148
10200
|
}
|
|
10149
|
-
|
|
10201
|
+
writeJsonEnvelope({ ok: true, data, hints: accountHints2(data, includeAll) });
|
|
10150
10202
|
} catch (err) {
|
|
10151
10203
|
handleLinkedinError(err);
|
|
10152
10204
|
}
|
|
@@ -13118,6 +13170,20 @@ Examples:
|
|
|
13118
13170
|
|
|
13119
13171
|
// src/commands/ads/meta/accounts.ts
|
|
13120
13172
|
import { defineCommand as defineCommand53 } from "citty";
|
|
13173
|
+
function accountHints3(accounts, includeAll) {
|
|
13174
|
+
if (includeAll) {
|
|
13175
|
+
return [];
|
|
13176
|
+
}
|
|
13177
|
+
return connectedResourceHints({
|
|
13178
|
+
plural: "Meta ad accounts",
|
|
13179
|
+
singular: "Meta ad account",
|
|
13180
|
+
flag: "--account-id",
|
|
13181
|
+
resources: accounts.flatMap((account) => {
|
|
13182
|
+
const id = account.externalId ?? account.id;
|
|
13183
|
+
return id ? [{ id, ...account.name ? { label: account.name } : {} }] : [];
|
|
13184
|
+
})
|
|
13185
|
+
});
|
|
13186
|
+
}
|
|
13121
13187
|
var accountsCommand3 = defineCommand53({
|
|
13122
13188
|
meta: {
|
|
13123
13189
|
name: "accounts",
|
|
@@ -13141,7 +13207,12 @@ Examples:
|
|
|
13141
13207
|
if (useCache) {
|
|
13142
13208
|
const cached = cacheGet("meta-accounts", cacheKey);
|
|
13143
13209
|
if (cached) {
|
|
13144
|
-
|
|
13210
|
+
writeJsonEnvelope({
|
|
13211
|
+
ok: true,
|
|
13212
|
+
data: cached.data,
|
|
13213
|
+
cached: true,
|
|
13214
|
+
hints: accountHints3(cached.data, includeAll)
|
|
13215
|
+
});
|
|
13145
13216
|
return;
|
|
13146
13217
|
}
|
|
13147
13218
|
}
|
|
@@ -13158,7 +13229,7 @@ Examples:
|
|
|
13158
13229
|
writeAdsOutput(data, fmt);
|
|
13159
13230
|
return;
|
|
13160
13231
|
}
|
|
13161
|
-
|
|
13232
|
+
writeJsonEnvelope({ ok: true, data, hints: accountHints3(data, includeAll) });
|
|
13162
13233
|
} catch (err) {
|
|
13163
13234
|
handleMetaError(err);
|
|
13164
13235
|
}
|
|
@@ -15620,12 +15691,20 @@ import { defineCommand as defineCommand85 } from "citty";
|
|
|
15620
15691
|
import { defineCommand as defineCommand69 } from "citty";
|
|
15621
15692
|
registerSchema({
|
|
15622
15693
|
command: "ads.x.accounts",
|
|
15623
|
-
description: "List
|
|
15694
|
+
description: "List the X Ads accounts this company connected \u2014 there can be several, and every one of them is yours to work in. Returns accounts with id (base36), name, approval_status, timezone, currency. Run this first to find account IDs for other commands.",
|
|
15624
15695
|
args: {
|
|
15625
15696
|
"no-cache": { type: "boolean", description: "Skip cache, hit API directly", required: false },
|
|
15626
15697
|
output: { type: "string", description: "Format: json|csv|md", required: false, default: "json" }
|
|
15627
15698
|
}
|
|
15628
15699
|
});
|
|
15700
|
+
function accountHints4(accounts) {
|
|
15701
|
+
return connectedResourceHints({
|
|
15702
|
+
plural: "X Ads accounts",
|
|
15703
|
+
singular: "X Ads account",
|
|
15704
|
+
flag: "--account-id",
|
|
15705
|
+
resources: accounts.map((account) => ({ id: account.id, label: account.name }))
|
|
15706
|
+
});
|
|
15707
|
+
}
|
|
15629
15708
|
function handleAccountsError2(err) {
|
|
15630
15709
|
if (err instanceof ApiError) {
|
|
15631
15710
|
if (err.code === "UNAUTHORIZED" || err.code === "NOT_FOUND") {
|
|
@@ -15663,7 +15742,7 @@ Examples:
|
|
|
15663
15742
|
if (useCache) {
|
|
15664
15743
|
const cached = cacheGet("x-accounts", "list");
|
|
15665
15744
|
if (cached) {
|
|
15666
|
-
|
|
15745
|
+
writeJsonEnvelope({ ok: true, data: cached.data, cached: true, hints: accountHints4(cached.data) });
|
|
15667
15746
|
return;
|
|
15668
15747
|
}
|
|
15669
15748
|
}
|
|
@@ -15678,7 +15757,7 @@ Examples:
|
|
|
15678
15757
|
writeAdsOutput(data, format);
|
|
15679
15758
|
return;
|
|
15680
15759
|
}
|
|
15681
|
-
|
|
15760
|
+
writeJsonEnvelope({ ok: true, data, hints: accountHints4(data) });
|
|
15682
15761
|
} catch (err) {
|
|
15683
15762
|
handleAccountsError2(err);
|
|
15684
15763
|
}
|
|
@@ -24961,11 +25040,19 @@ Examples:
|
|
|
24961
25040
|
import { defineCommand as defineCommand105 } from "citty";
|
|
24962
25041
|
registerSchema({
|
|
24963
25042
|
command: "ga4.properties",
|
|
24964
|
-
description: "List
|
|
25043
|
+
description: "List the GA4 properties this company connected \u2014 there can be several, and every one of them is yours to query. Returns the property IDs the query and audit commands take. Run this first to find property IDs.",
|
|
24965
25044
|
args: {
|
|
24966
25045
|
"no-cache": { type: "boolean", description: "Skip cache, hit API directly", required: false }
|
|
24967
25046
|
}
|
|
24968
25047
|
});
|
|
25048
|
+
function propertyHints(properties) {
|
|
25049
|
+
return connectedResourceHints({
|
|
25050
|
+
plural: "GA4 properties",
|
|
25051
|
+
singular: "GA4 property",
|
|
25052
|
+
flag: "--property-id",
|
|
25053
|
+
resources: properties.map((property) => ({ id: property.externalId, label: property.name }))
|
|
25054
|
+
});
|
|
25055
|
+
}
|
|
24969
25056
|
var propertiesCommand = defineCommand105({
|
|
24970
25057
|
meta: {
|
|
24971
25058
|
name: "properties",
|
|
@@ -24983,7 +25070,7 @@ Examples:
|
|
|
24983
25070
|
if (useCache) {
|
|
24984
25071
|
const cached = cacheGet("ga4-properties", "list");
|
|
24985
25072
|
if (cached) {
|
|
24986
|
-
writeJsonEnvelope({ ok: true, data: cached.data, cached: true });
|
|
25073
|
+
writeJsonEnvelope({ ok: true, data: cached.data, cached: true, hints: propertyHints(cached.data) });
|
|
24987
25074
|
return;
|
|
24988
25075
|
}
|
|
24989
25076
|
}
|
|
@@ -24998,7 +25085,7 @@ Examples:
|
|
|
24998
25085
|
writeAdsOutput(data, format);
|
|
24999
25086
|
return;
|
|
25000
25087
|
}
|
|
25001
|
-
writeJsonEnvelope({ ok: true, data });
|
|
25088
|
+
writeJsonEnvelope({ ok: true, data, hints: propertyHints(data) });
|
|
25002
25089
|
} catch (err) {
|
|
25003
25090
|
if (err instanceof ApiError) {
|
|
25004
25091
|
if (err.code === "UNAUTHORIZED" || err.code === "NOT_FOUND") {
|
|
@@ -25588,11 +25675,19 @@ Examples:
|
|
|
25588
25675
|
import { defineCommand as defineCommand110 } from "citty";
|
|
25589
25676
|
registerSchema({
|
|
25590
25677
|
command: "gsc.sites",
|
|
25591
|
-
description: "List
|
|
25678
|
+
description: "List the Search Console sites this company connected \u2014 there can be several, and every one of them is yours to query. Returns the site URLs the query and sitemaps commands take.",
|
|
25592
25679
|
args: {
|
|
25593
25680
|
"no-cache": { type: "boolean", description: "Skip cache, hit API directly", required: false }
|
|
25594
25681
|
}
|
|
25595
25682
|
});
|
|
25683
|
+
function siteHints(sites) {
|
|
25684
|
+
return connectedResourceHints({
|
|
25685
|
+
plural: "Search Console sites",
|
|
25686
|
+
singular: "Search Console site",
|
|
25687
|
+
flag: "--site-url",
|
|
25688
|
+
resources: sites.map((site) => ({ id: site.siteUrl, label: site.permissionLevel }))
|
|
25689
|
+
});
|
|
25690
|
+
}
|
|
25596
25691
|
var sitesCommand = defineCommand110({
|
|
25597
25692
|
meta: {
|
|
25598
25693
|
name: "sites",
|
|
@@ -25610,7 +25705,7 @@ Examples:
|
|
|
25610
25705
|
if (useCache) {
|
|
25611
25706
|
const cached = cacheGet("gsc-sites", "list");
|
|
25612
25707
|
if (cached) {
|
|
25613
|
-
writeJsonEnvelope({ ok: true, data: cached.data, cached: true });
|
|
25708
|
+
writeJsonEnvelope({ ok: true, data: cached.data, cached: true, hints: siteHints(cached.data) });
|
|
25614
25709
|
return;
|
|
25615
25710
|
}
|
|
25616
25711
|
}
|
|
@@ -25625,7 +25720,7 @@ Examples:
|
|
|
25625
25720
|
writeAdsOutput(data, format);
|
|
25626
25721
|
return;
|
|
25627
25722
|
}
|
|
25628
|
-
writeJsonEnvelope({ ok: true, data });
|
|
25723
|
+
writeJsonEnvelope({ ok: true, data, hints: siteHints(data) });
|
|
25629
25724
|
} catch (err) {
|
|
25630
25725
|
if (err instanceof ApiError) {
|
|
25631
25726
|
if (err.code === "UNAUTHORIZED" || err.code === "NOT_FOUND") {
|
|
@@ -31803,7 +31898,7 @@ function handleError3(err) {
|
|
|
31803
31898
|
...err.code === "UNAUTHORIZED" ? {
|
|
31804
31899
|
fix: {
|
|
31805
31900
|
action: "request_connection",
|
|
31806
|
-
explanation: 'Tag Manager is not connected for this company yet, or no container has been picked. Do NOT send the user to Settings \u2014 call the `request_connection` tool with { platform: "google-tag-manager", reason } and they connect and pick
|
|
31901
|
+
explanation: 'Tag Manager is not connected for this company yet, or no container has been picked. Do NOT send the user to Settings \u2014 call the `request_connection` tool with { platform: "google-tag-manager", reason } and they connect and pick their containers (they can pick more than one) from inside the chat. `request_tag_input` is NOT the route: that form manages the container snippet on the site, not what runs inside the container, and it cannot pick a container. If `request_connection` is not available to you, say so plainly and point them at dashboard \u2192 Brain \u2192 Integrations \u2192 Tools \u2192 Google Tag Manager, where they also pick the container. Carry on with the rest of the task meanwhile.'
|
|
31807
31902
|
}
|
|
31808
31903
|
} : {},
|
|
31809
31904
|
retryable: RETRYABLE_CODES.has(err.code)
|
|
@@ -31948,14 +32043,18 @@ var draftCommand3 = defineCommand160({
|
|
|
31948
32043
|
import { defineCommand as defineCommand161 } from "citty";
|
|
31949
32044
|
registerSchema({
|
|
31950
32045
|
command: "tagManager.containers",
|
|
31951
|
-
description: "List the Google Tag Manager containers this company's connection can reach.
|
|
32046
|
+
description: "List the Google Tag Manager containers this company's connection can reach. Every container the company connected is flagged `connected: true` \u2014 there can be several, and Baker may read and change all of them. Start here to confirm which containers you are managing.",
|
|
31952
32047
|
args: {}
|
|
31953
32048
|
});
|
|
31954
32049
|
registerSchema({
|
|
31955
32050
|
command: "tagManager.read",
|
|
31956
|
-
description: "Read what is currently inside a Tag Manager container: tags, triggers, variables, folders and enabled built-in variables. Start here before proposing any change, so you edit what exists instead of duplicating it. Compact by default; pass --full for raw Tag Manager objects.",
|
|
32051
|
+
description: "Read what is currently inside a Tag Manager container: tags, triggers, variables, folders and enabled built-in variables. Start here before proposing any change, so you edit what exists instead of duplicating it. Pass --container when the company connected more than one. Compact by default; pass --full for raw Tag Manager objects.",
|
|
31957
32052
|
args: {
|
|
31958
|
-
container: {
|
|
32053
|
+
container: {
|
|
32054
|
+
type: "string",
|
|
32055
|
+
description: "Numeric container id (optional only when one container is connected)",
|
|
32056
|
+
required: false
|
|
32057
|
+
},
|
|
31959
32058
|
workspace: { type: "string", description: "Workspace id (defaults to the default workspace)", required: false },
|
|
31960
32059
|
entities: {
|
|
31961
32060
|
type: "string",
|
|
@@ -31965,6 +32064,23 @@ registerSchema({
|
|
|
31965
32064
|
full: { type: "boolean", description: "Include the raw Tag Manager object for each entity", required: false }
|
|
31966
32065
|
}
|
|
31967
32066
|
});
|
|
32067
|
+
function containersHints(containers) {
|
|
32068
|
+
const connected = containers.filter((container) => container.connected);
|
|
32069
|
+
if (connected.length === 0) {
|
|
32070
|
+
return [
|
|
32071
|
+
"None of the containers this company connected came back from Tag Manager. The connected Google account may have lost access to them \u2014 ask the user to reconnect or pick a container again."
|
|
32072
|
+
];
|
|
32073
|
+
}
|
|
32074
|
+
return connectedResourceHints({
|
|
32075
|
+
plural: "Tag Manager containers",
|
|
32076
|
+
singular: "Tag Manager container",
|
|
32077
|
+
flag: "--container",
|
|
32078
|
+
resources: connected.map((container) => ({
|
|
32079
|
+
id: container.containerId,
|
|
32080
|
+
label: `${container.publicId} \xB7 ${container.name}`
|
|
32081
|
+
}))
|
|
32082
|
+
});
|
|
32083
|
+
}
|
|
31968
32084
|
var containersCommand = defineCommand161({
|
|
31969
32085
|
meta: {
|
|
31970
32086
|
name: "containers",
|
|
@@ -31976,7 +32092,7 @@ Start here:
|
|
|
31976
32092
|
run: async () => {
|
|
31977
32093
|
try {
|
|
31978
32094
|
const data = await apiGet("/api/tag-manager/containers");
|
|
31979
|
-
writeJsonEnvelope({ ok: true, data });
|
|
32095
|
+
writeJsonEnvelope({ ok: true, data, hints: containersHints(data.containers) });
|
|
31980
32096
|
} catch (err) {
|
|
31981
32097
|
handleError3(err);
|
|
31982
32098
|
}
|
|
@@ -32007,7 +32123,9 @@ Examples:
|
|
|
32007
32123
|
entities,
|
|
32008
32124
|
full: args.full === true
|
|
32009
32125
|
});
|
|
32010
|
-
const hints = [
|
|
32126
|
+
const hints = [
|
|
32127
|
+
`This is container ${data.container.containerId} ${data.container.publicId} (${data.container.name}). Stage changes for it with --container ${data.container.containerId}.`
|
|
32128
|
+
];
|
|
32011
32129
|
if (data.installedContainerMismatch) {
|
|
32012
32130
|
hints.push(data.installedContainerMismatch);
|
|
32013
32131
|
}
|
|
@@ -32023,6 +32141,7 @@ Examples:
|
|
|
32023
32141
|
|
|
32024
32142
|
// src/commands/tag-manager/write-commands.ts
|
|
32025
32143
|
import { defineCommand as defineCommand162 } from "citty";
|
|
32144
|
+
var CONTAINER_ARG_DESCRIPTION = "Numeric container id (optional only when one container is connected \u2014 run `baker tag-manager containers`)";
|
|
32026
32145
|
var ENTITIES = [
|
|
32027
32146
|
{
|
|
32028
32147
|
entity: "tag",
|
|
@@ -32056,7 +32175,7 @@ for (const { entity, noun, createHint } of ENTITIES) {
|
|
|
32056
32175
|
args: {
|
|
32057
32176
|
json: { type: "string", description: `Inline JSON ${noun} definition`, required: false },
|
|
32058
32177
|
file: { type: "string", description: `Path to a JSON file with the ${noun} definition`, required: false },
|
|
32059
|
-
container: { type: "string", description:
|
|
32178
|
+
container: { type: "string", description: CONTAINER_ARG_DESCRIPTION, required: false }
|
|
32060
32179
|
}
|
|
32061
32180
|
});
|
|
32062
32181
|
registerSchema({
|
|
@@ -32064,13 +32183,16 @@ for (const { entity, noun, createHint } of ENTITIES) {
|
|
|
32064
32183
|
description: `Stage an update to an existing Tag Manager ${noun}. Pass the ${noun} id or path as the positional argument and the changed fields as JSON. Read the container first so you send the fields you mean to change.`,
|
|
32065
32184
|
args: {
|
|
32066
32185
|
json: { type: "string", description: "Inline JSON with the changed fields", required: false },
|
|
32067
|
-
file: { type: "string", description: "Path to a JSON file with the changed fields", required: false }
|
|
32186
|
+
file: { type: "string", description: "Path to a JSON file with the changed fields", required: false },
|
|
32187
|
+
container: { type: "string", description: CONTAINER_ARG_DESCRIPTION, required: false }
|
|
32068
32188
|
}
|
|
32069
32189
|
});
|
|
32070
32190
|
registerSchema({
|
|
32071
32191
|
command: `tagManager.${entity}.delete`,
|
|
32072
32192
|
description: `Stage the deletion of a Tag Manager ${noun}. Pass its id or path as the positional argument. Deleting is irreversible once the resulting version is published \u2014 confirm with the user first.`,
|
|
32073
|
-
args: {
|
|
32193
|
+
args: {
|
|
32194
|
+
container: { type: "string", description: CONTAINER_ARG_DESCRIPTION, required: false }
|
|
32195
|
+
}
|
|
32074
32196
|
});
|
|
32075
32197
|
}
|
|
32076
32198
|
function entityCommand(entity, noun, example) {
|
|
@@ -32089,7 +32211,7 @@ Examples:
|
|
|
32089
32211
|
args: {
|
|
32090
32212
|
json: { type: "string", description: "Inline JSON definition", required: false },
|
|
32091
32213
|
file: { type: "string", description: "Path to a JSON file", required: false },
|
|
32092
|
-
container: { type: "string", description:
|
|
32214
|
+
container: { type: "string", description: CONTAINER_ARG_DESCRIPTION, required: false }
|
|
32093
32215
|
},
|
|
32094
32216
|
run: async ({ args }) => {
|
|
32095
32217
|
await stageOp3({
|
|
@@ -32108,7 +32230,7 @@ Examples:
|
|
|
32108
32230
|
id: { type: "positional", description: `${noun} id or path`, required: false },
|
|
32109
32231
|
json: { type: "string", description: "Inline JSON with changed fields", required: false },
|
|
32110
32232
|
file: { type: "string", description: "Path to a JSON file", required: false },
|
|
32111
|
-
container: { type: "string", description:
|
|
32233
|
+
container: { type: "string", description: CONTAINER_ARG_DESCRIPTION, required: false }
|
|
32112
32234
|
},
|
|
32113
32235
|
run: async ({ args }) => {
|
|
32114
32236
|
await stageOp3({
|
|
@@ -32123,7 +32245,7 @@ Examples:
|
|
|
32123
32245
|
meta: { name: "delete", description: `Stage the deletion of a ${noun} (pass its id or path)` },
|
|
32124
32246
|
args: {
|
|
32125
32247
|
id: { type: "positional", description: `${noun} id or path`, required: false },
|
|
32126
|
-
container: { type: "string", description:
|
|
32248
|
+
container: { type: "string", description: CONTAINER_ARG_DESCRIPTION, required: false }
|
|
32127
32249
|
},
|
|
32128
32250
|
run: async ({ args }) => {
|
|
32129
32251
|
await stageOp3({
|
|
@@ -32145,7 +32267,8 @@ registerSchema({
|
|
|
32145
32267
|
command: "tagManager.builtin",
|
|
32146
32268
|
description: "Enable or disable Tag Manager built-in variables by type (e.g. clickUrl, pageUrl, formId). Built-in variables must be enabled before a trigger or tag can reference them as {{Click URL}}.",
|
|
32147
32269
|
args: {
|
|
32148
|
-
types: { type: "string", description: "Comma-separated built-in variable types", required: true }
|
|
32270
|
+
types: { type: "string", description: "Comma-separated built-in variable types", required: true },
|
|
32271
|
+
container: { type: "string", description: CONTAINER_ARG_DESCRIPTION, required: false }
|
|
32149
32272
|
}
|
|
32150
32273
|
});
|
|
32151
32274
|
function builtinTypes(args) {
|
|
@@ -32173,7 +32296,7 @@ Examples:
|
|
|
32173
32296
|
meta: { name: "enable", description: "Stage enabling built-in variables" },
|
|
32174
32297
|
args: {
|
|
32175
32298
|
types: { type: "string", description: "Comma-separated types", required: false },
|
|
32176
|
-
container: { type: "string", description:
|
|
32299
|
+
container: { type: "string", description: CONTAINER_ARG_DESCRIPTION, required: false }
|
|
32177
32300
|
},
|
|
32178
32301
|
run: async ({ args }) => {
|
|
32179
32302
|
await stageOp3({
|
|
@@ -32187,7 +32310,7 @@ Examples:
|
|
|
32187
32310
|
meta: { name: "disable", description: "Stage disabling built-in variables" },
|
|
32188
32311
|
args: {
|
|
32189
32312
|
types: { type: "string", description: "Comma-separated types", required: false },
|
|
32190
|
-
container: { type: "string", description:
|
|
32313
|
+
container: { type: "string", description: CONTAINER_ARG_DESCRIPTION, required: false }
|
|
32191
32314
|
},
|
|
32192
32315
|
run: async ({ args }) => {
|
|
32193
32316
|
await stageOp3({
|