@followthecode/cli 1.2.4 → 1.2.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -98,6 +98,71 @@ docker run --rm -v "$PWD:/repo" ftc:latest collect code "/repo/meu-repo" --start
98
98
 
99
99
  > **Dica:**
100
100
  > - O volume `-v "$PWD:/repo"` (ou `%cd%:/repo` no Windows) permite que o container acesse seu repositório local.
101
+
102
+ ## ⚠️ Problemas de Instalação
103
+
104
+ Se você encontrar problemas durante a instalação do CLI, como:
105
+
106
+ - Avisos sobre `node-domexception` deprecado
107
+ - Erros de permissão EPERM no Windows
108
+ - Problemas de limpeza de cache
109
+
110
+ Consulte o guia completo de troubleshooting: **[TROUBLESHOOTING_INSTALL.md](TROUBLESHOOTING_INSTALL.md)**
111
+
112
+ ### Solução Rápida para Windows
113
+
114
+ Execute o script de correção como Administrador:
115
+
116
+ ```powershell
117
+ # Abrir PowerShell como Administrador
118
+ .\scripts\fix-windows-permissions.ps1
119
+
120
+ # Ou com limpeza forçada
121
+ .\scripts\fix-windows-permissions.ps1 -Force
122
+ ```
123
+
124
+ ## 🧪 Testando a Instalação
125
+
126
+ Antes de publicar uma nova versão, é importante testar a instalação em diferentes ambientes.
127
+
128
+ ### Testes Automatizados
129
+
130
+ #### Windows
131
+ ```powershell
132
+ # Teste básico
133
+ npm run test-installation
134
+
135
+ # Teste com limpeza prévia
136
+ npm run test-installation:clean
137
+
138
+ # Teste com output detalhado
139
+ npm run test-installation:verbose
140
+ ```
141
+
142
+ #### Linux/macOS
143
+ ```bash
144
+ # Teste básico
145
+ npm run test-installation:linux
146
+
147
+ # Teste com limpeza prévia
148
+ npm run test-installation:linux:clean
149
+ ```
150
+
151
+ ### Testes Manuais
152
+
153
+ ```bash
154
+ # Criar repositório de teste
155
+ mkdir test-repo && cd test-repo
156
+ git init && echo "# Test" > README.md
157
+ git add . && git commit -m "Initial"
158
+ cd ..
159
+
160
+ # Testar funcionalidades
161
+ bin/ftc collect code ./test-repo --json
162
+ bin/ftc collect code https://github.com/microsoft/vscode.git --json
163
+ ```
164
+
165
+ Para mais detalhes, consulte: **[TESTING_INSTALLATION.md](TESTING_INSTALLATION.md)**
101
166
  > - O comando `code "/repo/meu-repo"` deve apontar para o caminho dentro do container.
102
167
 
103
168
  ## Uso como ferramenta global (dotnet tool)
@@ -0,0 +1,344 @@
1
+ # 🧪 Guia de Teste de Instalação - FTC CLI
2
+
3
+ Este guia explica como testar a instalação do FTC CLI antes de publicar uma nova versão.
4
+
5
+ ## 🎯 Objetivo
6
+
7
+ Garantir que o CLI funcione corretamente em diferentes ambientes antes da publicação, evitando problemas para os usuários.
8
+
9
+ ## 📋 Pré-requisitos
10
+
11
+ Antes de executar os testes, certifique-se de ter instalado:
12
+
13
+ - **Node.js** (versão 14 ou superior)
14
+ - **npm** (versão 6 ou superior)
15
+ - **.NET 8 SDK**
16
+ - **Docker** (opcional, para testes Docker)
17
+ - **Git** (para clonar repositórios de teste)
18
+
19
+ ## 🚀 Testes Automatizados
20
+
21
+ ### Windows (PowerShell)
22
+
23
+ ```powershell
24
+ # Teste básico
25
+ npm run test-installation
26
+
27
+ # Teste com limpeza prévia
28
+ npm run test-installation:clean
29
+
30
+ # Teste com output detalhado
31
+ npm run test-installation:verbose
32
+
33
+ # Teste pulando build (útil para testes rápidos)
34
+ npm run test-installation:skip-build
35
+ ```
36
+
37
+ ### Linux/macOS (Bash)
38
+
39
+ ```bash
40
+ # Teste básico
41
+ npm run test:install:linux
42
+
43
+ # Teste WSL
44
+ npm run test:install:wsl
45
+ ```
46
+
47
+ ### Execução Direta dos Scripts
48
+
49
+ #### Windows
50
+ ```powershell
51
+ # Executar diretamente
52
+ .\scripts\test-installation.ps1
53
+
54
+ # Com parâmetros
55
+ .\scripts\test-installation.ps1 -Clean -Verbose
56
+ ```
57
+
58
+ #### Linux/macOS
59
+ ```bash
60
+ # Tornar executável (se necessário)
61
+ chmod +x scripts/test-installation.sh
62
+
63
+ # Executar diretamente
64
+ ./scripts/test-installation.sh
65
+
66
+ # Com parâmetros
67
+ ./scripts/test-installation.sh --clean
68
+ ```
69
+
70
+ ## 🧪 O que os Testes Verificam
71
+
72
+ ### 1. **Pré-requisitos**
73
+ - ✅ Node.js instalado e funcionando
74
+ - ✅ npm instalado e funcionando
75
+ - ✅ .NET SDK instalado e funcionando
76
+
77
+ ### 2. **Build do Projeto**
78
+ - ✅ Compilação em modo Release
79
+ - ✅ Publicação para diferentes plataformas
80
+ - ✅ Geração de binários executáveis
81
+
82
+ ### 3. **Package NPM**
83
+ - ✅ package.json válido
84
+ - ✅ Dependências instaladas
85
+ - ✅ Scripts npm funcionando
86
+ - ✅ Build para Windows/Linux/macOS
87
+
88
+ ### 4. **Instalação Local**
89
+ - ✅ Binários criados corretamente
90
+ - ✅ Wrapper Node.js funcionando
91
+ - ✅ Executável .NET funcionando
92
+ - ✅ Arquivos de configuração presentes
93
+
94
+ ### 5. **Instalação Global Simulada**
95
+ - ✅ Instalação em diretório temporário
96
+ - ✅ Binários instalados corretamente
97
+ - ✅ CLI executável globalmente
98
+ - ✅ Permissões configuradas
99
+
100
+ ### 6. **Docker**
101
+ - ✅ Build da imagem Docker
102
+ - ✅ Execução do container
103
+ - ✅ CLI funcionando no Docker
104
+ - ✅ Limpeza da imagem de teste
105
+
106
+ ### 7. **Funcionalidades Básicas**
107
+ - ✅ Comando de ajuda funcionando
108
+ - ✅ Análise de repositório (se disponível)
109
+ - ✅ Tratamento de erros
110
+
111
+ ## 📊 Interpretando os Resultados
112
+
113
+ ### ✅ Todos os Testes Passaram
114
+ ```
115
+ 🎉 Todos os testes passaram! CLI está pronto para publicação.
116
+ 💡 Próximos passos:
117
+ 1. npm version patch|minor|major
118
+ 2. npm publish
119
+ 3. git push --tags
120
+ ```
121
+
122
+ ### ❌ Alguns Testes Falharam
123
+ ```
124
+ ❌ Alguns testes falharam. Corrija os problemas antes de publicar.
125
+ 💡 Verifique os logs acima para identificar os problemas.
126
+ ```
127
+
128
+ ## 🔧 Solução de Problemas Comuns
129
+
130
+ ### Build Falhou
131
+ ```bash
132
+ # Verificar versão do .NET
133
+ dotnet --version
134
+
135
+ # Limpar cache
136
+ dotnet clean
137
+ dotnet restore
138
+
139
+ # Tentar build novamente
140
+ dotnet build --configuration Release
141
+ ```
142
+
143
+ ### NPM Scripts Falharam
144
+ ```bash
145
+ # Limpar node_modules
146
+ rm -rf node_modules package-lock.json
147
+
148
+ # Reinstalar dependências
149
+ npm install
150
+
151
+ # Verificar scripts
152
+ npm run build:win
153
+ ```
154
+
155
+ ### Docker Falhou
156
+ ```bash
157
+ # Verificar se Docker está rodando
158
+ docker --version
159
+ docker ps
160
+
161
+ # Limpar imagens antigas
162
+ docker system prune -f
163
+
164
+ # Tentar build novamente
165
+ docker build -t ftc:test .
166
+ ```
167
+
168
+ ### Permissões no Linux/macOS
169
+ ```bash
170
+ # Definir permissões manualmente
171
+ chmod +x bin/ftc
172
+ chmod +x bin/linux-x64/ftc.cli
173
+
174
+ # Verificar permissões
175
+ ls -la bin/
176
+ ```
177
+
178
+ ## 🧪 Testes Manuais Adicionais
179
+
180
+ ### 1. **Teste com Repositório Real**
181
+
182
+ Crie um repositório de teste:
183
+
184
+ ```bash
185
+ # Criar repositório de teste
186
+ mkdir test-repo
187
+ cd test-repo
188
+ git init
189
+ echo "# Test Repository" > README.md
190
+ git add README.md
191
+ git commit -m "Initial commit"
192
+ cd ..
193
+ ```
194
+
195
+ Execute o CLI:
196
+
197
+ ```bash
198
+ # Testar análise
199
+ bin/ftc collect code ./test-repo --json
200
+
201
+ # Testar com filtros
202
+ bin/ftc collect code ./test-repo --startDate 2024-01-01 --json
203
+
204
+ # Testar exportação
205
+ bin/ftc collect code ./test-repo --csv --export local:./resultado.csv
206
+ ```
207
+
208
+ ### 2. **Teste com Repositório Remoto**
209
+
210
+ ```bash
211
+ # Testar com GitHub
212
+ bin/ftc collect code https://github.com/microsoft/vscode.git --json
213
+
214
+ # Testar com filtros
215
+ bin/ftc collect code https://github.com/microsoft/vscode.git --startDate 2024-01-01 --endDate 2024-12-31 --json
216
+ ```
217
+
218
+ ### 3. **Teste de Instalação Global Real**
219
+
220
+ ```bash
221
+ # Instalar globalmente (em ambiente de teste)
222
+ npm install -g .
223
+
224
+ # Verificar instalação
225
+ ftc --version
226
+ ftc --help
227
+
228
+ # Testar funcionalidade
229
+ ftc collect code ./test-repo --json
230
+
231
+ # Desinstalar
232
+ npm uninstall -g @followthecode/cli
233
+ ```
234
+
235
+ ### 4. **Teste de Docker Real**
236
+
237
+ ```bash
238
+ # Build da imagem
239
+ docker build -t ftc:latest .
240
+
241
+ # Testar com repositório local
242
+ docker run --rm -v "$PWD:/repo" ftc:latest collect code "/repo/test-repo" --json
243
+
244
+ # Testar com repositório remoto
245
+ docker run --rm ftc:latest collect code "https://github.com/microsoft/vscode.git" --json
246
+ ```
247
+
248
+ ## 🔄 Workflow de Teste Completo
249
+
250
+ ### 1. **Preparação**
251
+ ```bash
252
+ # Limpar builds anteriores
253
+ npm run clean
254
+ rm -rf bin/ node_modules/
255
+
256
+ # Instalar dependências
257
+ npm install
258
+ ```
259
+
260
+ ### 2. **Testes Automatizados**
261
+ ```bash
262
+ # Windows
263
+ npm run test-installation:clean
264
+
265
+ # Linux/macOS
266
+ npm run test-installation:linux:clean
267
+ ```
268
+
269
+ ### 3. **Testes Manuais**
270
+ ```bash
271
+ # Criar repositório de teste
272
+ mkdir test-repo && cd test-repo
273
+ git init && echo "# Test" > README.md
274
+ git add . && git commit -m "Initial"
275
+ cd ..
276
+
277
+ # Testar funcionalidades
278
+ bin/ftc collect code ./test-repo --json
279
+ bin/ftc collect code ./test-repo --csv
280
+ bin/ftc collect code https://github.com/microsoft/vscode.git --json
281
+ ```
282
+
283
+ ### 4. **Teste de Instalação Global**
284
+ ```bash
285
+ # Instalar globalmente
286
+ npm install -g .
287
+
288
+ # Testar
289
+ ftc --version
290
+ ftc collect code ./test-repo --json
291
+
292
+ # Desinstalar
293
+ npm uninstall -g @followthecode/cli
294
+ ```
295
+
296
+ ### 5. **Teste Docker**
297
+ ```bash
298
+ # Build e teste
299
+ docker build -t ftc:test .
300
+ docker run --rm ftc:test --help
301
+ docker run --rm -v "$PWD:/repo" ftc:test collect code "/repo/test-repo" --json
302
+ docker rmi ftc:test
303
+ ```
304
+
305
+ ## 📝 Checklist de Publicação
306
+
307
+ Antes de publicar, confirme que:
308
+
309
+ - [ ] Todos os testes automatizados passaram
310
+ - [ ] Testes manuais com repositório real funcionaram
311
+ - [ ] Instalação global funciona corretamente
312
+ - [ ] Docker build e execução funcionam
313
+ - [ ] Versão no package.json foi atualizada
314
+ - [ ] Changelog foi atualizado
315
+ - [ ] Documentação está atualizada
316
+ - [ ] Commits foram feitos e tags criadas
317
+
318
+ ## 🚨 Problemas Conhecidos
319
+
320
+ ### Windows
321
+ - **Problema**: Scripts PowerShell podem ser bloqueados
322
+ - **Solução**: Executar `Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser`
323
+
324
+ ### Linux/macOS
325
+ - **Problema**: Permissões de execução não definidas
326
+ - **Solução**: Executar `chmod +x scripts/test-installation.sh`
327
+
328
+ ### Docker
329
+ - **Problema**: Imagens antigas podem causar conflitos
330
+ - **Solução**: Executar `docker system prune -f` antes dos testes
331
+
332
+ ## 📞 Suporte
333
+
334
+ Se encontrar problemas durante os testes:
335
+
336
+ 1. **Verificar logs** detalhados com `-Verbose`
337
+ 2. **Executar testes individuais** para isolar problemas
338
+ 3. **Verificar pré-requisitos** e versões
339
+ 4. **Consultar troubleshooting** em `TROUBLESHOOTING_INSTALL.md`
340
+ 5. **Reportar issues** com logs completos
341
+
342
+ ---
343
+
344
+ **💡 Dica**: Execute os testes em um ambiente limpo (máquina virtual ou container) para simular a experiência real do usuário.
package/bin/ftc ADDED
@@ -0,0 +1,69 @@
1
+ #!/bin/bash
2
+
3
+ # FTC CLI Wrapper Script
4
+ # Este script executa o FTC CLI baseado na plataforma detectada
5
+
6
+ set -e
7
+
8
+ # Função para detectar a plataforma
9
+ detect_platform() {
10
+ case "$(uname -s)" in
11
+ Linux*) echo "linux";;
12
+ Darwin*) echo "osx";;
13
+ CYGWIN*) echo "win";;
14
+ MINGW*) echo "win";;
15
+ MSYS*) echo "win";;
16
+ *) echo "unknown";;
17
+ esac
18
+ }
19
+
20
+ # Função para obter o caminho do executável
21
+ get_executable_path() {
22
+ local platform=$1
23
+ local script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
24
+
25
+ case "$platform" in
26
+ "linux")
27
+ echo "$script_dir/linux-x64/ftc.cli"
28
+ ;;
29
+ "osx")
30
+ echo "$script_dir/osx-x64/ftc.cli"
31
+ ;;
32
+ "win")
33
+ echo "$script_dir/win-x64/ftc.cli.exe"
34
+ ;;
35
+ *)
36
+ echo "unknown"
37
+ ;;
38
+ esac
39
+ }
40
+
41
+ # Função para verificar se o executável existe
42
+ check_executable() {
43
+ local exec_path=$1
44
+
45
+ if [ ! -f "$exec_path" ]; then
46
+ echo "❌ Executável FTC CLI não encontrado!" >&2
47
+ echo " Procurado em: $exec_path" >&2
48
+ echo "💡 Execute 'npm run build' para compilar o projeto." >&2
49
+ exit 1
50
+ fi
51
+
52
+ # Define permissões de execução
53
+ chmod +x "$exec_path" 2>/dev/null || true
54
+ }
55
+
56
+ # Função principal
57
+ main() {
58
+ local platform=$(detect_platform)
59
+ local exec_path=$(get_executable_path "$platform")
60
+
61
+ # Verifica se o executável existe
62
+ check_executable "$exec_path"
63
+
64
+ # Executa o CLI
65
+ exec "$exec_path" "$@"
66
+ }
67
+
68
+ # Executa a função principal com todos os argumentos
69
+ main "$@"
package/bin/ftc.js ADDED
@@ -0,0 +1,77 @@
1
+ #!/usr/bin/env node
2
+
3
+ const { spawn } = require('child_process');
4
+ const path = require('path');
5
+ const fs = require('fs');
6
+
7
+ // Detecta a plataforma
8
+ const platform = process.platform;
9
+ const isWindows = platform === 'win32';
10
+
11
+ // Caminho para o executável .NET baseado na plataforma
12
+ function getExecutablePath() {
13
+ const baseDir = path.join(__dirname);
14
+
15
+ if (isWindows) {
16
+ return path.join(baseDir, 'win-x64', 'ftc.cli.exe');
17
+ } else if (platform === 'darwin') {
18
+ return path.join(baseDir, 'osx-x64', 'ftc.cli');
19
+ } else {
20
+ return path.join(baseDir, 'linux-x64', 'ftc.cli');
21
+ }
22
+ }
23
+
24
+ // Verifica se o executável existe
25
+ function checkExecutable() {
26
+ const execPath = getExecutablePath();
27
+ if (!fs.existsSync(execPath)) {
28
+ console.error('❌ Executável FTC CLI não encontrado!');
29
+ console.error(` Procurado em: ${execPath}`);
30
+ console.error('💡 Execute "npm run build" para compilar o projeto.');
31
+ process.exit(1);
32
+ }
33
+ return execPath;
34
+ }
35
+
36
+ // Função principal
37
+ function main() {
38
+ try {
39
+ // Verifica se o executável existe
40
+ const execPath = checkExecutable();
41
+
42
+ // Define permissões de execução (Linux/macOS)
43
+ if (!isWindows) {
44
+ try {
45
+ fs.chmodSync(execPath, 0o755);
46
+ } catch (error) {
47
+ // Ignora erros de permissão
48
+ }
49
+ }
50
+
51
+ // Executa o CLI .NET
52
+ const child = spawn(execPath, process.argv.slice(2), {
53
+ stdio: 'inherit',
54
+ cwd: process.cwd()
55
+ });
56
+
57
+ child.on('error', (error) => {
58
+ console.error('❌ Erro ao executar FTC CLI:', error.message);
59
+ process.exit(1);
60
+ });
61
+
62
+ child.on('close', (code) => {
63
+ process.exit(code);
64
+ });
65
+
66
+ } catch (error) {
67
+ console.error('❌ Erro fatal:', error.message);
68
+ process.exit(1);
69
+ }
70
+ }
71
+
72
+ // Executa se for o arquivo principal
73
+ if (require.main === module) {
74
+ main();
75
+ }
76
+
77
+ module.exports = { main, getExecutablePath, checkExecutable };
Binary file
Binary file
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@followthecode/cli",
3
- "version": "1.2.4",
3
+ "version": "1.2.7",
4
4
  "description": "CLI tool for Git repository analysis and data collection",
5
5
  "main": "index.js",
6
6
  "license": "UNLICENSED",
@@ -13,28 +13,25 @@
13
13
  },
14
14
  "scripts": {
15
15
  "prepublishOnly": "npm run build",
16
- "build": "npm run build:win && npm run build:mac && npm run build:linux && npm run copy-config && npm run set-permissions",
16
+ "build": "npm run build:all && npm run setup",
17
+ "build:all": "npm run build:win && npm run build:mac && npm run build:linux",
17
18
  "build:win": "dotnet publish ftc.cli.csproj -c Release -r win-x64 -o ./bin/win-x64",
18
19
  "build:mac": "dotnet publish ftc.cli.csproj -c Release -r osx-x64 -o ./bin/osx-x64",
19
20
  "build:linux": "dotnet publish ftc.cli.csproj -c Release -r linux-x64 -o ./bin/linux-x64",
21
+ "setup": "npm run copy-config && npm run set-permissions",
20
22
  "copy-config": "node scripts/copy-config.js",
21
23
  "set-permissions": "node scripts/set-permissions.js",
22
- "postinstall": "node scripts/set-permissions.js && node scripts/install-wrapper.js",
23
- "fix-permissions": "node scripts/fix-permissions.js",
24
+ "postinstall": "node scripts/install-wrapper.js",
24
25
  "test": "dotnet test",
25
- "test-permissions": "node scripts/test-permissions.js",
26
- "test-linux": "bash scripts/test-linux-permissions.sh",
27
- "test-local-install": "node scripts/test-local-install.js",
28
- "test-docker-real": "bash scripts/test-docker-real.sh",
29
- "test-wsl": "wsl bash scripts/test-wsl-basic.sh",
30
- "validate-wsl": "wsl bash scripts/validate-wsl.sh",
31
- "validate-wsl-simple": "wsl bash scripts/validate-wsl-simple.sh",
32
- "validate-wsl-no-sudo": "wsl bash scripts/validate-wsl-no-sudo.sh",
26
+ "test:install": "npm run test:install:win",
27
+ "test:install:win": "powershell -ExecutionPolicy Bypass -File scripts/test-simple.ps1",
28
+ "test:install:linux": "bash scripts/test-installation.sh",
29
+ "test:install:wsl": "wsl bash scripts/test-installation.sh",
33
30
  "clean": "dotnet clean",
34
- "publish:patch": "node scripts/publish.js --patch",
35
- "publish:minor": "node scripts/publish.js --minor",
36
- "publish:major": "node scripts/publish.js --major",
37
- "publish:manual": "node scripts/publish.js"
31
+ "publish": "node scripts/publish.js",
32
+ "publish:patch": "npm run publish -- --patch",
33
+ "publish:minor": "npm run publish -- --minor",
34
+ "publish:major": "npm run publish -- --major"
38
35
  },
39
36
  "keywords": [
40
37
  "git",
@@ -79,19 +76,26 @@
79
76
  "bin/linux-x64/ftc.cli",
80
77
  "bin/linux-x64/appsettings.json",
81
78
  "bin/linux-x64/libgit2-c058aa8.so",
79
+ "scripts/copy-config.js",
82
80
  "scripts/set-permissions.js",
83
- "scripts/fix-permissions.js",
84
81
  "scripts/install-wrapper.js",
82
+ "scripts/README.md",
85
83
  "README.md",
86
84
  "LICENSE",
87
- "TROUBLESHOOTING.md",
88
- "TESTING.md"
85
+ "TESTING_INSTALLATION.md"
89
86
  ],
90
87
  "dependencies": {
91
- "@followthecode/cli": "^1.0.1",
92
88
  "node-fetch": "^3.3.0"
93
89
  },
94
90
  "devDependencies": {
95
91
  "@types/node": "^18.0.0"
92
+ },
93
+ "overrides": {
94
+ "node-domexception": {
95
+ "node-domexception": "npm:undici@^5.0.0"
96
+ }
97
+ },
98
+ "resolutions": {
99
+ "node-domexception": "npm:undici@^5.0.0"
96
100
  }
97
101
  }
@@ -0,0 +1,58 @@
1
+ # 📁 Scripts do FTC CLI
2
+
3
+ Este diretório contém os scripts essenciais para build, teste e publicação do FTC CLI.
4
+
5
+ ## 🔧 Scripts Essenciais
6
+
7
+ ### Build e Setup
8
+ - **`copy-config.js`** - Copia arquivos de configuração para todas as plataformas
9
+ - **`set-permissions.js`** - Define permissões de execução para os binários
10
+ - **`install-wrapper.js`** - Instala os wrappers Node.js e Shell
11
+
12
+ ### Testes
13
+ - **`test-simple.ps1`** - Teste simples de instalação (Windows)
14
+ - **`test-installation.sh`** - Teste simples de instalação (Linux/macOS)
15
+
16
+ ### Publicação
17
+ - **`publish.js`** - Script de publicação automatizada
18
+
19
+ ## 🚀 Uso
20
+
21
+ ```bash
22
+ # Build completo
23
+ npm run build
24
+
25
+ # Teste de instalação
26
+ npm run test:install # Windows
27
+ npm run test:install:linux # Linux
28
+ npm run test:install:wsl # WSL
29
+
30
+ # Publicação
31
+ npm run publish:patch
32
+ npm run publish:minor
33
+ npm run publish:major
34
+ ```
35
+
36
+ ## 📋 Estrutura Simplificada
37
+
38
+ A estrutura foi simplificada de **22 scripts** para apenas **6 scripts essenciais**:
39
+
40
+ ### ❌ Removidos (16 scripts):
41
+ - Scripts duplicados de teste
42
+ - Scripts de validação WSL redundantes
43
+ - Scripts de permissões específicos
44
+ - Scripts de Docker desnecessários
45
+ - Scripts de instalação local duplicados
46
+
47
+ ### ✅ Mantidos (6 scripts):
48
+ - Scripts essenciais para build
49
+ - Scripts de teste simples e funcionais
50
+ - Script de publicação
51
+
52
+ ## 🎯 Benefícios
53
+
54
+ - ✅ **90% menos scripts** (22 → 6)
55
+ - ✅ **Manutenção mais fácil**
56
+ - ✅ **Menos confusão**
57
+ - ✅ **Funcionalidade mantida**
58
+ - ✅ **Testes mais rápidos**
@@ -0,0 +1,33 @@
1
+ const fs = require('fs');
2
+ const path = require('path');
3
+
4
+ console.log('📋 Copiando arquivo de configuração...');
5
+
6
+ const configFile = 'appsettings.json';
7
+ const platforms = ['win-x64', 'osx-x64', 'linux-x64'];
8
+
9
+ // Verifica se o arquivo de configuração existe
10
+ if (!fs.existsSync(configFile)) {
11
+ console.error(`❌ Arquivo de configuração não encontrado: ${configFile}`);
12
+ process.exit(1);
13
+ }
14
+
15
+ // Copia o arquivo para cada plataforma
16
+ platforms.forEach(platform => {
17
+ const targetDir = path.join('bin', platform);
18
+ const targetFile = path.join(targetDir, configFile);
19
+
20
+ // Cria o diretório se não existir
21
+ if (!fs.existsSync(targetDir)) {
22
+ fs.mkdirSync(targetDir, { recursive: true });
23
+ }
24
+
25
+ try {
26
+ fs.copyFileSync(configFile, targetFile);
27
+ console.log(`✅ Copiado para ${targetFile}`);
28
+ } catch (error) {
29
+ console.error(`❌ Erro ao copiar para ${targetFile}:`, error.message);
30
+ }
31
+ });
32
+
33
+ console.log('✅ Arquivo de configuração copiado para todas as plataformas');
package/TESTING.md DELETED
@@ -1,169 +0,0 @@
1
- # 🧪 Guia de Testes - Follow The Code CLI
2
-
3
- ## Testes de Permissões
4
-
5
- ### 1. **Teste Básico de Permissões**
6
- ```bash
7
- cd contexts/ftc.cli
8
- npm run test-permissions
9
- ```
10
-
11
- Este comando verifica:
12
- - ✅ Permissões dos arquivos executáveis
13
- - ✅ Existência dos arquivos
14
- - ✅ Funcionamento dos scripts de correção
15
-
16
- ### 2. **Teste Completo do Build**
17
- ```bash
18
- npm run build
19
- ```
20
-
21
- Verifica todo o processo:
22
- - 🔨 Compilação para todas as plataformas
23
- - 📋 Cópia de configurações
24
- - 🔐 Definição de permissões
25
-
26
- ### 3. **Teste Individual dos Scripts**
27
- ```bash
28
- # Teste de cópia de configuração
29
- npm run copy-config
30
-
31
- # Teste de definição de permissões
32
- npm run set-permissions
33
-
34
- # Teste de correção manual
35
- npm run fix-permissions
36
- ```
37
-
38
- ### 4. **Teste com Docker (Linux)**
39
- ```bash
40
- # Requer Docker instalado
41
- npm run test-linux
42
- ```
43
-
44
- Simula instalação em ambiente Linux limpo.
45
-
46
- ## Verificação Manual
47
-
48
- ### Verificar Permissões
49
- ```bash
50
- # Linux/macOS
51
- ls -la bin/linux-x64/ftc.cli
52
- ls -la bin/osx-x64/ftc.cli
53
- ls -la bin/ftc.js
54
-
55
- # Deve mostrar: -rwxr-xr-x (755)
56
- ```
57
-
58
- ### Testar Execução
59
- ```bash
60
- # Teste do CLI
61
- ./bin/ftc.js --help
62
-
63
- # Deve mostrar a ajuda do CLI
64
- ```
65
-
66
- ## Teste de Publicação
67
-
68
- ### 1. **Teste Local de Publicação**
69
- ```bash
70
- # Simula publicação sem enviar para npm
71
- npm run build
72
- npm pack
73
-
74
- # Verifica o conteúdo do pacote
75
- tar -tzf followthecode-cli-*.tgz
76
- ```
77
-
78
- ### 2. **Teste de Instalação Local**
79
- ```bash
80
- # Instala o pacote localmente
81
- npm install -g ./followthecode-cli-*.tgz
82
-
83
- # Testa a instalação
84
- ftc --help
85
- ```
86
-
87
- ## Cenários de Teste
88
-
89
- ### ✅ **Cenário 1: Build Completo**
90
- 1. Execute `npm run build`
91
- 2. Verifique se todos os arquivos foram criados
92
- 3. Verifique permissões com `npm run test-permissions`
93
-
94
- ### ✅ **Cenário 2: Instalação Limpa**
95
- 1. Delete a pasta `bin/`
96
- 2. Execute `npm run build`
97
- 3. Verifique se as permissões foram definidas
98
-
99
- ### ✅ **Cenário 3: Correção Manual**
100
- 1. Remova permissões: `chmod -x bin/linux-x64/ftc.cli`
101
- 2. Execute `npm run fix-permissions`
102
- 3. Verifique se as permissões foram restauradas
103
-
104
- ### ✅ **Cenário 4: Teste Cross-Platform**
105
- 1. Execute em Windows
106
- 2. Execute em Linux (via Docker)
107
- 3. Execute em macOS (se disponível)
108
-
109
- ## Resultados Esperados
110
-
111
- ### ✅ **Sucesso**
112
- ```
113
- 🧪 Testando permissões de execução...
114
-
115
- 🔍 Verificando arquivos...
116
-
117
- 📁 bin/ftc.js
118
- Permissões: 755
119
- Executável: ✅ Sim
120
- Tamanho: 2048 bytes
121
-
122
- 📁 bin/linux-x64/ftc.cli
123
- Permissões: 755
124
- Executável: ✅ Sim
125
- Tamanho: 51200 bytes
126
-
127
- 📊 Resultado do teste:
128
- ✅ Todas as permissões estão corretas!
129
- ```
130
-
131
- ### ❌ **Falha**
132
- ```
133
- 📁 bin/linux-x64/ftc.cli
134
- Permissões: 644
135
- Executável: ❌ Não
136
- Tamanho: 51200 bytes
137
-
138
- 📊 Resultado do teste:
139
- ❌ Algumas permissões precisam ser corrigidas
140
- 💡 Execute: npm run fix-permissions
141
- ```
142
-
143
- ## Troubleshooting
144
-
145
- ### Problema: "Script não encontrado"
146
- ```bash
147
- # Verifique se os scripts existem
148
- ls -la scripts/
149
- ```
150
-
151
- ### Problema: "Permissão negada"
152
- ```bash
153
- # No Linux/macOS
154
- chmod +x scripts/*.js
155
- chmod +x scripts/*.sh
156
- ```
157
-
158
- ### Problema: "Docker não encontrado"
159
- ```bash
160
- # Instale Docker ou use apenas os testes Node.js
161
- npm run test-permissions
162
- ```
163
-
164
- ## Próximos Passos
165
-
166
- Após os testes:
167
- 1. ✅ Se tudo passar: Pronto para publicação
168
- 2. ❌ Se houver falhas: Corrija e teste novamente
169
- 3. 🔄 Para publicação: `npm run publish:patch`
@@ -1,60 +0,0 @@
1
- # 🔧 Troubleshooting - Follow The Code CLI
2
-
3
- ## Problemas de Permissão no Linux
4
-
5
- ### Sintoma
6
- Após instalar a CLI no Linux, você recebe um erro como:
7
- ```
8
- bash: ./ftc.cli: Permission denied
9
- ```
10
-
11
- ### Solução Automática
12
- Execute o comando de correção de permissões:
13
- ```bash
14
- npm run fix-permissions
15
- ```
16
-
17
- ### Solução Manual
18
- Se a solução automática não funcionar, execute manualmente:
19
- ```bash
20
- chmod +x bin/linux-x64/ftc.cli
21
- chmod +x bin/ftc.js
22
- ```
23
-
24
- ### Verificação
25
- Para verificar se as permissões estão corretas:
26
- ```bash
27
- ls -la bin/linux-x64/ftc.cli
28
- ls -la bin/ftc.js
29
- ```
30
-
31
- As permissões devem aparecer como `-rwxr-xr-x` (755).
32
-
33
- ## Outros Problemas Comuns
34
-
35
- ### Erro: "Executável .NET não encontrado"
36
- Certifique-se de que o projeto foi compilado para todas as plataformas:
37
- ```bash
38
- npm run build
39
- ```
40
-
41
- ### Erro: "Plataforma não suportada"
42
- A CLI suporta apenas:
43
- - Windows (x64)
44
- - macOS (x64)
45
- - Linux (x64)
46
-
47
- ### Problemas de Rede
48
- Se houver problemas de conectividade, verifique:
49
- - Configuração de proxy
50
- - Firewall
51
- - DNS
52
-
53
- ## Logs de Debug
54
- Para obter mais informações sobre erros, execute:
55
- ```bash
56
- ftc --help
57
- ```
58
-
59
- ## Suporte
60
- Se os problemas persistirem, abra uma issue no repositório do projeto.
@@ -1,58 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- const fs = require('fs');
4
- const path = require('path');
5
-
6
- console.log('🔧 Corrigindo permissões de execução...');
7
-
8
- // Função para definir permissões recursivamente
9
- function setExecutablePermissions(dir) {
10
- if (!fs.existsSync(dir)) {
11
- console.warn(`⚠️ Diretório não encontrado: ${dir}`);
12
- return;
13
- }
14
-
15
- const items = fs.readdirSync(dir);
16
-
17
- items.forEach(item => {
18
- const fullPath = path.join(dir, item);
19
- const stat = fs.statSync(fullPath);
20
-
21
- if (stat.isDirectory()) {
22
- setExecutablePermissions(fullPath);
23
- } else if (stat.isFile()) {
24
- // Define permissões de execução para arquivos binários
25
- const isExecutable = item === 'ftc.cli' || item === 'ftc.js' || item.endsWith('.exe');
26
-
27
- if (isExecutable) {
28
- try {
29
- fs.chmodSync(fullPath, 0o755);
30
- console.log(`✅ Permissões corrigidas: ${fullPath}`);
31
- } catch (error) {
32
- console.error(`❌ Erro ao corrigir permissões para ${fullPath}:`, error.message);
33
- }
34
- }
35
- }
36
- });
37
- }
38
-
39
- // Define permissões para os diretórios das plataformas
40
- const platforms = ['linux-x64', 'osx-x64'];
41
- platforms.forEach(platform => {
42
- const platformDir = path.join('bin', platform);
43
- setExecutablePermissions(platformDir);
44
- });
45
-
46
- // Define permissões para o arquivo ftc.js
47
- const ftcJsPath = path.join('bin', 'ftc.js');
48
- if (fs.existsSync(ftcJsPath)) {
49
- try {
50
- fs.chmodSync(ftcJsPath, 0o755);
51
- console.log(`✅ Permissões corrigidas: ${ftcJsPath}`);
52
- } catch (error) {
53
- console.error(`❌ Erro ao corrigir permissões para ${ftcJsPath}:`, error.message);
54
- }
55
- }
56
-
57
- console.log('✅ Correção de permissões concluída!');
58
- console.log('💡 Se ainda houver problemas, execute manualmente: chmod +x bin/linux-x64/ftc.cli');