generated from practice-uffs/template
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.js
85 lines (70 loc) · 3.17 KB
/
main.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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
const fs = require('fs');
const os = require('os');
const path = require('path');
const streamer = require('./src/streamer');
const historicoEscolar = require('./src/historicoEscolar');
const listaAlunos = require('./src/listaAlunos');
const utils = require('./src/utils');
const { exit } = require('process');
function help() {
console.log('UFFS SGA Scraper - v1.0.0');
console.log('Cli para leitura de dados do portal do coordenador da UFFS.');
console.log('');
console.log('Uso:');
console.log(' sgas [options]');
console.log(' node main.js [options]');
console.log(' npm run -- [options]');
console.log('');
console.log('Options:');
console.log(' --config=<str> Caminho para arquivo config.json (default ./config.json).');
console.log(' --usuario=<str> idUFFS do usuário que fará o acesso aos dado no SGA.');
console.log(' Por default esse valor é obtido do arquivo de config.');
console.log(' --senha=<str> Senha do usuário que fará o acesso aos dado no SGA.');
console.log(' Por default esse valor é obtido do arquivo de config.');
console.log(' --alunos, -a Cria uma lista com todos os alunos do curso.');
console.log(' --conclusoes, -c Obtem o percentual de integralização do curso de todos os alunos.');
console.log(' --matricula=<int> Matrícula de um aluno a ser analisado. Necessário informar');
console.log(' se usar --historico, --historico-pdf, --conclusao-pdf.');
console.log(' --historico Obtem o histórico de um aluno via matrícula.');
console.log(' --historico-pdf Obtem o histórico em PDF de um aluno via matrícula.');
console.log(' --conclusao-pdf Obtem o histórico em PDF de integralização um aluno via matrícula.');
console.log(' --save, -s Salva resultados em arquivo json ao inves de imprimir.');
console.log(' --debug, -d Roda em modo visual, sem ser headless (ignora config).');
console.log(' --help, -h Mostra essa ajuda.');
}
function output(result, argv) {
const text = JSON.stringify(result);
if(argv && !argv.s && !argv.save) {
console.log(text);
}
}
async function run(argv) {
if(argv.h || argv.help) {
return help();
}
var configPath = argv.config ? argv.config : path.resolve(path.dirname(require.main.filename), 'config.json.example');
if(!fs.existsSync(configPath)) {
throw 'Erro ao carregar config: ' + configPath;
}
var configContent = fs.readFileSync(configPath);
var config = JSON.parse(configContent);
if(argv.d || argv.debug) config.headless = false;
const instance = await streamer.create(config);
if(argv.alunos || argv.a) {
const alunos = await listaAlunos.run(instance);
output(alunos, argv);
}
streamer.destroy();
}
var argv = require('minimist')(process.argv.slice(2));
process.on('unhandledRejection', (reason, p) => {
console.log(reason);
exit(99);
});
try {
run(argv);
return 0;
} catch(error) {
console.log(error);
exit(9);
}