docuapi 1.0.2 → 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.
- package/README-ANALYZE.md +27 -0
- package/bin/fundamentos.js +82 -0
- package/bin/index.js +93 -52
- package/package.json +1 -1
|
@@ -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,75 +1,116 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
//
|
|
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
|
-
|
|
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
|
-
|
|
33
|
-
//--------------------------------------------------
|
|
34
13
|
|
|
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
|
|
19
|
+
const packageJson = JSON.parse(fs.readFileSync(path.join(projectRoot, "package.json"), "utf-8"));
|
|
43
20
|
|
|
44
|
-
|
|
21
|
+
const args = process.argv.slice(2)
|
|
45
22
|
|
|
46
|
-
const
|
|
23
|
+
const IGNORE_DIRS = ["node_modules", ".git", ".vscode"];
|
|
47
24
|
|
|
48
|
-
|
|
25
|
+
function formatDependencies(deps) {
|
|
26
|
+
if (!deps || Object.keys(deps).length === 0) {
|
|
27
|
+
return "Projeto sem dependências.";
|
|
28
|
+
}
|
|
49
29
|
|
|
50
|
-
|
|
30
|
+
return Object.entries(deps)
|
|
31
|
+
.map(([name, version]) => `- ${name} ${version}`)
|
|
32
|
+
.join("\n");
|
|
33
|
+
}
|
|
51
34
|
|
|
52
|
-
|
|
53
|
-
|
|
35
|
+
function scanDir(dirPath, padding) {
|
|
36
|
+
const entries = fs.readdirSync(dirPath, { withFileTypes: true });
|
|
54
37
|
|
|
55
|
-
|
|
38
|
+
let treeContent = ""
|
|
56
39
|
|
|
57
|
-
// function scanDir(dirPath) {
|
|
58
|
-
// const entries = fs.readdirSync(dirPath, { withFileTypes: true });
|
|
59
40
|
|
|
60
|
-
|
|
61
|
-
// if (IGNORE_DIRS.includes(entry.name)) continue;
|
|
41
|
+
for (const entry of entries) {
|
|
62
42
|
|
|
63
|
-
|
|
43
|
+
const fullPath = path.join(dirPath, entry.name);
|
|
64
44
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
45
|
+
if (entry.isDirectory()) {
|
|
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
|
+
}
|
|
54
|
+
} else {
|
|
55
|
+
treeContent += `${" ".repeat(padding*2)} 📄 ${entry.name}\n`
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
return treeContent
|
|
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
|
+
`
|
|
73
83
|
|
|
74
|
-
|
|
75
|
-
|
|
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
|
+
}
|