@followthecode/cli 1.2.40 → 1.2.43

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
@@ -52,7 +52,7 @@ docker run --rm -v "%cd%:/repo" ftc:latest collect code "/repo/meu-repo" --json
52
52
  Você não precisa mapear volumes para repositórios remotos:
53
53
 
54
54
  ```sh
55
- docker run --rm ftc:latest collect code "https://github.com/usuario/repositorio.git" --json
55
+ docker run --rm ftc:latest collect code "https://github.com/exemplo/repositorio.git" --json
56
56
  ```
57
57
 
58
58
  ### 4. Exemplo com filtros de data
@@ -69,7 +69,7 @@ docker run --rm ftc:latest --help
69
69
 
70
70
  > **Resumo:**
71
71
  > - Sempre use `-v "$PWD:/repo"` (Linux/macOS) ou `-v "%cd%:/repo"` (Windows) para acessar repositórios locais.
72
- > - O caminho passado para `code` deve ser o caminho dentro do container, por exemplo, `"/repo/meu-repo"`.
72
+ > - O caminho passado para `collect code` deve ser o caminho dentro do container, por exemplo, `"/repo/meu-repo"`.
73
73
  > - Para repositórios remotos, basta passar a URL.
74
74
 
75
75
  ## Uso moderno via Docker CLI
@@ -88,7 +88,7 @@ docker run --rm -v "%cd%:/repo" ftc:latest collect code "/repo/meu-repo" --json
88
88
 
89
89
  ### Repositório remoto
90
90
  ```sh
91
- docker run --rm ftc:latest collect code "https://github.com/usuario/repositorio.git" --json
91
+ docker run --rm ftc:latest collect code "https://github.com/exemplo/repositorio.git" --json
92
92
  ```
93
93
 
94
94
  ### Com filtros de data
@@ -107,7 +107,7 @@ Se você encontrar problemas durante a instalação do CLI, como:
107
107
  - Erros de permissão EPERM no Windows
108
108
  - Problemas de limpeza de cache
109
109
 
110
- Consulte o guia completo de troubleshooting: **[TROUBLESHOOTING_INSTALL.md](TROUBLESHOOTING_INSTALL.md)**
110
+ Consulte a seção de troubleshooting abaixo.
111
111
 
112
112
  ### Solução Rápida para Windows
113
113
 
@@ -115,10 +115,10 @@ Execute o script de correção como Administrador:
115
115
 
116
116
  ```powershell
117
117
  # Abrir PowerShell como Administrador
118
- .\scripts\fix-windows-permissions.ps1
118
+ .\scripts\fix-permissions.ps1
119
119
 
120
120
  # Ou com limpeza forçada
121
- .\scripts\fix-windows-permissions.ps1 -Force
121
+ .\scripts\fix-permissions.ps1 -Force
122
122
  ```
123
123
 
124
124
  ## 🧪 Testando a Instalação
@@ -159,11 +159,11 @@ cd ..
159
159
 
160
160
  # Testar funcionalidades
161
161
  bin/ftc collect code ./test-repo --json
162
- bin/ftc collect code https://github.com/microsoft/vscode.git --json
162
+ bin/ftc collect code https://github.com/exemplo/repositorio.git --json
163
163
  ```
164
164
 
165
- Para mais detalhes, consulte: **[TESTING_INSTALLATION.md](TESTING_INSTALLATION.md)**
166
- > - O comando `code "/repo/meu-repo"` deve apontar para o caminho dentro do container.
165
+ Para mais detalhes, consulte a seção de testes abaixo.
166
+ > - O comando `collect code "/repo/meu-repo"` deve apontar para o caminho dentro do container.
167
167
 
168
168
  ## Uso como ferramenta global (dotnet tool)
169
169
 
@@ -182,7 +182,7 @@ ftc collect code "./caminho/para/meu-repo" --json
182
182
  Exemplo com repositório remoto e filtros:
183
183
 
184
184
  ```sh
185
- ftc collect code "https://github.com/usuario/repositorio.git" --startDate 2024-01-01 --endDate 2024-12-31 --json
185
+ ftc collect code "https://github.com/exemplo/repositorio.git" --startDate 2024-01-01 --endDate 2024-12-31 --json
186
186
  ```
187
187
 
188
188
  Para ajuda:
@@ -202,7 +202,7 @@ dotnet run -- collect code /caminho/para/repositorio
202
202
 
203
203
  #### Análise de repositório remoto
204
204
  ```bash
205
- dotnet run -- collect code https://github.com/usuario/repositorio.git
205
+ dotnet run -- collect code https://github.com/exemplo/repositorio.git
206
206
  ```
207
207
 
208
208
  #### Com filtros de data
@@ -239,19 +239,19 @@ scripts\docker-run.bat collect code C:\caminho\para\repositorio
239
239
  #### Análise de repositório remoto
240
240
  ```bash
241
241
  # Linux/macOS
242
- ./scripts/docker-run.sh collect code https://github.com/usuario/repositorio.git
242
+ ./scripts/docker-run.sh collect code https://github.com/exemplo/repositorio.git
243
243
 
244
244
  # Windows
245
- scripts\docker-run.bat collect code https://github.com/usuario/repositorio.git
245
+ scripts\docker-run.bat collect code https://github.com/exemplo/repositorio.git
246
246
  ```
247
247
 
248
248
  #### Com filtros e JSON
249
249
  ```bash
250
250
  # Linux/macOS
251
- ./scripts/docker-run.sh collect code /caminho/para/repositorio --startDate 2024-01-01 --json
251
+ ./scripts/docker-run.sh code /caminho/para/repositorio --startDate 2024-01-01 --json
252
252
 
253
253
  # Windows
254
- scripts\docker-run.bat collect code C:\caminho\para\repositorio --startDate 2024-01-01 --json
254
+ scripts\docker-run.bat code C:\caminho\para\repositorio --startDate 2024-01-01 --json
255
255
  ```
256
256
 
257
257
  #### Opções do Docker Runner
@@ -295,27 +295,27 @@ docker run --rm -v $(pwd)/repos:/repos:ro ftc:latest collect code /repos/meu-pro
295
295
  - Caminhos relativos: `./repositorio`, `../repositorio`
296
296
 
297
297
  ### Remotos
298
- - HTTPS: `https://github.com/usuario/repositorio.git`
299
- - HTTP: `http://github.com/usuario/repositorio.git`
300
- - SSH: `git@github.com/usuario/repositorio.git`
301
- - Git: `git://github.com/usuario/repositorio.git`
298
+ - HTTPS: `https://github.com/exemplo/repositorio.git`
299
+ - HTTP: `http://github.com/exemplo/repositorio.git`
300
+ - SSH: `git@github.com/exemplo/repositorio.git`
301
+ - Git: `git://github.com/exemplo/repositorio.git`
302
302
 
303
303
  ## Exemplo de Saída
304
304
 
305
305
  ### Formato padrão
306
306
  ```
307
- Analisando repositório: https://github.com/usuario/repositorio.git
307
+ Analisando repositório: https://github.com/exemplo/repositorio.git
308
308
  Tipo: Remoto
309
- Clonando repositório: https://github.com/usuario/repositorio.git
310
- Pasta temporária: C:\Users\usuario\AppData\Local\Temp\ftc-cli-12345678-1234-1234-1234-123456789abc
309
+ Clonando repositório: https://github.com/exemplo/repositorio.git
310
+ Pasta temporária: /tmp/ftc-cli-12345678-1234-1234-1234-123456789abc
311
311
  Repositório clonado com sucesso.
312
312
 
313
313
  📊 Total de commits: 150
314
314
 
315
315
  👥 Autores:
316
- João Silva <joao@exemplo.com>: 45 commits
317
- Maria Santos <maria@exemplo.com>: 38 commits
318
- Pedro Oliveira <pedro@exemplo.com>: 27 commits
316
+ Desenvolvedor A <dev.a@exemplo.com>: 45 commits
317
+ Desenvolvedor B <dev.b@exemplo.com>: 38 commits
318
+ Desenvolvedor C <dev.c@exemplo.com>: 27 commits
319
319
 
320
320
  📁 Total de arquivos alterados: 89
321
321
  📄 Arquivos alterados:
@@ -334,8 +334,8 @@ Repositório clonado com sucesso.
334
334
  "totalCommits": 150,
335
335
  "authors": [
336
336
  {
337
- "name": "João Silva",
338
- "email": "joao@exemplo.com",
337
+ "name": "Desenvolvedor A",
338
+ "email": "dev.a@exemplo.com",
339
339
  "commits": 45
340
340
  }
341
341
  ],
@@ -355,9 +355,9 @@ Repositório clonado com sucesso.
355
355
  ### Formato CSV
356
356
  ```csv
357
357
  nomeRepositorio;idRepositorio;dataCommit;idCommit;nomeAutor;emailAutor;nomeArquivo;caminhoArquivo;linhasAdicionadas;linhasRemovidas
358
- meu-repo;abc123;2024-01-15 10:30:00;def456;João Silva;joao@exemplo.com;Program.cs;src/Program.cs;120;45
359
- meu-repo;abc123;2024-01-15 10:30:00;def456;João Silva;joao@exemplo.com;Models.cs;src/Models.cs;89;12
360
- meu-repo;abc123;2024-01-16 14:20:00;ghi789;Maria Santos;maria@exemplo.com;README.md;README.md;15;3
358
+ meu-repo;abc123;2024-01-15 10:30:00;def456;Desenvolvedor A;dev.a@exemplo.com;Program.cs;src/Program.cs;120;45
359
+ meu-repo;abc123;2024-01-15 10:30:00;def456;Desenvolvedor A;dev.a@exemplo.com;Models.cs;src/Models.cs;89;12
360
+ meu-repo;abc123;2024-01-16 14:20:00;ghi789;Desenvolvedor B;dev.b@exemplo.com;README.md;README.md;15;3
361
361
  ```
362
362
 
363
363
  O formato CSV inclui:
@@ -385,21 +385,7 @@ A CLI fornece mensagens de erro claras e específicas:
385
385
 
386
386
  ## Arquitetura
387
387
 
388
- O projeto segue a arquitetura Vertical Slice do FTC:
389
-
390
- ```
391
- Features/
392
- └── AnalyzeRepository/
393
- ├── Models.cs # Request/Response records
394
- └── AnalyzeRepositorySlice.cs # Lógica de análise
395
-
396
- Common/
397
- └── RepositoryUtils.cs # Utilitários para repositórios
398
-
399
- scripts/
400
- ├── docker-run.sh # Script Linux/macOS
401
- └── docker-run.bat # Script Windows
402
- ```
388
+ O projeto segue a arquitetura Vertical Slice do FTC, organizando funcionalidades em slices independentes com suas próprias responsabilidades.
403
389
 
404
390
  ## Docker
405
391
 
@@ -408,9 +394,6 @@ scripts/
408
394
  Dockerfile # Multi-stage build otimizado
409
395
  .dockerignore # Exclusões para build
410
396
  docker-compose.yml # Configuração do container
411
- scripts/
412
- ├── docker-run.sh # Script Linux/macOS
413
- └── docker-run.bat # Script Windows
414
397
  ```
415
398
 
416
399
  ### Características da Imagem
@@ -418,11 +401,11 @@ scripts/
418
401
  - **Runtime .NET 8**: Imagem base leve
419
402
  - **Git instalado**: Suporte a repositórios remotos
420
403
  - **Volumes mapeados**: Acesso a repositórios locais
421
- - **Timezone configurado**: America/Sao_Paulo
404
+ - **Timezone configurado**: UTC
422
405
 
423
406
  ### Volumes Docker
424
407
  - `./repos:/repos:ro`: Mapeia repositórios locais (somente leitura)
425
- - `./temp:/tmp/ftc-cli`: Pasta temporária para persistência
408
+ - `./temp:/tmp`: Pasta temporária para persistência
426
409
 
427
410
  ## Testes
428
411
 
@@ -430,10 +413,10 @@ O projeto inclui testes automatizados para validação de funcionalidades:
430
413
 
431
414
  ```bash
432
415
  # Executar todos os testes
433
- dotnet test ../../ftc.cli.tests
416
+ dotnet test
434
417
 
435
418
  # Executar testes específicos
436
- dotnet test ../../ftc.cli.tests --filter "IsRemoteRepository"
419
+ dotnet test --filter "RepositoryTests"
437
420
  ```
438
421
 
439
422
  ### Cobertura de Testes
@@ -441,14 +424,6 @@ dotnet test ../../ftc.cli.tests --filter "IsRemoteRepository"
441
424
  - ✅ Validação de URLs HTTPS, HTTP, SSH, Git
442
425
  - ✅ Validação de caminhos locais e relativos
443
426
 
444
- ## Dependências
445
-
446
- - **System.CommandLine**: Para parsing de argumentos da CLI
447
- - **LibGit2Sharp**: Para análise de repositórios Git
448
- - **System.Text.Json**: Para serialização JSON
449
- - **xUnit**: Para testes automatizados
450
- - **Docker**: Para containerização
451
-
452
427
  ## Desenvolvimento
453
428
 
454
429
  ### Compilar
@@ -473,19 +448,19 @@ scripts\docker-run.bat [argumentos]
473
448
  ### Testar
474
449
  ```bash
475
450
  # Testar com um repositório local
476
- dotnet run -- C:\caminho\para\repositorio
451
+ dotnet run -- collect code C:\caminho\para\repositorio
477
452
 
478
453
  # Testar com repositório remoto
479
- dotnet run -- https://github.com/usuario/repositorio.git
454
+ dotnet run -- collect code https://github.com/exemplo/repositorio.git
480
455
 
481
456
  # Testar com filtros
482
- dotnet run -- C:\caminho\para\repositorio --since 2024-01-01 --json
457
+ dotnet run -- collect code C:\caminho\para\repositorio --startDate 2024-01-01 --endDate 2024-12-31 --json
483
458
 
484
459
  # Executar testes
485
- dotnet test ../../ftc.cli.tests
460
+ dotnet test
486
461
 
487
462
  # Testar com Docker
488
- ./scripts/docker-run.sh C:\caminho\para\repositorio
463
+ ./scripts/docker-run.sh collect code C:\caminho\para\repositorio
489
464
  ```
490
465
 
491
466
  ## Melhorias Implementadas
@@ -522,81 +497,35 @@ A CLI permite exportar o resultado da análise para um arquivo local ou diretame
522
497
 
523
498
  ### Exportar JSON localmente
524
499
  ```sh
525
- ftc code "./meu-repo" --json --export local:./resultado.json
500
+ ftc collect code "./meu-repo" --json --export local:./resultado.json
526
501
  ```
527
502
 
528
503
  ### Exportar CSV localmente
529
504
  ```sh
530
- ftc code "./meu-repo" --csv --export local:./resultado.csv
505
+ ftc collect code "./meu-repo" --csv --export local:./resultado.csv
531
506
  ```
532
507
 
533
508
  ### Exportar para S3 (JSON)
534
509
  ```sh
535
- ftc code "./meu-repo" --json --export s3
510
+ ftc collect code "./meu-repo" --json --export s3
536
511
  ```
537
512
 
538
513
  ### Exportar para S3 (CSV)
539
514
  ```sh
540
- ftc code "./meu-repo" --csv --export s3
515
+ ftc collect code "./meu-repo" --csv --export s3
541
516
  ```
542
517
 
543
518
  ### Exportar para S3 (bucket e key customizados)
544
519
  ```sh
545
- ftc code "./meu-repo" --csv --export s3: --s3-bucket "meu-bucket"
520
+ ftc collect code "./meu-repo" --csv --export s3: --s3-bucket "meu-bucket"
546
521
  ```
547
522
 
548
523
  ### Exportar para S3 (bucket/key no próprio parâmetro)
549
524
  ```sh
550
- ftc code "./meu-repo" --csv --export s3://meu-bucket/analises/resultado.csv
525
+ ftc collect code "./meu-repo" --csv --export s3://meu-bucket/analises/resultado.csv
551
526
  ```
552
527
 
553
- - Se `--s3-bucket` não for informado, será usado o bucket padrão `ftc-analyzer`.
528
+ - Se `--s3-bucket` não for informado, será usado o bucket padrão configurado.
554
529
  - Para JSON: Se `--s3-key` não for informado, será usado o padrão `analises/<nome_repositorio>-ano-mes-dia.json`.
555
530
  - Para CSV: Se `--s3-key` não for informado, será usado o padrão `analises/<nome_repositorio>-ano-mes-dia.csv`.
556
531
  - O parâmetro `--s3-region` pode ser usado para especificar a região AWS.
557
-
558
- ## Exportação via API HTTP (x-apikey)
559
-
560
- Agora é possível exportar arquivos diretamente para uma API HTTP utilizando o header `x-apikey`.
561
-
562
- **Exemplo de configuração:**
563
-
564
- ```
565
- api:https://sua-api.com/upload?apikey=SEU_API_KEY
566
- ```
567
-
568
- - O arquivo será compactado (gzip) e enviado via POST para a URL informada.
569
- - O header `x-apikey` será preenchido automaticamente com o valor fornecido.
570
- - O header `x-provider` será enviado se especificado na URL.
571
- - O conteúdo enviado será do tipo `application/octet-stream` com encoding `gzip`.
572
-
573
- **Uso no código:**
574
-
575
- ```csharp
576
- await ExportHelper.ExportDataAsync(
577
- dados,
578
- "api:https://sua-api.com/upload?apikey=SEU_API_KEY",
579
- repoPath,
580
- serviceProvider,
581
- ExportFormat.Json
582
- );
583
- ```
584
-
585
- ### Exemplo: Envio de arquivo compactado para o endpoint de commit-files
586
-
587
- ```
588
- api:https://ftc-api.eximia.co/collect/commit-files?apikey=xpt-apikey&provider=Azure
589
- ```
590
-
591
- - O arquivo será compactado (gzip) e enviado via POST.
592
- - Headers enviados: x-apikey, x-provider
593
- - Suporta CSV ou JSON.
594
- - Formato: application/octet-stream com encoding gzip
595
-
596
- ### Exemplo: Consulta do last-sync via GET
597
-
598
- ```csharp
599
- var client = new ApiKeyHttpGetClient(serviceProvider.GetRequiredService<IHttpClientFactory>(), "xpt-apikey");
600
- var lastSync = await client.GetLastSyncAsync("https://ftc-api.eximia.co/collect/repositories/repo01/last-sync");
601
- Console.WriteLine($"Última sincronização: {lastSync}");
602
- ```
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.40",
3
+ "version": "1.2.43",
4
4
  "description": "CLI tool for Git repository analysis and data collection",
5
5
  "main": "index.js",
6
6
  "license": "UNLICENSED",