@mailmodo/cli 0.0.53 → 0.0.54-beta.pr56.87
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/commands/billing/index.js +9 -6
- package/dist/commands/deploy/index.d.ts +1 -32
- package/dist/commands/deploy/index.js +49 -304
- package/dist/commands/edit/index.js +1 -0
- package/dist/commands/init/index.js +1 -0
- package/dist/commands/login/index.js +17 -2
- package/dist/commands/sdk/index.d.ts +14 -0
- package/dist/commands/sdk/index.js +74 -0
- package/dist/commands/settings/index.js +6 -0
- package/dist/lib/api-client.d.ts +5 -0
- package/dist/lib/api-client.js +45 -0
- package/dist/lib/base-command.d.ts +24 -1
- package/dist/lib/base-command.js +84 -5
- package/dist/lib/constants.d.ts +5 -0
- package/dist/lib/constants.js +5 -0
- package/dist/lib/deploy/domain-setup.d.ts +8 -0
- package/dist/lib/deploy/domain-setup.js +80 -0
- package/dist/lib/deploy/missing-templates.d.ts +4 -0
- package/dist/lib/deploy/missing-templates.js +57 -0
- package/dist/lib/deploy/output.d.ts +5 -0
- package/dist/lib/deploy/output.js +61 -0
- package/dist/lib/deploy/payload.d.ts +41 -0
- package/dist/lib/deploy/payload.js +95 -0
- package/dist/lib/deploy/sequence-status.d.ts +3 -0
- package/dist/lib/deploy/sequence-status.js +56 -0
- package/dist/lib/deploy/types.d.ts +86 -0
- package/dist/lib/deploy/types.js +1 -0
- package/dist/lib/messages.d.ts +9 -0
- package/dist/lib/messages.js +9 -0
- package/oclif.manifest.json +101 -54
- package/package.json +1 -1
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { confirm } from '@inquirer/prompts';
|
|
2
|
+
import { API_ENDPOINTS } from '../constants.js';
|
|
3
|
+
import { INFO, pauseAlready, pauseSuccess, PROMPTS, resumeAlready, resumeSuccess, } from '../messages.js';
|
|
4
|
+
function sequenceStatusPath(sequenceId) {
|
|
5
|
+
return `${API_ENDPOINTS.SEQUENCES}/${encodeURIComponent(sequenceId)}/status`;
|
|
6
|
+
}
|
|
7
|
+
async function updateSequenceStatus(ctx, opts) {
|
|
8
|
+
const response = await ctx.spinner(opts.spinnerText, opts.flags.json, () => ctx.post(sequenceStatusPath(opts.sequenceId), {
|
|
9
|
+
status: opts.status,
|
|
10
|
+
}));
|
|
11
|
+
if (!response.ok)
|
|
12
|
+
ctx.onApiError(response);
|
|
13
|
+
return response.data;
|
|
14
|
+
}
|
|
15
|
+
export async function pauseSequence(ctx, sequenceId, flags) {
|
|
16
|
+
if (!flags.yes) {
|
|
17
|
+
const confirmed = await confirm({
|
|
18
|
+
default: false,
|
|
19
|
+
message: PROMPTS.PAUSE_CONFIRM,
|
|
20
|
+
});
|
|
21
|
+
if (!confirmed) {
|
|
22
|
+
ctx.log(`\n ${INFO.PAUSE_CANCELLED}\n`);
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
const data = await updateSequenceStatus(ctx, {
|
|
27
|
+
flags,
|
|
28
|
+
sequenceId,
|
|
29
|
+
spinnerText: ' Pausing sequence...',
|
|
30
|
+
status: 'paused',
|
|
31
|
+
});
|
|
32
|
+
if (flags.json) {
|
|
33
|
+
ctx.log(JSON.stringify(data, null, 2));
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
const msg = data.alreadyInStatus
|
|
37
|
+
? pauseAlready(data.sequenceId || sequenceId)
|
|
38
|
+
: pauseSuccess(data.sequenceId || sequenceId);
|
|
39
|
+
ctx.log(`\n ${msg}\n`);
|
|
40
|
+
}
|
|
41
|
+
export async function resumeSequence(ctx, sequenceId, flags) {
|
|
42
|
+
const data = await updateSequenceStatus(ctx, {
|
|
43
|
+
flags,
|
|
44
|
+
sequenceId,
|
|
45
|
+
spinnerText: ' Resuming sequence...',
|
|
46
|
+
status: 'active',
|
|
47
|
+
});
|
|
48
|
+
if (flags.json) {
|
|
49
|
+
ctx.log(JSON.stringify(data, null, 2));
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
const msg = data.alreadyInStatus
|
|
53
|
+
? resumeAlready(data.sequenceId || sequenceId)
|
|
54
|
+
: resumeSuccess(data.sequenceId || sequenceId);
|
|
55
|
+
ctx.log(`\n ${msg}\n`);
|
|
56
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import type { ApiResponse } from '../api-client.js';
|
|
2
|
+
import type { MailmodoYaml } from '../yaml-config.js';
|
|
3
|
+
export interface EmailDiffEntry {
|
|
4
|
+
changedFields?: string[];
|
|
5
|
+
id: string;
|
|
6
|
+
subject?: string;
|
|
7
|
+
trigger?: string;
|
|
8
|
+
}
|
|
9
|
+
export interface ValidateResponse {
|
|
10
|
+
diff: null | {
|
|
11
|
+
added: EmailDiffEntry[];
|
|
12
|
+
hasChanges: boolean;
|
|
13
|
+
modified: EmailDiffEntry[];
|
|
14
|
+
removed: EmailDiffEntry[];
|
|
15
|
+
unchanged: EmailDiffEntry[];
|
|
16
|
+
};
|
|
17
|
+
error: null | string;
|
|
18
|
+
existingDeployment: boolean;
|
|
19
|
+
isValid: boolean;
|
|
20
|
+
}
|
|
21
|
+
export interface SdkSnippet {
|
|
22
|
+
examples: {
|
|
23
|
+
identify: string;
|
|
24
|
+
track: string;
|
|
25
|
+
};
|
|
26
|
+
identifyCalls: string[];
|
|
27
|
+
install: string;
|
|
28
|
+
trackCalls: string[];
|
|
29
|
+
}
|
|
30
|
+
export interface DeployResponse {
|
|
31
|
+
deployed: boolean;
|
|
32
|
+
diff: {
|
|
33
|
+
added: EmailDiffEntry[];
|
|
34
|
+
hasChanges: boolean;
|
|
35
|
+
modified: EmailDiffEntry[];
|
|
36
|
+
removed: EmailDiffEntry[];
|
|
37
|
+
unchanged: EmailDiffEntry[];
|
|
38
|
+
};
|
|
39
|
+
emailsLive: number;
|
|
40
|
+
sdkSnippet: SdkSnippet;
|
|
41
|
+
sequenceId: string;
|
|
42
|
+
}
|
|
43
|
+
export type DeployFlags = {
|
|
44
|
+
json: boolean;
|
|
45
|
+
yes: boolean;
|
|
46
|
+
};
|
|
47
|
+
export type DeployCtx = {
|
|
48
|
+
collectDomainInputs(yaml: MailmodoYaml, skip: boolean): Promise<{
|
|
49
|
+
address: string;
|
|
50
|
+
domain: string;
|
|
51
|
+
fromEmail: string;
|
|
52
|
+
fromName: string;
|
|
53
|
+
replyTo: string;
|
|
54
|
+
}>;
|
|
55
|
+
error(msg: string): never;
|
|
56
|
+
exit(code?: number): never;
|
|
57
|
+
get<T = Record<string, unknown>>(path: string, params?: Record<string, string>): Promise<ApiResponse<T>>;
|
|
58
|
+
getBillingCap(): Promise<number | undefined>;
|
|
59
|
+
log(msg?: string): void;
|
|
60
|
+
onApiError(resp: {
|
|
61
|
+
error?: string;
|
|
62
|
+
status: number;
|
|
63
|
+
}): never;
|
|
64
|
+
post<T = Record<string, unknown>>(path: string, body?: Record<string, unknown> | unknown): Promise<ApiResponse<T>>;
|
|
65
|
+
registerDomainAndSave(yaml: MailmodoYaml, inputs: {
|
|
66
|
+
address: string;
|
|
67
|
+
domain: string;
|
|
68
|
+
fromEmail: string;
|
|
69
|
+
fromName?: string;
|
|
70
|
+
replyTo?: string;
|
|
71
|
+
}, json: boolean): Promise<{
|
|
72
|
+
dnsGuideUrl?: string;
|
|
73
|
+
dnsRecords: Array<{
|
|
74
|
+
host: string;
|
|
75
|
+
type: string;
|
|
76
|
+
value: string;
|
|
77
|
+
}>;
|
|
78
|
+
}>;
|
|
79
|
+
showDnsRecords(records: Array<{
|
|
80
|
+
host: string;
|
|
81
|
+
type: string;
|
|
82
|
+
value: string;
|
|
83
|
+
}>, guideUrl: string | undefined, json: boolean): void;
|
|
84
|
+
spinner<T>(text: string, json: boolean, work: () => Promise<T>): Promise<T>;
|
|
85
|
+
syncYaml(): Promise<void>;
|
|
86
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/lib/messages.d.ts
CHANGED
|
@@ -13,6 +13,13 @@ export declare const PROMPTS: {
|
|
|
13
13
|
readonly REPLY_TO: "Reply-to address (optional, press Enter to use sender email):";
|
|
14
14
|
readonly SENDER_EMAIL: "Sender email address:";
|
|
15
15
|
};
|
|
16
|
+
export declare const MISSING_TEMPLATES: {
|
|
17
|
+
readonly ABORT_HINT: `Restore the missing files from version control, then run ${string} again.`;
|
|
18
|
+
readonly HEADER: `Some email templates are missing from ${string}:`;
|
|
19
|
+
readonly REGENERATE_NOTE: string;
|
|
20
|
+
readonly REVIEW_HINT: `Templates regenerated. Review them with ${string}, then run ${string} again.`;
|
|
21
|
+
readonly YES_ERROR: `Missing templates cannot be resolved with ${string}. Run ${string} without ${string} to regenerate via AI or restore from version control.`;
|
|
22
|
+
};
|
|
16
23
|
export declare const ERRORS: {
|
|
17
24
|
readonly DOMAIN_NOT_CONFIGURED: `No domain configured. Run ${string} to set up your sending domain.`;
|
|
18
25
|
readonly DOMAIN_NOT_REGISTERED: `Sending domain not registered. Run: ${string}`;
|
|
@@ -40,6 +47,8 @@ export declare const INFO: {
|
|
|
40
47
|
readonly FREE_TIER_CAP_BLOCKED: `Monthly cap is a paid-tier setting and is not available on the free tier. Run ${string} to add a payment method, then set a cap.`;
|
|
41
48
|
readonly PAUSE_CANCELLED: "Pause cancelled. Sequence is still live.";
|
|
42
49
|
readonly SEQUENCES_NOT_DEPLOYED: `Sequences saved but ${string}.`;
|
|
50
|
+
readonly YAML_RESTORED_FROM_SERVER: string;
|
|
51
|
+
readonly YAML_RESTORED_ON_LOGIN: ` mailmodo.yaml restored from server. Run ${string} to re-deploy your sequences.`;
|
|
43
52
|
};
|
|
44
53
|
export declare function pauseSuccess(sequenceId: string): string;
|
|
45
54
|
export declare function pauseAlready(sequenceId: string): string;
|
package/dist/lib/messages.js
CHANGED
|
@@ -14,6 +14,13 @@ export const PROMPTS = {
|
|
|
14
14
|
REPLY_TO: 'Reply-to address (optional, press Enter to use sender email):',
|
|
15
15
|
SENDER_EMAIL: 'Sender email address:',
|
|
16
16
|
};
|
|
17
|
+
export const MISSING_TEMPLATES = {
|
|
18
|
+
ABORT_HINT: `Restore the missing files from version control, then run ${chalk.cyan('mailmodo deploy')} again.`,
|
|
19
|
+
HEADER: `Some email templates are missing from ${chalk.cyan('./mailmodo/')}:`,
|
|
20
|
+
REGENERATE_NOTE: chalk.yellow(' Note: any previous manual edits to these files will be replaced with a new AI draft.'),
|
|
21
|
+
REVIEW_HINT: `Templates regenerated. Review them with ${chalk.cyan('mailmodo preview')}, then run ${chalk.cyan('mailmodo deploy')} again.`,
|
|
22
|
+
YES_ERROR: `Missing templates cannot be resolved with ${chalk.cyan('--yes')}. Run ${chalk.cyan('mailmodo deploy')} without ${chalk.cyan('--yes')} to regenerate via AI or restore from version control.`,
|
|
23
|
+
};
|
|
17
24
|
export const ERRORS = {
|
|
18
25
|
DOMAIN_NOT_CONFIGURED: `No domain configured. Run ${chalk.cyan('mailmodo domain')} to set up your sending domain.`,
|
|
19
26
|
DOMAIN_NOT_REGISTERED: `Sending domain not registered. Run: ${chalk.cyan('mailmodo domain')}`,
|
|
@@ -40,6 +47,8 @@ export const INFO = {
|
|
|
40
47
|
FREE_TIER_CAP_BLOCKED: `Monthly cap is a paid-tier setting and is not available on the free tier. Run ${chalk.cyan("'mailmodo billing --checkout'")} to add a payment method, then set a cap.`,
|
|
41
48
|
PAUSE_CANCELLED: 'Pause cancelled. Sequence is still live.',
|
|
42
49
|
SEQUENCES_NOT_DEPLOYED: `Sequences saved but ${chalk.yellow('NOT deployed')}.`,
|
|
50
|
+
YAML_RESTORED_FROM_SERVER: chalk.dim(' mailmodo.yaml not found locally — restored from server.'),
|
|
51
|
+
YAML_RESTORED_ON_LOGIN: ` mailmodo.yaml restored from server. Run ${chalk.cyan("'mailmodo deploy'")} to re-deploy your sequences.`,
|
|
43
52
|
};
|
|
44
53
|
export function pauseSuccess(sequenceId) {
|
|
45
54
|
return `Sequence ${chalk.cyan(sequenceId)} paused. Run ${chalk.cyan(`mailmodo deploy --resume ${sequenceId}`)} to resume.`;
|
package/oclif.manifest.json
CHANGED
|
@@ -137,15 +137,13 @@
|
|
|
137
137
|
"index.js"
|
|
138
138
|
]
|
|
139
139
|
},
|
|
140
|
-
"
|
|
140
|
+
"deployments": {
|
|
141
141
|
"aliases": [],
|
|
142
142
|
"args": {},
|
|
143
|
-
"description": "
|
|
143
|
+
"description": "List every deployed sequence on this account, with the IDs needed for deploy --pause / --resume",
|
|
144
144
|
"examples": [
|
|
145
|
-
"<%= config.bin %>
|
|
146
|
-
"<%= config.bin %>
|
|
147
|
-
"<%= config.bin %> deploy --pause seq_abc123",
|
|
148
|
-
"<%= config.bin %> deploy --resume seq_abc123 --json"
|
|
145
|
+
"<%= config.bin %> deployments",
|
|
146
|
+
"<%= config.bin %> deployments --json"
|
|
149
147
|
],
|
|
150
148
|
"flags": {
|
|
151
149
|
"json": {
|
|
@@ -160,31 +158,11 @@
|
|
|
160
158
|
"name": "yes",
|
|
161
159
|
"allowNo": false,
|
|
162
160
|
"type": "boolean"
|
|
163
|
-
},
|
|
164
|
-
"pause": {
|
|
165
|
-
"description": "Pause a deployed sequence by ID (stops scheduled + triggered sends)",
|
|
166
|
-
"exclusive": [
|
|
167
|
-
"resume"
|
|
168
|
-
],
|
|
169
|
-
"name": "pause",
|
|
170
|
-
"hasDynamicHelp": false,
|
|
171
|
-
"multiple": false,
|
|
172
|
-
"type": "option"
|
|
173
|
-
},
|
|
174
|
-
"resume": {
|
|
175
|
-
"description": "Resume a paused sequence by ID",
|
|
176
|
-
"exclusive": [
|
|
177
|
-
"pause"
|
|
178
|
-
],
|
|
179
|
-
"name": "resume",
|
|
180
|
-
"hasDynamicHelp": false,
|
|
181
|
-
"multiple": false,
|
|
182
|
-
"type": "option"
|
|
183
161
|
}
|
|
184
162
|
},
|
|
185
163
|
"hasDynamicHelp": false,
|
|
186
164
|
"hiddenAliases": [],
|
|
187
|
-
"id": "
|
|
165
|
+
"id": "deployments",
|
|
188
166
|
"pluginAlias": "@mailmodo/cli",
|
|
189
167
|
"pluginName": "@mailmodo/cli",
|
|
190
168
|
"pluginType": "core",
|
|
@@ -194,17 +172,19 @@
|
|
|
194
172
|
"relativePath": [
|
|
195
173
|
"dist",
|
|
196
174
|
"commands",
|
|
197
|
-
"
|
|
175
|
+
"deployments",
|
|
198
176
|
"index.js"
|
|
199
177
|
]
|
|
200
178
|
},
|
|
201
|
-
"
|
|
179
|
+
"deploy": {
|
|
202
180
|
"aliases": [],
|
|
203
181
|
"args": {},
|
|
204
|
-
"description": "
|
|
182
|
+
"description": "Deploy, pause, or resume an email sequence",
|
|
205
183
|
"examples": [
|
|
206
|
-
"<%= config.bin %>
|
|
207
|
-
"<%= config.bin %>
|
|
184
|
+
"<%= config.bin %> deploy",
|
|
185
|
+
"<%= config.bin %> deploy --yes",
|
|
186
|
+
"<%= config.bin %> deploy --pause seq_abc123",
|
|
187
|
+
"<%= config.bin %> deploy --resume seq_abc123 --json"
|
|
208
188
|
],
|
|
209
189
|
"flags": {
|
|
210
190
|
"json": {
|
|
@@ -219,11 +199,31 @@
|
|
|
219
199
|
"name": "yes",
|
|
220
200
|
"allowNo": false,
|
|
221
201
|
"type": "boolean"
|
|
202
|
+
},
|
|
203
|
+
"pause": {
|
|
204
|
+
"description": "Pause a deployed sequence by ID (stops scheduled + triggered sends)",
|
|
205
|
+
"exclusive": [
|
|
206
|
+
"resume"
|
|
207
|
+
],
|
|
208
|
+
"name": "pause",
|
|
209
|
+
"hasDynamicHelp": false,
|
|
210
|
+
"multiple": false,
|
|
211
|
+
"type": "option"
|
|
212
|
+
},
|
|
213
|
+
"resume": {
|
|
214
|
+
"description": "Resume a paused sequence by ID",
|
|
215
|
+
"exclusive": [
|
|
216
|
+
"pause"
|
|
217
|
+
],
|
|
218
|
+
"name": "resume",
|
|
219
|
+
"hasDynamicHelp": false,
|
|
220
|
+
"multiple": false,
|
|
221
|
+
"type": "option"
|
|
222
222
|
}
|
|
223
223
|
},
|
|
224
224
|
"hasDynamicHelp": false,
|
|
225
225
|
"hiddenAliases": [],
|
|
226
|
-
"id": "
|
|
226
|
+
"id": "deploy",
|
|
227
227
|
"pluginAlias": "@mailmodo/cli",
|
|
228
228
|
"pluginName": "@mailmodo/cli",
|
|
229
229
|
"pluginType": "core",
|
|
@@ -233,7 +233,7 @@
|
|
|
233
233
|
"relativePath": [
|
|
234
234
|
"dist",
|
|
235
235
|
"commands",
|
|
236
|
-
"
|
|
236
|
+
"deploy",
|
|
237
237
|
"index.js"
|
|
238
238
|
]
|
|
239
239
|
},
|
|
@@ -380,13 +380,13 @@
|
|
|
380
380
|
"index.js"
|
|
381
381
|
]
|
|
382
382
|
},
|
|
383
|
-
"
|
|
383
|
+
"login": {
|
|
384
384
|
"aliases": [],
|
|
385
385
|
"args": {},
|
|
386
|
-
"description": "
|
|
386
|
+
"description": "Authenticate with Mailmodo using your API key",
|
|
387
387
|
"examples": [
|
|
388
|
-
"<%= config.bin %>
|
|
389
|
-
"<%= config.bin %>
|
|
388
|
+
"<%= config.bin %> login",
|
|
389
|
+
"MAILMODO_API_KEY=YOUR_API_KEY <%= config.bin %> login"
|
|
390
390
|
],
|
|
391
391
|
"flags": {
|
|
392
392
|
"json": {
|
|
@@ -401,18 +401,11 @@
|
|
|
401
401
|
"name": "yes",
|
|
402
402
|
"allowNo": false,
|
|
403
403
|
"type": "boolean"
|
|
404
|
-
},
|
|
405
|
-
"url": {
|
|
406
|
-
"description": "Product URL to analyze",
|
|
407
|
-
"name": "url",
|
|
408
|
-
"hasDynamicHelp": false,
|
|
409
|
-
"multiple": false,
|
|
410
|
-
"type": "option"
|
|
411
404
|
}
|
|
412
405
|
},
|
|
413
406
|
"hasDynamicHelp": false,
|
|
414
407
|
"hiddenAliases": [],
|
|
415
|
-
"id": "
|
|
408
|
+
"id": "login",
|
|
416
409
|
"pluginAlias": "@mailmodo/cli",
|
|
417
410
|
"pluginName": "@mailmodo/cli",
|
|
418
411
|
"pluginType": "core",
|
|
@@ -422,7 +415,7 @@
|
|
|
422
415
|
"relativePath": [
|
|
423
416
|
"dist",
|
|
424
417
|
"commands",
|
|
425
|
-
"
|
|
418
|
+
"login",
|
|
426
419
|
"index.js"
|
|
427
420
|
]
|
|
428
421
|
},
|
|
@@ -592,13 +585,14 @@
|
|
|
592
585
|
"index.js"
|
|
593
586
|
]
|
|
594
587
|
},
|
|
595
|
-
"
|
|
588
|
+
"sdk": {
|
|
596
589
|
"aliases": [],
|
|
597
590
|
"args": {},
|
|
598
|
-
"description": "
|
|
591
|
+
"description": "Show the SDK track() / identify() reference for deployed sequences",
|
|
599
592
|
"examples": [
|
|
600
|
-
"<%= config.bin %>
|
|
601
|
-
"
|
|
593
|
+
"<%= config.bin %> sdk",
|
|
594
|
+
"<%= config.bin %> sdk --sequence-id a1b2c3d4",
|
|
595
|
+
"<%= config.bin %> sdk --json"
|
|
602
596
|
],
|
|
603
597
|
"flags": {
|
|
604
598
|
"json": {
|
|
@@ -613,11 +607,18 @@
|
|
|
613
607
|
"name": "yes",
|
|
614
608
|
"allowNo": false,
|
|
615
609
|
"type": "boolean"
|
|
610
|
+
},
|
|
611
|
+
"sequence-id": {
|
|
612
|
+
"description": "Limit output to a single active sequence by ID (default: all active sequences)",
|
|
613
|
+
"name": "sequence-id",
|
|
614
|
+
"hasDynamicHelp": false,
|
|
615
|
+
"multiple": false,
|
|
616
|
+
"type": "option"
|
|
616
617
|
}
|
|
617
618
|
},
|
|
618
619
|
"hasDynamicHelp": false,
|
|
619
620
|
"hiddenAliases": [],
|
|
620
|
-
"id": "
|
|
621
|
+
"id": "sdk",
|
|
621
622
|
"pluginAlias": "@mailmodo/cli",
|
|
622
623
|
"pluginName": "@mailmodo/cli",
|
|
623
624
|
"pluginType": "core",
|
|
@@ -627,7 +628,7 @@
|
|
|
627
628
|
"relativePath": [
|
|
628
629
|
"dist",
|
|
629
630
|
"commands",
|
|
630
|
-
"
|
|
631
|
+
"sdk",
|
|
631
632
|
"index.js"
|
|
632
633
|
]
|
|
633
634
|
},
|
|
@@ -716,7 +717,53 @@
|
|
|
716
717
|
"status",
|
|
717
718
|
"index.js"
|
|
718
719
|
]
|
|
720
|
+
},
|
|
721
|
+
"init": {
|
|
722
|
+
"aliases": [],
|
|
723
|
+
"args": {},
|
|
724
|
+
"description": "Analyze your product and generate email sequences",
|
|
725
|
+
"examples": [
|
|
726
|
+
"<%= config.bin %> init",
|
|
727
|
+
"<%= config.bin %> init --url https://myapp.com --yes"
|
|
728
|
+
],
|
|
729
|
+
"flags": {
|
|
730
|
+
"json": {
|
|
731
|
+
"description": "Output as JSON",
|
|
732
|
+
"name": "json",
|
|
733
|
+
"allowNo": false,
|
|
734
|
+
"type": "boolean"
|
|
735
|
+
},
|
|
736
|
+
"yes": {
|
|
737
|
+
"char": "y",
|
|
738
|
+
"description": "Skip confirmation prompts",
|
|
739
|
+
"name": "yes",
|
|
740
|
+
"allowNo": false,
|
|
741
|
+
"type": "boolean"
|
|
742
|
+
},
|
|
743
|
+
"url": {
|
|
744
|
+
"description": "Product URL to analyze",
|
|
745
|
+
"name": "url",
|
|
746
|
+
"hasDynamicHelp": false,
|
|
747
|
+
"multiple": false,
|
|
748
|
+
"type": "option"
|
|
749
|
+
}
|
|
750
|
+
},
|
|
751
|
+
"hasDynamicHelp": false,
|
|
752
|
+
"hiddenAliases": [],
|
|
753
|
+
"id": "init",
|
|
754
|
+
"pluginAlias": "@mailmodo/cli",
|
|
755
|
+
"pluginName": "@mailmodo/cli",
|
|
756
|
+
"pluginType": "core",
|
|
757
|
+
"strict": true,
|
|
758
|
+
"enableJsonFlag": false,
|
|
759
|
+
"isESM": true,
|
|
760
|
+
"relativePath": [
|
|
761
|
+
"dist",
|
|
762
|
+
"commands",
|
|
763
|
+
"init",
|
|
764
|
+
"index.js"
|
|
765
|
+
]
|
|
719
766
|
}
|
|
720
767
|
},
|
|
721
|
-
"version": "0.0.
|
|
768
|
+
"version": "0.0.54-beta.pr56.87"
|
|
722
769
|
}
|