@oktis-works/cms 0.6.5 → 0.7.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/dist/commands.d.ts.map +1 -1
- package/dist/commands.js +11 -0
- package/dist/commands.js.map +1 -1
- package/dist/env-schema.d.ts.map +1 -1
- package/dist/env-schema.js +4 -1
- package/dist/env-schema.js.map +1 -1
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -1
- package/dist/parser.d.ts +5 -0
- package/dist/parser.d.ts.map +1 -1
- package/dist/parser.js +8 -1
- package/dist/parser.js.map +1 -1
- package/dist/prompt.d.ts.map +1 -1
- package/dist/prompt.js +29 -9
- package/dist/prompt.js.map +1 -1
- package/dist/scaffold-docs.d.ts.map +1 -1
- package/dist/scaffold-docs.js +2 -0
- package/dist/scaffold-docs.js.map +1 -1
- package/dist/wizard-env.d.ts +24 -0
- package/dist/wizard-env.d.ts.map +1 -0
- package/dist/wizard-env.js +171 -0
- package/dist/wizard-env.js.map +1 -0
- package/dist/wizard-flows.d.ts +19 -0
- package/dist/wizard-flows.d.ts.map +1 -0
- package/dist/wizard-flows.js +165 -0
- package/dist/wizard-flows.js.map +1 -0
- package/dist/wizard-i18n.d.ts +112 -0
- package/dist/wizard-i18n.d.ts.map +1 -0
- package/dist/wizard-i18n.js +232 -0
- package/dist/wizard-i18n.js.map +1 -0
- package/dist/wizard-run.d.ts +39 -0
- package/dist/wizard-run.d.ts.map +1 -0
- package/dist/wizard-run.js +121 -0
- package/dist/wizard-run.js.map +1 -0
- package/dist/wizard-state.d.ts +30 -0
- package/dist/wizard-state.d.ts.map +1 -0
- package/dist/wizard-state.js +69 -0
- package/dist/wizard-state.js.map +1 -0
- package/dist/wizard.d.ts +16 -0
- package/dist/wizard.d.ts.map +1 -0
- package/dist/wizard.js +304 -0
- package/dist/wizard.js.map +1 -0
- package/package.json +1 -1
package/dist/scaffold-docs.js
CHANGED
|
@@ -283,6 +283,7 @@ os 6 passos acima na mão. Prefira o comando da CLI.
|
|
|
283
283
|
| Comando | O que faz |
|
|
284
284
|
|---|---|
|
|
285
285
|
| \`okcms init <dir>\` | Cria o projeto (arquivos + docs em \`--lang en\\|pt\`) e instala as dependências |
|
|
286
|
+
| \`okcms menu\` | Abre o assistente interativo (igual a rodar \`okcms\` puro num terminal) |
|
|
286
287
|
| \`okcms start [--api\\|--admin\\|--web\\|--worker\\|--all]\` | Sobe os apps (default: todos) |
|
|
287
288
|
| \`okcms stop\` / \`okcms status\` | Para / mostra os processos (pidfiles) |
|
|
288
289
|
| \`okcms doctor\` | Diagnóstico: node, \`.env\`, database (\`DB_*\` ou \`DATABASE_URL\`), config, docker, compose, lane e proxy |
|
|
@@ -589,6 +590,7 @@ the 6 steps above to do by hand. Prefer the CLI command.
|
|
|
589
590
|
| Command | What it does |
|
|
590
591
|
|---|---|
|
|
591
592
|
| \`okcms init <dir>\` | Creates the project (files + docs in \`--lang en\\|pt\`) and installs dependencies |
|
|
593
|
+
| \`okcms menu\` | Opens the interactive wizard (same as running bare \`okcms\` in a terminal) |
|
|
592
594
|
| \`okcms start [--api\\|--admin\\|--web\\|--worker\\|--all]\` | Starts the apps (default: all) |
|
|
593
595
|
| \`okcms stop\` / \`okcms status\` | Stops / shows the processes (pidfiles) |
|
|
594
596
|
| \`okcms doctor\` | Diagnostics: node, \`.env\`, database (\`DB_*\` or \`DATABASE_URL\`), config, docker, compose, lane and proxy |
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaffold-docs.js","sourceRoot":"","sources":["../src/scaffold-docs.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,wEAAwE;AACxE,gFAAgF;AAChF,EAAE;AACF,sEAAsE;AACtE,6EAA6E;AAC7E,yDAAyD;AACzD,EAAE;AACF,0EAA0E;AAC1E,8EAA8E;AAC9E,gFAAgF;AAChF,8EAA8E;AAE9E,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAKjC,0DAA0D;AAC1D,MAAM,CAAC,MAAM,UAAU,GAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAEnD;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAa,IAAI,CAAC;AAEhD;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,KAAgC;IAC5D,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACvD,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC9C,IAAI,UAAU,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IACnC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACjF,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9F,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,aAAa,CAAC,IAAc;IAC1C,OAAO,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;AAClD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,GAAW;IAC/C,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IAC1C,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,iBAAiB,CAAC;IAEtD,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAClD,IAAI,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;QAAE,OAAO,IAAI,CAAC;IACxF,IAAI,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;QAAE,OAAO,IAAI,CAAC;IACxF,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED,8DAA8D;AAC9D,SAAS,eAAe,CAAC,WAAmB;IAC1C,OAAO,KAAK,WAAW
|
|
1
|
+
{"version":3,"file":"scaffold-docs.js","sourceRoot":"","sources":["../src/scaffold-docs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type EnvField } from './env-schema.js';
|
|
2
|
+
import { type Prompt } from './prompt.js';
|
|
3
|
+
import type { Catalog } from './wizard-i18n.js';
|
|
4
|
+
export interface InterviewDeps {
|
|
5
|
+
prompt: Prompt;
|
|
6
|
+
catalog: Catalog;
|
|
7
|
+
cwd: string;
|
|
8
|
+
/** Permite cancelar via Ctrl+C sem derrubar o processo inteiro. */
|
|
9
|
+
onInterrupt?: () => void;
|
|
10
|
+
}
|
|
11
|
+
export interface InterviewResult {
|
|
12
|
+
status: 'saved' | 'cancelled' | 'nothing';
|
|
13
|
+
changed: string[];
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Roda a entrevista completa. `opts.skipOption` quando true adiciona a escolha
|
|
17
|
+
* "pular" no primeiro prompt (contexto de fluxo guiado).
|
|
18
|
+
*/
|
|
19
|
+
export declare function runEnvInterview(deps: InterviewDeps, opts?: {
|
|
20
|
+
skipOption?: boolean;
|
|
21
|
+
}): Promise<InterviewResult>;
|
|
22
|
+
/** Seção do env-schema usada pela entrevista (para testes/docs). */
|
|
23
|
+
export declare function interviewSectionCount(sectionId: string): EnvField[];
|
|
24
|
+
//# sourceMappingURL=wizard-env.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wizard-env.d.ts","sourceRoot":"","sources":["../src/wizard-env.ts"],"names":[],"mappings":"AAmBA,OAAO,EAML,KAAK,QAAQ,EACd,MAAM,iBAAiB,CAAC;AAIzB,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAEhD,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,mEAAmE;IACnE,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,OAAO,GAAG,WAAW,GAAG,SAAS,CAAC;IAC1C,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,aAAa,EACnB,IAAI,GAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAO,GAClC,OAAO,CAAC,eAAe,CAAC,CA8E1B;AAmFD,oEAAoE;AACpE,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ,EAAE,CAEnE"}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
// @oktis-works/cms - Wizard: entrevista de variáveis de ambiente
|
|
2
|
+
//
|
|
3
|
+
// Entrevista campo a campo das 47 variáveis do projeto (ENV_FIELDS é a fonte
|
|
4
|
+
// única de verdade — label, descrição, exemplo, tipo e validação vêm de lá).
|
|
5
|
+
// Regras, decididas com o usuário:
|
|
6
|
+
//
|
|
7
|
+
// • TODOS os campos aparecem em todas as sessões (nada de "só os vazios");
|
|
8
|
+
// • o valor atual é exibido (segredos mascarados) e Enter mantém;
|
|
9
|
+
// • nada é gravado pela metade: as respostas ficam num PLANO em memória e o
|
|
10
|
+
// `.env` só é salvo depois do resumo + confirmação finais;
|
|
11
|
+
// • Ctrl+C no meio descarta o plano inteiro — mesma filosofia do config;
|
|
12
|
+
// • o campo `when` é re-avaliado com as respostas já dadas: se a condição
|
|
13
|
+
// deixou de valer (ex.: STORAGE_DRIVER voltou pra local), os dependentes
|
|
14
|
+
// são pulados em vez de perguntar bobagem.
|
|
15
|
+
//
|
|
16
|
+
// A entrevista é usada como etapa dos fluxos guiados (dev/deploys) e como item
|
|
17
|
+
// de menu — nos fluxos o chamador oferece o "pular".
|
|
18
|
+
import { join } from 'node:path';
|
|
19
|
+
import { ENV_FIELDS, ENV_SECTIONS, fieldsForSection, sectionById, validateField, } from './env-schema.js';
|
|
20
|
+
import { loadEnvFile } from './env-file.js';
|
|
21
|
+
import { generateSecret, looksLikeSecret } from './guards.js';
|
|
22
|
+
import { maskValue } from './config-wizard.js';
|
|
23
|
+
import { style, symbol } from './prompt.js';
|
|
24
|
+
/**
|
|
25
|
+
* Roda a entrevista completa. `opts.skipOption` quando true adiciona a escolha
|
|
26
|
+
* "pular" no primeiro prompt (contexto de fluxo guiado).
|
|
27
|
+
*/
|
|
28
|
+
export async function runEnvInterview(deps, opts = {}) {
|
|
29
|
+
const { prompt, catalog, cwd } = deps;
|
|
30
|
+
const path = join(cwd, '.env');
|
|
31
|
+
const env = loadEnvFile(path);
|
|
32
|
+
const changed = new Set();
|
|
33
|
+
prompt.heading(`${catalog.envHeading} — .env`);
|
|
34
|
+
prompt.info(catalog.envIntro);
|
|
35
|
+
if (opts.skipOption) {
|
|
36
|
+
const pick = await prompt.select('env', [
|
|
37
|
+
{ value: 'run', label: 'Configure variables', hint: catalog.envSectionCount(ENV_FIELDS.length) },
|
|
38
|
+
{ value: 'skip', label: catalog.envSkipOption },
|
|
39
|
+
]);
|
|
40
|
+
if (pick === 'skip')
|
|
41
|
+
return { status: 'nothing', changed: [] };
|
|
42
|
+
}
|
|
43
|
+
const interrupted = { value: false };
|
|
44
|
+
const onInterrupt = () => {
|
|
45
|
+
interrupted.value = true;
|
|
46
|
+
};
|
|
47
|
+
process.once('SIGINT', onInterrupt);
|
|
48
|
+
try {
|
|
49
|
+
// respostas parciais alimentam o `when` dos próximos campos
|
|
50
|
+
const record = () => {
|
|
51
|
+
const out = env.toRecord();
|
|
52
|
+
for (const key of changed)
|
|
53
|
+
out[key] = env.get(key) ?? '';
|
|
54
|
+
return out;
|
|
55
|
+
};
|
|
56
|
+
for (const section of ENV_SECTIONS) {
|
|
57
|
+
if (interrupted.value)
|
|
58
|
+
break;
|
|
59
|
+
const fields = fieldsForSection(section.id, record());
|
|
60
|
+
if (fields.length === 0)
|
|
61
|
+
continue;
|
|
62
|
+
prompt.write(`\n${style.bold(` ── ${section.title} ── ${style.dim(section.hint)}`)}\n`);
|
|
63
|
+
prompt.info(catalog.envSectionCount(fields.length));
|
|
64
|
+
for (const field of fields) {
|
|
65
|
+
if (interrupted.value)
|
|
66
|
+
break;
|
|
67
|
+
await askField(prompt, catalog, env, changed, field, record);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
if (interrupted.value) {
|
|
71
|
+
prompt.warn(catalog.envCancelled);
|
|
72
|
+
return { status: 'cancelled', changed: [] };
|
|
73
|
+
}
|
|
74
|
+
if (changed.size === 0) {
|
|
75
|
+
prompt.info('no changes — file untouched.');
|
|
76
|
+
return { status: 'nothing', changed: [] };
|
|
77
|
+
}
|
|
78
|
+
// resumo antes de gravar — segredos sempre mascarados
|
|
79
|
+
prompt.heading(catalog.envSummaryTitle);
|
|
80
|
+
prompt.info(catalog.envSummaryPending(changed.size));
|
|
81
|
+
for (const key of changed) {
|
|
82
|
+
const field = ENV_FIELDS.find((candidate) => candidate.key === key);
|
|
83
|
+
const value = env.get(key) ?? '';
|
|
84
|
+
const shown = field?.type === 'secret' ? maskValue(value) : value;
|
|
85
|
+
prompt.write(` ${style.cyan(symbol.arrow)} ${key}=${shown}\n`);
|
|
86
|
+
}
|
|
87
|
+
const ok = await prompt.confirm(catalog.envConfirmSave(changed.size), { defaultValue: true });
|
|
88
|
+
if (!ok) {
|
|
89
|
+
prompt.warn(catalog.envDiscarded);
|
|
90
|
+
return { status: 'cancelled', changed: [] };
|
|
91
|
+
}
|
|
92
|
+
env.save(path);
|
|
93
|
+
prompt.success(catalog.envSaved(changed.size));
|
|
94
|
+
return { status: 'saved', changed: [...changed] };
|
|
95
|
+
}
|
|
96
|
+
finally {
|
|
97
|
+
process.removeListener('SIGINT', onInterrupt);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
/** Pergunta um campo com descrição/exemplo/valor atual — Enter mantém. */
|
|
101
|
+
async function askField(prompt, catalog, env, changed, field, record) {
|
|
102
|
+
// o `when` pode ter mudado desde o início da seção (um campo alterou o
|
|
103
|
+
// registro) — reavalia antes de perguntar, senão sai pergunta bobagem
|
|
104
|
+
if (field.when && !field.when(record()))
|
|
105
|
+
return;
|
|
106
|
+
const current = env.get(field.key) ?? '';
|
|
107
|
+
prompt.write(`\n ${style.bold(field.key)}\n`);
|
|
108
|
+
prompt.write(` ${style.dim(symbol.bullet)} ${style.dim(field.label)}\n`);
|
|
109
|
+
prompt.write(` ${style.dim(symbol.bullet)} ${style.dim(field.description)}\n`);
|
|
110
|
+
if (field.example) {
|
|
111
|
+
prompt.write(` ${style.gray(` ex.: ${field.example}`)}\n`);
|
|
112
|
+
}
|
|
113
|
+
if (field.options && field.options.length > 0) {
|
|
114
|
+
prompt.write(` ${style.gray(` options: ${field.options.join(' | ')}`)}\n`);
|
|
115
|
+
}
|
|
116
|
+
// JWT_SECRET fraco/ausente: oferece um gerado (mesma ajuda do config wizard)
|
|
117
|
+
if (field.key === 'JWT_SECRET' && !looksLikeSecret(current)) {
|
|
118
|
+
const generate = await prompt.confirm(catalog.envJwtGenerate, { defaultValue: true });
|
|
119
|
+
if (generate) {
|
|
120
|
+
const secret = generateSecret(32);
|
|
121
|
+
env.set(field.key, secret);
|
|
122
|
+
changed.add(field.key);
|
|
123
|
+
prompt.success(catalog.envGenerated);
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
const shownCurrent = field.type === 'secret'
|
|
128
|
+
? current
|
|
129
|
+
? maskValue(current)
|
|
130
|
+
: catalog.envSecretNotSet
|
|
131
|
+
: current || catalog.envSecretNotSet;
|
|
132
|
+
const validate = (candidate) => validateField(field, candidate);
|
|
133
|
+
let value;
|
|
134
|
+
if (field.type === 'secret') {
|
|
135
|
+
value = await prompt.secret(`${field.key} — ${field.label}`, {
|
|
136
|
+
default: current,
|
|
137
|
+
placeholder: `${catalog.envKeepHint}: ${shownCurrent}`,
|
|
138
|
+
validate,
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
const fallback = current || field.default || '';
|
|
143
|
+
value = await prompt.ask(`${field.key} — ${field.label}`, {
|
|
144
|
+
default: fallback,
|
|
145
|
+
placeholder: current
|
|
146
|
+
? `${catalog.envKeepHint}: ${current}`
|
|
147
|
+
: field.default
|
|
148
|
+
? `${field.default} (default)`
|
|
149
|
+
: undefined,
|
|
150
|
+
validate,
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
if (value === current)
|
|
154
|
+
return;
|
|
155
|
+
// aceitar o default de uma chave AUSENTE não materializa a chave — o app já
|
|
156
|
+
// aplica esse default; gravar tudo a cada Enter enche o .env de ruído
|
|
157
|
+
const acceptedDefault = current === '' && value === (field.default ?? '');
|
|
158
|
+
if (acceptedDefault) {
|
|
159
|
+
prompt.info(catalog.envDefaultApplies(value));
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
env.set(field.key, value);
|
|
163
|
+
changed.add(field.key);
|
|
164
|
+
const shown = field.type === 'secret' ? maskValue(value) : value;
|
|
165
|
+
prompt.success(`${field.key} → ${shown}`);
|
|
166
|
+
}
|
|
167
|
+
/** Seção do env-schema usada pela entrevista (para testes/docs). */
|
|
168
|
+
export function interviewSectionCount(sectionId) {
|
|
169
|
+
return sectionById(sectionId) ? fieldsForSection(sectionId, {}) : [];
|
|
170
|
+
}
|
|
171
|
+
//# sourceMappingURL=wizard-env.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wizard-env.js","sourceRoot":"","sources":["../src/wizard-env.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,EAAE;AACF,6EAA6E;AAC7E,6EAA6E;AAC7E,mCAAmC;AACnC,EAAE;AACF,6EAA6E;AAC7E,oEAAoE;AACpE,8EAA8E;AAC9E,+DAA+D;AAC/D,2EAA2E;AAC3E,4EAA4E;AAC5E,6EAA6E;AAC7E,+CAA+C;AAC/C,EAAE;AACF,+EAA+E;AAC/E,qDAAqD;AAErD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EACL,UAAU,EACV,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACX,aAAa,GAEd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAW,WAAW,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,EAAe,MAAM,aAAa,CAAC;AAgBzD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,IAAmB,EACnB,OAAiC,EAAE;IAEnC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IACtC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC/B,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAC9B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAElC,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,UAAU,SAAS,CAAC,CAAC;IAC/C,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE9B,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,MAAM,CAAiB,KAAK,EAAE;YACtD,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,qBAAqB,EAAE,IAAI,EAAE,OAAO,CAAC,eAAe,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;YAChG,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,aAAa,EAAE;SAChD,CAAC,CAAC;QACH,IAAI,IAAI,KAAK,MAAM;YAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACjE,CAAC;IAED,MAAM,WAAW,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IACrC,MAAM,WAAW,GAAG,GAAS,EAAE;QAC7B,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC;IAC3B,CAAC,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAEpC,IAAI,CAAC;QACH,4DAA4D;QAC5D,MAAM,MAAM,GAAG,GAA2B,EAAE;YAC1C,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;YAC3B,KAAK,MAAM,GAAG,IAAI,OAAO;gBAAE,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YACzD,OAAO,GAAG,CAAC;QACb,CAAC,CAAC;QAEF,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE,CAAC;YACnC,IAAI,WAAW,CAAC,KAAK;gBAAE,MAAM;YAE7B,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;YACtD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAS;YAElC,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,QAAQ,OAAO,CAAC,KAAK,OAAO,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YACzF,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;YAEpD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,IAAI,WAAW,CAAC,KAAK;oBAAE,MAAM;gBAC7B,MAAM,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC;QAED,IAAI,WAAW,CAAC,KAAK,EAAE,CAAC;YACtB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YAClC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QAC9C,CAAC;QAED,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;YAC5C,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QAC5C,CAAC;QAED,sDAAsD;QACtD,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QACxC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACrD,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;YACpE,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YACjC,MAAM,KAAK,GAAG,KAAK,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YAClE,MAAM,CAAC,KAAK,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,KAAK,IAAI,CAAC,CAAC;QACpE,CAAC;QAED,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9F,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YAClC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QAC9C,CAAC;QAED,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACf,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/C,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC;IACpD,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAChD,CAAC;AACH,CAAC;AAED,0EAA0E;AAC1E,KAAK,UAAU,QAAQ,CACrB,MAAc,EACd,OAAgB,EAChB,GAAY,EACZ,OAAoB,EACpB,KAAe,EACf,MAAoC;IAEpC,uEAAuE;IACvE,sEAAsE;IACtE,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QAAE,OAAO;IAEhD,MAAM,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;IAEzC,MAAM,CAAC,KAAK,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC/C,MAAM,CAAC,KAAK,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5E,MAAM,CAAC,KAAK,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAClF,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAClB,MAAM,CAAC,KAAK,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;IACjE,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9C,MAAM,CAAC,KAAK,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,cAAc,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACjF,CAAC;IAED,6EAA6E;IAC7E,IAAI,KAAK,CAAC,GAAG,KAAK,YAAY,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5D,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;QACtF,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,MAAM,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;YAClC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACvB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YACrC,OAAO;QACT,CAAC;IACH,CAAC;IAED,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,KAAK,QAAQ;QAC1C,CAAC,CAAC,OAAO;YACP,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC;YACpB,CAAC,CAAC,OAAO,CAAC,eAAe;QAC3B,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,eAAe,CAAC;IAEvC,MAAM,QAAQ,GAAG,CAAC,SAAiB,EAAiB,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAEvF,IAAI,KAAa,CAAC;IAClB,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC5B,KAAK,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,MAAM,KAAK,CAAC,KAAK,EAAE,EAAE;YAC3D,OAAO,EAAE,OAAO;YAChB,WAAW,EAAE,GAAG,OAAO,CAAC,WAAW,KAAK,YAAY,EAAE;YACtD,QAAQ;SACT,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,MAAM,QAAQ,GAAG,OAAO,IAAI,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;QAChD,KAAK,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,MAAM,KAAK,CAAC,KAAK,EAAE,EAAE;YACxD,OAAO,EAAE,QAAQ;YACjB,WAAW,EAAE,OAAO;gBAClB,CAAC,CAAC,GAAG,OAAO,CAAC,WAAW,KAAK,OAAO,EAAE;gBACtC,CAAC,CAAC,KAAK,CAAC,OAAO;oBACb,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,YAAY;oBAC9B,CAAC,CAAC,SAAS;YACf,QAAQ;SACT,CAAC,CAAC;IACL,CAAC;IAED,IAAI,KAAK,KAAK,OAAO;QAAE,OAAO;IAE9B,4EAA4E;IAC5E,sEAAsE;IACtE,MAAM,eAAe,GAAG,OAAO,KAAK,EAAE,IAAI,KAAK,KAAK,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;IAC1E,IAAI,eAAe,EAAE,CAAC;QACpB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9C,OAAO;IACT,CAAC;IAED,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACvB,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACjE,MAAM,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,GAAG,MAAM,KAAK,EAAE,CAAC,CAAC;AAC5C,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,qBAAqB,CAAC,SAAiB;IACrD,OAAO,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACvE,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type WizardState } from './wizard-state.js';
|
|
2
|
+
import { type SpawnFn } from './wizard-run.js';
|
|
3
|
+
import { type Prompt } from './prompt.js';
|
|
4
|
+
import type { Catalog } from './wizard-i18n.js';
|
|
5
|
+
export interface FlowDeps {
|
|
6
|
+
prompt: Prompt;
|
|
7
|
+
catalog: Catalog;
|
|
8
|
+
cwd: string;
|
|
9
|
+
spawn?: SpawnFn;
|
|
10
|
+
stateFn?: () => WizardState;
|
|
11
|
+
}
|
|
12
|
+
export type FlowOutcome = 'done' | 'cancelled' | 'failed';
|
|
13
|
+
export declare function flowInit(deps: FlowDeps): Promise<FlowOutcome>;
|
|
14
|
+
export declare function flowDev(deps: FlowDeps): Promise<FlowOutcome>;
|
|
15
|
+
export declare const flowDeployBlueGreen: (deps: FlowDeps) => Promise<FlowOutcome>;
|
|
16
|
+
export declare const flowDeploySimple: (deps: FlowDeps) => Promise<FlowOutcome>;
|
|
17
|
+
export declare const flowDeployPm2: (deps: FlowDeps) => Promise<FlowOutcome>;
|
|
18
|
+
export declare function flowUpdate(deps: FlowDeps): Promise<FlowOutcome>;
|
|
19
|
+
//# sourceMappingURL=wizard-flows.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wizard-flows.d.ts","sourceRoot":"","sources":["../src/wizard-flows.ts"],"names":[],"mappings":"AAaA,OAAO,EAAc,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEjE,OAAO,EAAiC,KAAK,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC9E,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAEhD,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,WAAW,CAAC;CAC7B;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;AA0E1D,wBAAsB,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,CAiCnE;AAMD,wBAAsB,OAAO,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,CAelE;AA4BD,eAAO,MAAM,mBAAmB,SAAU,QAAQ,KAAG,OAAO,CAAC,WAAW,CACb,CAAC;AAE5D,eAAO,MAAM,gBAAgB,SAAU,QAAQ,KAAG,OAAO,CAAC,WAAW,CACV,CAAC;AAE5D,eAAO,MAAM,aAAa,SAAU,QAAQ,KAAG,OAAO,CAAC,WAAW,CACb,CAAC;AAMtD,wBAAsB,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,CAmBrE"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
// @oktis-works/cms - Wizard: fluxos guiados
|
|
2
|
+
//
|
|
3
|
+
// Seis trilhas passo-a-passo que ENCADEIAM os comandos reais via subprocesso:
|
|
4
|
+
// nada é reimplementado aqui — o wizard explica, pergunta, imprime a linha de
|
|
5
|
+
// automação e executa o mesmo `okcms ...` que você rodaria à mão.
|
|
6
|
+
//
|
|
7
|
+
// Padrão comum de todos os fluxos:
|
|
8
|
+
// intro → entrevista de env (pulável, dev/deploys) → pré-checagens →
|
|
9
|
+
// confirmação → execução (espelho + subprocesso) → em falha: doctor/retry/menu
|
|
10
|
+
//
|
|
11
|
+
// Comandos longos (dev/start) são marcados como `longRunning`: o Ctrl+C neles
|
|
12
|
+
// retorna ao wizard em vez de encerrar a sessão.
|
|
13
|
+
import { probeState } from './wizard-state.js';
|
|
14
|
+
import { runEnvInterview } from './wizard-env.js';
|
|
15
|
+
import { runCliCommand } from './wizard-run.js';
|
|
16
|
+
const stateOf = (deps) => deps.stateFn ? deps.stateFn() : probeState({ cwd: deps.cwd });
|
|
17
|
+
/** Entrevista de env comum aos fluxos dev/deploys (pulável). */
|
|
18
|
+
async function envStep(deps) {
|
|
19
|
+
const result = await runEnvInterview({ prompt: deps.prompt, catalog: deps.catalog, cwd: deps.cwd }, { skipOption: true });
|
|
20
|
+
if (result.status === 'cancelled') {
|
|
21
|
+
deps.prompt.warn(deps.catalog.stepCancelled);
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
if (result.status === 'nothing')
|
|
25
|
+
deps.prompt.info(deps.catalog.stepEnvSkip);
|
|
26
|
+
return true;
|
|
27
|
+
}
|
|
28
|
+
/** Pré-checagem dos deploys: apps locais seguram as portas dos containers. */
|
|
29
|
+
async function precheckDeploy(deps) {
|
|
30
|
+
const state = stateOf(deps);
|
|
31
|
+
if (!state.isProject) {
|
|
32
|
+
deps.prompt.error(deps.catalog.warnNoProject);
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
if (!state.dockerUp) {
|
|
36
|
+
deps.prompt.error(deps.catalog.statusDockerDown);
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
if (state.appsRunning) {
|
|
40
|
+
deps.prompt.warn(deps.catalog.stepAppsRunning);
|
|
41
|
+
const stop = await deps.prompt.confirm(deps.catalog.stepStopFirst, { defaultValue: true });
|
|
42
|
+
if (!stop) {
|
|
43
|
+
deps.prompt.warn(deps.catalog.stepCancelled);
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
const result = await runCliCommand('stop', [], { prompt: deps.prompt, spawn: deps.spawn, cwd: deps.cwd });
|
|
47
|
+
if (result.code !== 0)
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
deps.prompt.info(deps.catalog.stepPrecheck + ': ' + deps.catalog.statusInfraUp);
|
|
51
|
+
return true;
|
|
52
|
+
}
|
|
53
|
+
/** Em falha: doctor / retry / menu. Retorna 'retry' para repetir o passo. */
|
|
54
|
+
async function failureMenu(deps, retry) {
|
|
55
|
+
for (;;) {
|
|
56
|
+
const pick = await deps.prompt.select(deps.catalog.onFailure, [
|
|
57
|
+
{ value: 'doctor', label: deps.catalog.failDoctor },
|
|
58
|
+
{ value: 'retry', label: deps.catalog.failRetry },
|
|
59
|
+
{ value: 'menu', label: deps.catalog.failMenu },
|
|
60
|
+
]);
|
|
61
|
+
if (pick === 'menu')
|
|
62
|
+
return 'failed';
|
|
63
|
+
if (pick === 'doctor') {
|
|
64
|
+
await runCliCommand('doctor', [], { prompt: deps.prompt, spawn: deps.spawn, cwd: deps.cwd });
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
const result = await retry();
|
|
68
|
+
if (result.code === 0)
|
|
69
|
+
return 'done';
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
async function confirmRun(deps, line) {
|
|
73
|
+
return deps.prompt.confirm(deps.catalog.stepConfirmRun(line), { defaultValue: true });
|
|
74
|
+
}
|
|
75
|
+
// ---------------------------------------------------------------------------
|
|
76
|
+
// Init
|
|
77
|
+
// ---------------------------------------------------------------------------
|
|
78
|
+
export async function flowInit(deps) {
|
|
79
|
+
const { prompt, catalog } = deps;
|
|
80
|
+
prompt.heading(catalog.stepIntro(catalog.flowInit));
|
|
81
|
+
prompt.info(catalog.initWhatItDoes);
|
|
82
|
+
const dir = await prompt.ask('Project directory', { default: '.' });
|
|
83
|
+
const lang = await prompt.select('Docs language', [
|
|
84
|
+
{ value: 'en', label: 'English', hint: 'default' },
|
|
85
|
+
{ value: 'pt', label: 'Português (Brasil)' },
|
|
86
|
+
]);
|
|
87
|
+
const install = await prompt.select('Install dependencies now?', [
|
|
88
|
+
{ value: true, label: 'Yes', hint: 'recommended' },
|
|
89
|
+
{ value: false, label: 'No' },
|
|
90
|
+
]);
|
|
91
|
+
const flags = [['lang', lang]];
|
|
92
|
+
if (!install)
|
|
93
|
+
flags.push(['no-install', 'true']);
|
|
94
|
+
const run = () => runCliCommand('init', flags, {
|
|
95
|
+
prompt,
|
|
96
|
+
spawn: deps.spawn,
|
|
97
|
+
cwd: deps.cwd,
|
|
98
|
+
positional: [dir],
|
|
99
|
+
longRunning: true,
|
|
100
|
+
});
|
|
101
|
+
if (!(await confirmRun(deps, `okcms init ${dir} --lang ${lang}${install ? '' : ' --no-install'}`))) {
|
|
102
|
+
prompt.warn(catalog.stepCancelled);
|
|
103
|
+
return 'cancelled';
|
|
104
|
+
}
|
|
105
|
+
const result = await run();
|
|
106
|
+
return result.code === 0 ? 'done' : failureMenu(deps, run);
|
|
107
|
+
}
|
|
108
|
+
// ---------------------------------------------------------------------------
|
|
109
|
+
// Dev
|
|
110
|
+
// ---------------------------------------------------------------------------
|
|
111
|
+
export async function flowDev(deps) {
|
|
112
|
+
const { prompt, catalog } = deps;
|
|
113
|
+
prompt.heading(catalog.stepIntro(catalog.flowDev));
|
|
114
|
+
prompt.info(catalog.devWhatItDoes);
|
|
115
|
+
if (!(await envStep(deps)))
|
|
116
|
+
return 'cancelled';
|
|
117
|
+
if (!(await confirmRun(deps, 'okcms dev'))) {
|
|
118
|
+
prompt.warn(catalog.stepCancelled);
|
|
119
|
+
return 'cancelled';
|
|
120
|
+
}
|
|
121
|
+
const run = () => runCliCommand('dev', [], { prompt, spawn: deps.spawn, cwd: deps.cwd, longRunning: true });
|
|
122
|
+
const result = await run();
|
|
123
|
+
return result.code === 0 ? 'done' : failureMenu(deps, run);
|
|
124
|
+
}
|
|
125
|
+
async function flowDeploy(deps, target, label) {
|
|
126
|
+
const { prompt, catalog } = deps;
|
|
127
|
+
prompt.heading(catalog.stepIntro(label));
|
|
128
|
+
prompt.info(catalog.deployTargetSummary(target));
|
|
129
|
+
if (!(await envStep(deps)))
|
|
130
|
+
return 'cancelled';
|
|
131
|
+
if (!(await precheckDeploy(deps)))
|
|
132
|
+
return 'cancelled';
|
|
133
|
+
const flags = [['target', target], ['yes', 'true']];
|
|
134
|
+
const run = () => runCliCommand('deploy', flags, { prompt, spawn: deps.spawn, cwd: deps.cwd });
|
|
135
|
+
if (!(await confirmRun(deps, `okcms deploy --target ${target} --yes`))) {
|
|
136
|
+
prompt.warn(catalog.stepCancelled);
|
|
137
|
+
return 'cancelled';
|
|
138
|
+
}
|
|
139
|
+
const result = await run();
|
|
140
|
+
return result.code === 0 ? 'done' : failureMenu(deps, run);
|
|
141
|
+
}
|
|
142
|
+
export const flowDeployBlueGreen = (deps) => flowDeploy(deps, 'blue-green', deps.catalog.flowDeployBg);
|
|
143
|
+
export const flowDeploySimple = (deps) => flowDeploy(deps, 'simple', deps.catalog.flowDeploySimple);
|
|
144
|
+
export const flowDeployPm2 = (deps) => flowDeploy(deps, 'pm2', deps.catalog.flowDeployPm2);
|
|
145
|
+
// ---------------------------------------------------------------------------
|
|
146
|
+
// Update
|
|
147
|
+
// ---------------------------------------------------------------------------
|
|
148
|
+
export async function flowUpdate(deps) {
|
|
149
|
+
const { prompt, catalog } = deps;
|
|
150
|
+
const state = stateOf(deps);
|
|
151
|
+
prompt.heading(catalog.stepIntro(catalog.flowUpdate));
|
|
152
|
+
prompt.info(catalog.updateSummary);
|
|
153
|
+
if (!state.isProject) {
|
|
154
|
+
prompt.error(catalog.warnNoProject);
|
|
155
|
+
return 'cancelled';
|
|
156
|
+
}
|
|
157
|
+
if (!(await confirmRun(deps, 'okcms update'))) {
|
|
158
|
+
prompt.warn(catalog.stepCancelled);
|
|
159
|
+
return 'cancelled';
|
|
160
|
+
}
|
|
161
|
+
const run = () => runCliCommand('update', [], { prompt, spawn: deps.spawn, cwd: deps.cwd, longRunning: true });
|
|
162
|
+
const result = await run();
|
|
163
|
+
return result.code === 0 ? 'done' : failureMenu(deps, run);
|
|
164
|
+
}
|
|
165
|
+
//# sourceMappingURL=wizard-flows.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wizard-flows.js","sourceRoot":"","sources":["../src/wizard-flows.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
export type WizardLang = 'en' | 'pt';
|
|
2
|
+
export interface Catalog {
|
|
3
|
+
title: string;
|
|
4
|
+
langLabel: (current: WizardLang) => string;
|
|
5
|
+
pickLang: string;
|
|
6
|
+
suggestNone: string;
|
|
7
|
+
suggestInit: string;
|
|
8
|
+
suggestEnv: string;
|
|
9
|
+
suggestInfra: string;
|
|
10
|
+
suggestApps: string;
|
|
11
|
+
suggestDeploy: string;
|
|
12
|
+
menuFlows: string;
|
|
13
|
+
menuFlowsHint: string;
|
|
14
|
+
menuCommand: string;
|
|
15
|
+
menuCommandHint: string;
|
|
16
|
+
menuEnv: string;
|
|
17
|
+
menuEnvHint: string;
|
|
18
|
+
menuStatus: string;
|
|
19
|
+
menuStatusHint: string;
|
|
20
|
+
menuRefresh: string;
|
|
21
|
+
menuRefreshHint: string;
|
|
22
|
+
menuExit: string;
|
|
23
|
+
menuExitHint: string;
|
|
24
|
+
flowsHeading: string;
|
|
25
|
+
catalogHeading: string;
|
|
26
|
+
envHeading: string;
|
|
27
|
+
statusHeading: string;
|
|
28
|
+
languageHeading: string;
|
|
29
|
+
statusNoProject: string;
|
|
30
|
+
statusProject: (name: string) => string;
|
|
31
|
+
statusEnvComplete: string;
|
|
32
|
+
statusEnvIncomplete: (missing: number) => string;
|
|
33
|
+
statusDockerUp: string;
|
|
34
|
+
statusDockerDown: string;
|
|
35
|
+
statusInfraUp: string;
|
|
36
|
+
statusInfraDown: string;
|
|
37
|
+
statusAppsUp: (labels: string) => string;
|
|
38
|
+
statusAppsDown: string;
|
|
39
|
+
statusRefreshed: string;
|
|
40
|
+
mirrorLine: (command: string) => string;
|
|
41
|
+
running: (command: string) => string;
|
|
42
|
+
exitedZero: string;
|
|
43
|
+
exitedNonZero: (code: number) => string;
|
|
44
|
+
onFailure: string;
|
|
45
|
+
failDoctor: string;
|
|
46
|
+
failRetry: string;
|
|
47
|
+
failMenu: string;
|
|
48
|
+
longRunning: string;
|
|
49
|
+
interrupted: string;
|
|
50
|
+
envIntro: string;
|
|
51
|
+
envSkipOption: string;
|
|
52
|
+
envKeepHint: string;
|
|
53
|
+
envSectionCount: (count: number) => string;
|
|
54
|
+
envSecretNotSet: string;
|
|
55
|
+
envJwtGenerate: string;
|
|
56
|
+
envGenerated: string;
|
|
57
|
+
envSaved: (count: number) => string;
|
|
58
|
+
envDiscarded: string;
|
|
59
|
+
envDefaultApplies: (value: string) => string;
|
|
60
|
+
envSummaryTitle: string;
|
|
61
|
+
envSummaryPending: (count: number) => string;
|
|
62
|
+
envConfirmSave: (count: number) => string;
|
|
63
|
+
envCancelled: string;
|
|
64
|
+
envNoProject: string;
|
|
65
|
+
flowInit: string;
|
|
66
|
+
flowInitHint: string;
|
|
67
|
+
flowDev: string;
|
|
68
|
+
flowDevHint: string;
|
|
69
|
+
flowDeployBg: string;
|
|
70
|
+
flowDeployBgHint: string;
|
|
71
|
+
flowDeploySimple: string;
|
|
72
|
+
flowDeploySimpleHint: string;
|
|
73
|
+
flowDeployPm2: string;
|
|
74
|
+
flowDeployPm2Hint: string;
|
|
75
|
+
flowUpdate: string;
|
|
76
|
+
flowUpdateHint: string;
|
|
77
|
+
flowBack: string;
|
|
78
|
+
flowBackHint: string;
|
|
79
|
+
stepIntro: (flow: string) => string;
|
|
80
|
+
stepEnvAsk: string;
|
|
81
|
+
stepEnvSkip: string;
|
|
82
|
+
stepPrecheck: string;
|
|
83
|
+
stepAppsRunning: string;
|
|
84
|
+
stepStopFirst: string;
|
|
85
|
+
stepConfirmRun: (command: string) => string;
|
|
86
|
+
stepCancelled: string;
|
|
87
|
+
deployTargetSummary: (target: string) => string;
|
|
88
|
+
updateSummary: string;
|
|
89
|
+
initWhatItDoes: string;
|
|
90
|
+
devWhatItDoes: string;
|
|
91
|
+
catalogIntro: string;
|
|
92
|
+
catalogPickCommand: string;
|
|
93
|
+
catalogRequired: (flag: string, desc: string) => string;
|
|
94
|
+
catalogAddOptionals: string;
|
|
95
|
+
catalogPickOptional: string;
|
|
96
|
+
catalogValueFor: (flag: string, desc: string) => string;
|
|
97
|
+
catalogDanger: (name: string) => string;
|
|
98
|
+
catalogConfirmDanger: (command: string) => string;
|
|
99
|
+
catalogConfirmRun: (command: string) => string;
|
|
100
|
+
catalogDone: string;
|
|
101
|
+
warnNoProject: string;
|
|
102
|
+
bye: string;
|
|
103
|
+
}
|
|
104
|
+
export declare const CATALOGS: Record<WizardLang, Catalog>;
|
|
105
|
+
export declare const WIZARD_LANGS: WizardLang[];
|
|
106
|
+
/**
|
|
107
|
+
* Idioma inicial do wizard: sempre EN por padrão; se o projeto já tem docs em
|
|
108
|
+
* português, o wizard SUGERE pt na primeira interação (não força).
|
|
109
|
+
*/
|
|
110
|
+
export declare function initialLang(cwd: string): WizardLang;
|
|
111
|
+
export declare function catalogFor(lang: WizardLang): Catalog;
|
|
112
|
+
//# sourceMappingURL=wizard-i18n.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wizard-i18n.d.ts","sourceRoot":"","sources":["../src/wizard-i18n.ts"],"names":[],"mappings":"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"}
|