expxdev 0.3.0 → 0.4.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/expx.js CHANGED
@@ -9,6 +9,8 @@ import { avaliarSelecao } from "./selecao.js";
9
9
  import { executarWizard } from "./wizard.js";
10
10
  import { perguntadorDeTerminal } from "./perguntar.js";
11
11
  import { NOMES } from "../nucleo/catalogo.js";
12
+ import { hero, sucesso, temCor } from "./visual.js";
13
+ import { versaoDoCli } from "../nucleo/lock.js";
12
14
  import { instalarPlugin } from "../harness/instalar.js";
13
15
  import { join } from "node:path";
14
16
  /**
@@ -49,6 +51,7 @@ const EXECUTORES = {
49
51
  // sair com "nenhuma skill selecionada" — que era o beco sem saída do
50
52
  // `npx expxdev init` puro.
51
53
  if (opcoes.skills.length === 0 && ehInterativo()) {
54
+ saida.escrever(hero(versaoDoCli()));
52
55
  const p = criarPerguntador();
53
56
  try {
54
57
  const w = await executarWizard(p, opcoes, process.cwd());
@@ -85,16 +88,22 @@ const EXECUTORES = {
85
88
  saida.escreverErro(`falhou ${x.nome}: ${x.erro}\n`);
86
89
  if (!r.ok)
87
90
  return 1;
88
- saida.escrever(`instaladas: ${r.instaladas.join(", ")}\n`);
91
+ const fecho = [`instaladas: ${r.instaladas.join(", ")}`];
89
92
  if (harness.includes("claude")) {
90
93
  const inst = await instalarPlugin(join(process.cwd(), ".expx", "marketplace"));
91
- if (inst.instrucao !== undefined)
94
+ if (inst.instrucao !== undefined) {
95
+ saida.escrever(sucesso(fecho, temCor()));
92
96
  saida.escrever(`\n${inst.instrucao}\n`);
93
- else if (inst.erro !== undefined)
97
+ return 0;
98
+ }
99
+ if (inst.erro !== undefined) {
100
+ saida.escrever(sucesso(fecho, temCor()));
94
101
  saida.escreverErro(`nao foi possivel registrar o plugin: ${inst.erro}\n`);
95
- else
96
- saida.escrever("plugin registrado: os comandos /expx: estao disponiveis\n");
102
+ return 0;
103
+ }
104
+ fecho.push("plugin registrado: os comandos /expx: estao disponiveis");
97
105
  }
106
+ saida.escrever(sucesso(fecho, temCor()));
98
107
  return 0;
99
108
  },
100
109
  add: async (resto, saida) => {
@@ -1 +1 @@
1
- {"version":3,"file":"expx.js","sourceRoot":"","sources":["../../src/cli/expx.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"expx.js","sourceRoot":"","sources":["../../src/cli/expx.ts"],"names":[],"mappings":"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"}
@@ -2,26 +2,64 @@ import type { Readable, Writable } from "node:stream";
2
2
  /**
3
3
  * A camada de pergunta e resposta do terminal — e só ela.
4
4
  *
5
- * O wizard do `init` não fala com `process.stdin` diretamente: recebe um
6
- * `Perguntador`. É o que torna o fluxo testável sem subprocesso e sem TTY
7
- * falso, do mesmo jeito que `expx.ts` já injeta a saída para não capturar
8
- * `process.stdout` global.
5
+ * O wizard do `init` não fala com `process.stdin`: recebe um `Perguntador`.
6
+ * É o que torna o fluxo testável sem subprocesso e sem TTY falso, do mesmo
7
+ * jeito que `expx.ts` já injeta a saída para não capturar `process.stdout`
8
+ * global.
9
+ *
10
+ * `marcar` é opcional de propósito. Ele existe quando o terminal navega, e
11
+ * some quando não navega — e é essa ausência que faz o wizard cair sozinho
12
+ * para a escolha por número, sem precisar perguntar duas vezes "dá para
13
+ * navegar aqui?".
9
14
  */
15
+ export type Item = {
16
+ valor: string;
17
+ rotulo: string;
18
+ marcado?: boolean;
19
+ };
20
+ export type Marcacao = {
21
+ titulo: string;
22
+ itens: readonly Item[];
23
+ };
10
24
  export type Perguntador = {
11
25
  /** Uma linha de texto livre, já sem espaço nas pontas. */
12
26
  linha: (rotulo: string) => Promise<string>;
27
+ /** Sim ou não. */
28
+ confirmar: (rotulo: string, padrao: boolean) => Promise<boolean>;
29
+ /** Navegar e marcar. Ausente quando o terminal não suporta. `undefined` = cancelou. */
30
+ marcar?: (m: Marcacao) => Promise<string[] | undefined>;
13
31
  escrever: (texto: string) => void;
14
32
  fechar: () => void;
15
33
  };
16
- export declare function perguntadorDeTerminal(entrada?: Readable, saida?: Writable): Perguntador;
34
+ /**
35
+ * Dá para desenhar um menu navegável aqui?
36
+ *
37
+ * Exige os dois lados do terminal: sem `stdin` não há setas para ler, e sem
38
+ * `stdout` não há onde redesenhar a lista a cada tecla. `TERM=dumb` anuncia
39
+ * explicitamente um terminal sem controle de cursor.
40
+ */
41
+ export declare function podeNavegar(entrada?: Readable & {
42
+ isTTY?: boolean;
43
+ }, saida?: Writable & {
44
+ isTTY?: boolean;
45
+ }, env?: NodeJS.ProcessEnv): boolean;
46
+ export declare function perguntadorDeTerminal(entrada?: Readable & {
47
+ isTTY?: boolean;
48
+ }, saida?: Writable & {
49
+ isTTY?: boolean;
50
+ }): Perguntador;
17
51
  /**
18
52
  * Um perguntador de roteiro, para teste: consome respostas em ordem.
19
53
  *
20
- * Acabaram as respostas do roteiro? Devolve string vazia — que todo passo do
21
- * wizard trata como "aceito o padrão". Um teste que esquece uma resposta
22
- * termina com o padrão em vez de travar o processo esperando `stdin`.
54
+ * Acabaram as respostas? Devolve string vazia — que todo passo trata como
55
+ * "aceito o padrão". Um teste que esquece uma resposta termina com o padrão
56
+ * em vez de travar o processo esperando `stdin`.
57
+ *
58
+ * Por padrão NÃO navega, porque o roteiro testa o caminho por número. Passe
59
+ * `marcacoes` para testar o caminho navegável: cada entrada é o que a pessoa
60
+ * teria marcado naquele menu.
23
61
  */
24
- export declare function perguntadorDeRoteiro(respostas: readonly string[]): Perguntador & {
62
+ export declare function perguntadorDeRoteiro(respostas: readonly string[], marcacoes?: readonly (readonly string[] | undefined)[]): Perguntador & {
25
63
  escrito: () => string;
26
64
  };
27
65
  /**
@@ -1,17 +1,63 @@
1
1
  import { createInterface } from "node:readline";
2
+ import { checkbox, confirm } from "@inquirer/prompts";
3
+ import { pintar, temCor } from "./visual.js";
4
+ /**
5
+ * Dá para desenhar um menu navegável aqui?
6
+ *
7
+ * Exige os dois lados do terminal: sem `stdin` não há setas para ler, e sem
8
+ * `stdout` não há onde redesenhar a lista a cada tecla. `TERM=dumb` anuncia
9
+ * explicitamente um terminal sem controle de cursor.
10
+ */
11
+ export function podeNavegar(entrada = process.stdin, saida = process.stdout, env = process.env) {
12
+ if (env["TERM"] === "dumb")
13
+ return false;
14
+ if (env["EXPX_SEM_NAVEGACAO"] === "1")
15
+ return false;
16
+ return entrada.isTTY === true && saida.isTTY === true;
17
+ }
18
+ function cancelou(e) {
19
+ return e instanceof Error && (e.name === "ExitPromptError" || e.name === "AbortPromptError");
20
+ }
2
21
  export function perguntadorDeTerminal(entrada = process.stdin, saida = process.stdout) {
3
22
  let rl;
4
23
  const obter = () => {
5
24
  rl ??= createInterface({ input: entrada, output: saida });
6
25
  return rl;
7
26
  };
8
- return {
27
+ // O readline próprio e o inquirer não podem estar abertos ao mesmo tempo:
28
+ // os dois leem o mesmo `stdin` e disputariam cada tecla. Fechar o nosso
29
+ // antes de entregar o terminal ao inquirer evita a disputa.
30
+ const semReadline = async (acao) => {
31
+ rl?.close();
32
+ rl = undefined;
33
+ return acao();
34
+ };
35
+ const navegavel = podeNavegar(entrada, saida);
36
+ const base = {
9
37
  linha: async (rotulo) => {
10
38
  const resposta = await new Promise((resolver) => {
11
39
  obter().question(rotulo, resolver);
12
40
  });
13
41
  return resposta.trim();
14
42
  },
43
+ confirmar: async (rotulo, padrao) => {
44
+ if (!navegavel) {
45
+ const r = await base.linha(`${rotulo} ${padrao ? "[S/n]" : "[s/N]"} `);
46
+ return interpretarSimNao(r, padrao);
47
+ }
48
+ return semReadline(() => confirm({
49
+ message: rotulo,
50
+ default: padrao,
51
+ theme: {
52
+ // O inquirer responde "Yes"/"No" e sugere "(y/N)". Traduzir as
53
+ // palavras-chave muda as duas coisas de uma vez: a dica vira
54
+ // "(s/n)" e o "s" que a pessoa digita passa a ser reconhecido —
55
+ // o parser compara a tecla com a inicial destas palavras.
56
+ keywords: { yes: "sim", no: "nao" },
57
+ prefix: pintar("?", "azulClaro", temCor()),
58
+ },
59
+ }));
60
+ },
15
61
  escrever: (texto) => {
16
62
  saida.write(texto);
17
63
  },
@@ -20,28 +66,85 @@ export function perguntadorDeTerminal(entrada = process.stdin, saida = process.s
20
66
  rl = undefined;
21
67
  },
22
68
  };
69
+ if (!navegavel)
70
+ return base;
71
+ return {
72
+ ...base,
73
+ marcar: async (m) => semReadline(async () => {
74
+ try {
75
+ return await checkbox({
76
+ message: m.titulo,
77
+ choices: m.itens.map((i) => ({
78
+ name: i.rotulo,
79
+ value: i.valor,
80
+ checked: i.marcado ?? false,
81
+ })),
82
+ theme: {
83
+ icon: {
84
+ checked: pintar("◉", "azulClaro", temCor()),
85
+ unchecked: pintar("◯", "cinza", temCor()),
86
+ cursor: pintar("❯", "azulClaro", temCor()),
87
+ },
88
+ style: {
89
+ // A dica de teclas em portugues: o padrao do inquirer é em
90
+ // ingles, e o resto do CLI inteiro fala portugues.
91
+ keysHelpTip: () => pintar("setas navegam · espaco marca · enter confirma", "cinza", temCor()),
92
+ },
93
+ },
94
+ // O menu inteiro cabe na tela: a lista tem seis itens e rolar
95
+ // esconderia justamente a comparação entre elas.
96
+ pageSize: Math.max(m.itens.length, 6),
97
+ });
98
+ }
99
+ catch (e) {
100
+ if (cancelou(e))
101
+ return undefined;
102
+ throw e;
103
+ }
104
+ }),
105
+ };
23
106
  }
24
107
  /**
25
108
  * Um perguntador de roteiro, para teste: consome respostas em ordem.
26
109
  *
27
- * Acabaram as respostas do roteiro? Devolve string vazia — que todo passo do
28
- * wizard trata como "aceito o padrão". Um teste que esquece uma resposta
29
- * termina com o padrão em vez de travar o processo esperando `stdin`.
110
+ * Acabaram as respostas? Devolve string vazia — que todo passo trata como
111
+ * "aceito o padrão". Um teste que esquece uma resposta termina com o padrão
112
+ * em vez de travar o processo esperando `stdin`.
113
+ *
114
+ * Por padrão NÃO navega, porque o roteiro testa o caminho por número. Passe
115
+ * `marcacoes` para testar o caminho navegável: cada entrada é o que a pessoa
116
+ * teria marcado naquele menu.
30
117
  */
31
- export function perguntadorDeRoteiro(respostas) {
118
+ export function perguntadorDeRoteiro(respostas, marcacoes) {
32
119
  const restantes = [...respostas];
120
+ const marcadas = marcacoes === undefined ? undefined : [...marcacoes];
33
121
  let escrito = "";
34
- return {
122
+ const p = {
35
123
  linha: (rotulo) => {
36
124
  escrito += rotulo;
37
125
  return Promise.resolve(restantes.shift() ?? "");
38
126
  },
127
+ confirmar: (rotulo, padrao) => {
128
+ escrito += rotulo;
129
+ const r = restantes.shift();
130
+ return Promise.resolve(r === undefined || r === "" ? padrao : interpretarSimNao(r, padrao));
131
+ },
39
132
  escrever: (texto) => {
40
133
  escrito += texto;
41
134
  },
42
135
  fechar: () => { },
43
136
  escrito: () => escrito,
44
137
  };
138
+ if (marcadas !== undefined) {
139
+ p.marcar = (m) => {
140
+ escrito += m.titulo;
141
+ for (const i of m.itens)
142
+ escrito += `\n${i.rotulo}`;
143
+ const proxima = marcadas.shift();
144
+ return Promise.resolve(proxima === undefined ? [] : [...proxima]);
145
+ };
146
+ }
147
+ return p;
45
148
  }
46
149
  /**
47
150
  * Lê uma escolha múltipla por número: `1,3` ou `1 3`.
@@ -1 +1 @@
1
- {"version":3,"file":"perguntar.js","sourceRoot":"","sources":["../../src/cli/perguntar.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"perguntar.js","sourceRoot":"","sources":["../../src/cli/perguntar.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * A identidade visual do CLI no terminal.
3
+ *
4
+ * Cor aqui é enfeite, nunca informação: todo texto continua legível sem
5
+ * nenhum código ANSI. É o que mantém a saída utilizável em log, em pipe e
6
+ * em terminal que não suporta cor — e é por isso que `pintar` devolve o
7
+ * texto cru quando a cor está desligada, em vez de um fallback diferente.
8
+ */
9
+ /**
10
+ * Respeita NO_COLOR (no-color.org) e FORCE_COLOR, nesta ordem.
11
+ *
12
+ * Sem TTY não há cor: escrever ANSI num pipe suja o arquivo de quem
13
+ * redirecionou a saída.
14
+ */
15
+ export declare function temCor(env?: NodeJS.ProcessEnv, tty?: boolean): boolean;
16
+ type Estilo = "azul" | "azulClaro" | "cinza" | "negrito" | "branco";
17
+ export declare function pintar(texto: string, estilo: Estilo, cor?: boolean): string;
18
+ /**
19
+ * O bloco de abertura do `init`.
20
+ *
21
+ * O desenho é feito com meio-bloco (▀▄) para o logotipo caber em poucas
22
+ * linhas sem virar arte ASCII ilegível — a intenção é enquadrar o comando,
23
+ * não ocupar a tela inteira.
24
+ */
25
+ export declare function hero(versao: string, cor?: boolean): string;
26
+ /** Linha de seção, para separar as etapas do wizard sem poluir. */
27
+ export declare function secao(titulo: string, cor?: boolean): string;
28
+ /** O fecho do init, quando deu certo. */
29
+ export declare function sucesso(linhas: readonly string[], cor?: boolean): string;
30
+ export {};
@@ -0,0 +1,73 @@
1
+ /**
2
+ * A identidade visual do CLI no terminal.
3
+ *
4
+ * Cor aqui é enfeite, nunca informação: todo texto continua legível sem
5
+ * nenhum código ANSI. É o que mantém a saída utilizável em log, em pipe e
6
+ * em terminal que não suporta cor — e é por isso que `pintar` devolve o
7
+ * texto cru quando a cor está desligada, em vez de um fallback diferente.
8
+ */
9
+ const ESC = "[";
10
+ /**
11
+ * Respeita NO_COLOR (no-color.org) e FORCE_COLOR, nesta ordem.
12
+ *
13
+ * Sem TTY não há cor: escrever ANSI num pipe suja o arquivo de quem
14
+ * redirecionou a saída.
15
+ */
16
+ export function temCor(env = process.env, tty = process.stdout.isTTY === true) {
17
+ if (env["NO_COLOR"] !== undefined && env["NO_COLOR"] !== "")
18
+ return false;
19
+ if (env["FORCE_COLOR"] !== undefined && env["FORCE_COLOR"] !== "0")
20
+ return true;
21
+ if (env["TERM"] === "dumb")
22
+ return false;
23
+ return tty;
24
+ }
25
+ const CODIGOS = {
26
+ // O azul do expxdev. 256 cores em vez de 16: o azul básico do terminal
27
+ // varia demais entre temas, e a marca precisa ser a mesma em todos.
28
+ azul: "38;5;33",
29
+ azulClaro: "38;5;75",
30
+ cinza: "38;5;245",
31
+ negrito: "1",
32
+ branco: "38;5;255",
33
+ };
34
+ export function pintar(texto, estilo, cor = temCor()) {
35
+ if (!cor)
36
+ return texto;
37
+ return `${ESC}${CODIGOS[estilo]}m${texto}${ESC}0m`;
38
+ }
39
+ /**
40
+ * O bloco de abertura do `init`.
41
+ *
42
+ * O desenho é feito com meio-bloco (▀▄) para o logotipo caber em poucas
43
+ * linhas sem virar arte ASCII ilegível — a intenção é enquadrar o comando,
44
+ * não ocupar a tela inteira.
45
+ */
46
+ export function hero(versao, cor = temCor()) {
47
+ const a = (t) => pintar(t, "azul", cor);
48
+ const c = (t) => pintar(t, "azulClaro", cor);
49
+ const g = (t) => pintar(t, "cinza", cor);
50
+ const b = (t) => pintar(t, "negrito", cor);
51
+ return [
52
+ "",
53
+ ` ${a("███████╗")}${c("██╗ ██╗")}${a("██████╗ ")}${c("██╗ ██╗")} ${g("dev")}`,
54
+ ` ${a("██╔════╝")}${c("╚██╗██╔╝")}${a("██╔══██╗")}${c("╚██╗██╔╝")}`,
55
+ ` ${a("█████╗ ")}${c(" ╚███╔╝ ")}${a("██████╔╝")}${c(" ╚███╔╝ ")}`,
56
+ ` ${a("██╔══╝ ")}${c(" ██╔██╗ ")}${a("██╔═══╝ ")}${c(" ██╔██╗ ")}`,
57
+ ` ${a("███████╗")}${c("██╔╝ ██╗")}${a("██║ ")}${c("██╔╝ ██╗")}`,
58
+ ` ${a("╚══════╝")}${c("╚═╝ ╚═╝")}${a("╚═╝ ")}${c("╚═╝ ╚═╝")}`,
59
+ "",
60
+ ` ${b("o metodo Expx no seu projeto")} ${g(`v${versao}`)}`,
61
+ "",
62
+ ].join("\n");
63
+ }
64
+ /** Linha de seção, para separar as etapas do wizard sem poluir. */
65
+ export function secao(titulo, cor = temCor()) {
66
+ return `\n${pintar("▸", "azulClaro", cor)} ${pintar(titulo, "negrito", cor)}\n`;
67
+ }
68
+ /** O fecho do init, quando deu certo. */
69
+ export function sucesso(linhas, cor = temCor()) {
70
+ const marca = pintar("✓", "azulClaro", cor);
71
+ return `\n${marca} ${linhas.join(`\n `)}\n`;
72
+ }
73
+ //# sourceMappingURL=visual.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"visual.js","sourceRoot":"","sources":["../../src/cli/visual.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { type OpcoesInitCli } from "./init-flags.js";
2
- import { type Perguntador } from "./perguntar.js";
2
+ import { interpretarSimNao, type Perguntador } from "./perguntar.js";
3
3
  /**
4
4
  * As quatro perguntas do `init` interativo (especificação, promptcli1.md:51-68).
5
5
  *
@@ -10,6 +10,11 @@ import { type Perguntador } from "./perguntar.js";
10
10
  *
11
11
  * Toda pergunta respeita o que já veio por flag: quem passou `--harness` não é
12
12
  * perguntado de novo. Isso permite responder metade por flag e metade na mão.
13
+ *
14
+ * Há dois modos de responder. O padrão é navegar e marcar com as setas; onde
15
+ * isso não funciona — CI, pipe, `TERM=dumb` — o mesmo wizard cai para a
16
+ * escolha por número, que não exige nada do terminal. Os dois produzem a
17
+ * mesma seleção, e é o `Perguntador` que decide qual está disponível.
13
18
  */
14
19
  export type ResultadoWizard = {
15
20
  ok: true;
@@ -19,3 +24,4 @@ export type ResultadoWizard = {
19
24
  erro: string;
20
25
  };
21
26
  export declare function executarWizard(p: Perguntador, parciais: OpcoesInitCli, raiz: string): Promise<ResultadoWizard>;
27
+ export { interpretarSimNao };