-
Notifications
You must be signed in to change notification settings - Fork 0
/
salvaObjToCSV.js
48 lines (45 loc) · 1.12 KB
/
salvaObjToCSV.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
const fs = require("fs");
const path = require("path");
module.exports = function salvaObjToCSV(
obj,
nomeArquivo,
ordenaColunas = false
) {
let conteudo = "";
let colunas = [];
//percorre todos as propriedades (repositorios) para identificar todas as colunas
for (const repo of Object.keys(obj)) {
const cols = ordenaColunas
? Object.keys(obj[repo]).sort()
: Object.keys(obj[repo]);
for (const coluna of cols) {
if (!colunas.includes(coluna)) {
colunas.push(coluna);
}
}
}
////montando o conteúdo
//cabeçalho
conteudo += "repositorio";
for (const coluna of colunas) {
conteudo += ";".concat(coluna);
}
conteudo += "\n";
for (const repo of Object.keys(obj)) {
conteudo += repo;
for (const coluna of colunas) {
conteudo += ";";
if (obj[repo][coluna] != null) {
conteudo += obj[repo][coluna];
}
}
conteudo += "\n";
}
const filePath = path.join(
path.dirname(require.main.filename),
"workdir",
nomeArquivo
);
fs.writeFileSync(filePath, conteudo);
console.log(`Arquivo salvo com sucesso: ${filePath}`);
};