docuapi 1.0.3 → 1.0.4

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.
@@ -0,0 +1,27 @@
1
+
2
+ # docuapi
3
+
4
+ CLI de teste para gerar documentação automática de APIs
5
+
6
+ ## 🔖 Informações
7
+ - **Versão:** 1.0.3
8
+ - **Gerenciador:** npm
9
+ - **Tipo:** Backend Node.js
10
+
11
+ ## 🚀 Dependências
12
+ - fs ^0.0.1-security
13
+ - path ^0.12.7
14
+
15
+ ## 📁 Estrutura do Projeto
16
+ ```
17
+ 📂 bin
18
+ 📄 fundamentos.js
19
+ 📄 index.js
20
+ 📂 node_modules
21
+ 📄 package-lock.json
22
+ 📄 package.json
23
+ 📄 README-ANALYZE.md
24
+
25
+ ```
26
+
27
+ 📄 *README gerado automaticamente pelo **Analyze CLI***
@@ -0,0 +1,82 @@
1
+ #!/usr/bin/env node
2
+
3
+ const fs = require("fs");
4
+ // Importa o módulo File System
5
+
6
+ // Permite:
7
+ // ler arquivos
8
+ // criar arquivos
9
+ // verificar pastas
10
+ // navegar no projeto
11
+
12
+ const path = require("path");
13
+ // Importa o módulo path
14
+
15
+ // Serve para montar caminhos sem quebrar em diferentes SO
16
+
17
+ // Exemplo:
18
+ // path.join("src", "index.js");
19
+
20
+ // No Windows vira:
21
+ // src\index.js
22
+
23
+ // No Linux:
24
+ // src/index.js
25
+
26
+ const projectRoot = process.cwd();
27
+ // process.cwd() - CWD -> current working directory
28
+ // Coletando a pasta em que o usuário rodou o comando
29
+
30
+ console.log("📁 Analisando projeto em:");
31
+ console.log(projectRoot);
32
+
33
+ //--------------------------------------------------
34
+
35
+ if(fs.existsSync(path.join(process.cwd(), "package.json"))){
36
+ console.log("Projeto é Node")
37
+ }else {
38
+ console.log("Package.json não encontrado.\nVerifique se você está rodando o comando na raiz do projeto.")
39
+ process.exit(1)
40
+ }
41
+
42
+ const packageJsonPath = path.join(projectRoot, "package.json");
43
+
44
+ console.log(`caminho da pasta: ${packageJsonPath}`)
45
+
46
+ const packageJsonRaw = fs.readFileSync(packageJsonPath, "utf-8");
47
+
48
+ //console.log(packageJsonRaw)
49
+
50
+ const packageJson = JSON.parse(packageJsonRaw);
51
+
52
+ console.log(`O projeto ${packageJson.name} na versão ${packageJson.version}, tem as seguintes dependencias:`)
53
+ console.log(packageJson.dependencies)
54
+
55
+ const IGNORE_DIRS = ["node_modules", ".git", ".vscode"];
56
+
57
+ function scanDir(dirPath, padding) {
58
+ const entries = fs.readdirSync(dirPath, { withFileTypes: true });
59
+
60
+
61
+ for (const entry of entries) {
62
+
63
+ const fullPath = path.join(dirPath, entry.name);
64
+
65
+ if (entry.isDirectory()) {
66
+ if (IGNORE_DIRS.includes(entry.name)){
67
+ console.log(" ".repeat(padding*2), "📂", entry.name);
68
+ } else {
69
+ console.log(" ".repeat(padding*2), "📂", entry.name);
70
+ padding ++
71
+ scanDir(fullPath, padding);
72
+ padding --
73
+ }
74
+ } else {
75
+ console.log(" ".repeat(padding*2), "📄", entry.name);
76
+ }
77
+ }
78
+ }
79
+
80
+ console.log("\n🌳 Estrutura do projeto:\n");
81
+ scanDir(projectRoot, 0);
82
+
package/bin/index.js CHANGED
@@ -1,79 +1,116 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- const fs = require("fs");
4
- // Importa o módulo File System
3
+ // npx analyze --help # ajuda
4
+ // npx analyze --tree # mostra estrutura
5
+ // npx analyze --deps # mostra dependências
6
+ // npx analyze --readme # gera README
5
7
 
6
- // Permite:
7
- // ler arquivos
8
- // criar arquivos
9
- // verificar pastas
10
- // navegar no projeto
8
+ const fs = require("fs");
11
9
 
12
10
  const path = require("path");
13
- // Importa o módulo path
14
-
15
- // Serve para montar caminhos sem quebrar em diferentes SO
16
-
17
- // Exemplo:
18
- // path.join("src", "index.js");
19
-
20
- // No Windows vira:
21
- // src\index.js
22
-
23
- // No Linux:
24
- // src/index.js
25
11
 
26
12
  const projectRoot = process.cwd();
27
- // process.cwd() - CWD -> current working directory
28
- // Coletando a pasta em que o usuário rodou o comando
29
-
30
- console.log("📁 Analisando projeto em:");
31
- console.log(projectRoot);
32
13
 
33
- //--------------------------------------------------
34
-
35
- if(fs.existsSync(path.join(process.cwd(), "package.json"))){
36
- console.log("Projeto é Node")
37
- }else {
14
+ if(!fs.existsSync(path.join(process.cwd(), "package.json"))){
38
15
  console.log("Package.json não encontrado.\nVerifique se você está rodando o comando na raiz do projeto.")
39
16
  process.exit(1)
40
17
  }
41
18
 
42
- const packageJsonPath = path.join(projectRoot, "package.json");
43
-
44
- console.log(`caminho da pasta: ${packageJsonPath}`)
45
-
46
- const packageJsonRaw = fs.readFileSync(packageJsonPath, "utf-8");
19
+ const packageJson = JSON.parse(fs.readFileSync(path.join(projectRoot, "package.json"), "utf-8"));
47
20
 
48
- //console.log(packageJsonRaw)
21
+ const args = process.argv.slice(2)
49
22
 
50
- const packageJson = JSON.parse(packageJsonRaw);
23
+ const IGNORE_DIRS = ["node_modules", ".git", ".vscode"];
51
24
 
52
- console.log(`O projeto ${packageJson.name} na versão ${packageJson.version}, tem as seguintes dependencias:`)
53
- console.log(packageJson.dependencies)
25
+ function formatDependencies(deps) {
26
+ if (!deps || Object.keys(deps).length === 0) {
27
+ return "Projeto sem dependências.";
28
+ }
54
29
 
55
- const IGNORE_DIRS = ["node_modules", ".git", ".vscode"];
30
+ return Object.entries(deps)
31
+ .map(([name, version]) => `- ${name} ${version}`)
32
+ .join("\n");
33
+ }
56
34
 
57
35
  function scanDir(dirPath, padding) {
58
36
  const entries = fs.readdirSync(dirPath, { withFileTypes: true });
59
37
 
38
+ let treeContent = ""
39
+
60
40
 
61
41
  for (const entry of entries) {
62
- if (IGNORE_DIRS.includes(entry.name)) continue;
63
42
 
64
43
  const fullPath = path.join(dirPath, entry.name);
65
44
 
66
45
  if (entry.isDirectory()) {
67
-
68
- console.log(" ".repeat(padding*2), "📂", entry.name);
69
- padding ++
70
- scanDir(fullPath, padding);
71
- padding --
46
+ if (IGNORE_DIRS.includes(entry.name)){
47
+ treeContent += `${" ".repeat(padding*2)} 📂 ${entry.name}\n`
48
+ } else {
49
+ treeContent += `${" ".repeat(padding*2)} 📂 ${entry.name}\n`
50
+ padding ++
51
+ treeContent += scanDir(fullPath, padding)
52
+ padding --
53
+ }
72
54
  } else {
73
- console.log(" ".repeat(padding*2), "📄", entry.name);
55
+ treeContent += `${" ".repeat(padding*2)} 📄 ${entry.name}\n`
74
56
  }
75
57
  }
58
+
59
+ return treeContent
76
60
  }
61
+
62
+ function generateReadme(packageJson, tree){
63
+ const content = `
64
+ # ${packageJson.name}
65
+
66
+ ${packageJson.description || "Projeto Node.js analisado automaticamente pelo Analyze."}
67
+
68
+ ## 🔖 Informações
69
+ - **Versão:** ${packageJson.version}
70
+ - **Gerenciador:** npm
71
+ - **Tipo:** Backend Node.js
72
+
73
+ ## 🚀 Dependências
74
+ ${formatDependencies(packageJson.dependencies)}
75
+
76
+ ## 📁 Estrutura do Projeto
77
+ \`\`\`
78
+ ${tree}
79
+ \`\`\`
80
+
81
+ 📄 *README gerado automaticamente pelo **Analyze CLI***
82
+ `
77
83
 
78
- console.log("\n🌳 Estrutura do projeto:\n");
79
- scanDir(projectRoot, 0);
84
+ return content
85
+
86
+ }
87
+
88
+ if(args.length == 0){
89
+ console.log(`
90
+ Bem vindo ao Analyze!
91
+ Analisador de projetos Node.js
92
+
93
+ Digite analyze --help se quiser ver os comandos disponíveis
94
+ `);
95
+ process.exit(0);
96
+ } else if(args.includes("--help")){
97
+ console.log(`
98
+ npx analyze --help Mostra os comandos possíveis
99
+ npx analyze --tree Mostra a estrutura do projeto
100
+ npx analyze --deps Mostra as dependências
101
+ npx analyze --readme Gera um README automaticamente
102
+ `)
103
+ } else if (args.includes("--tree")){
104
+ console.log("\n🌳 Estrutura do projeto:\n");
105
+ console.log(scanDir(projectRoot, 0))
106
+ } else if (args.includes("--deps")){
107
+ console.log(`O projeto ${packageJson.name} na versão ${packageJson.version}, tem as seguintes dependencias:`)
108
+ const deps = packageJson.dependencies || "Projeto sem depedencias"
109
+ console.log(deps)
110
+ } else if (args.includes("--readme")){
111
+ const content = generateReadme(packageJson, scanDir(projectRoot, 0))
112
+
113
+ fs.writeFileSync("README-ANALYZE.md", content)
114
+ } else {
115
+ console.log("❌ Comando não reconhecido. Use --help para ver as opções.")
116
+ }
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "bin": {
4
4
  "analyze": "./bin/index.js"
5
5
  },
6
- "version": "1.0.3",
6
+ "version": "1.0.4",
7
7
  "description": "CLI de teste para gerar documentação automática de APIs",
8
8
  "main": "index.js",
9
9
  "scripts": {