forked from jkga/covid19-tracker-cli
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcli.js
More file actions
executable file
·60 lines (53 loc) · 1.86 KB
/
cli.js
File metadata and controls
executable file
·60 lines (53 loc) · 1.86 KB
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
#!/usr/bin/env node
const axios = require('axios'),
clear = require('clear'),
ora = require('ora'),
spinner = ora({ text: 'Loading...'}),
covid19 = require('./lib/cli'),
apiBaseURL = "https://corona.lmao.ninja",
argv = require('yargs')
.usage('Usage: $0 <country> [options]')
.example('$0 PH', 'Generate stats for Philippines. ISO 3166-1 is supported')
.nargs('plain', 0)
.describe('plain', 'If your cli does not support ANSI encoding similar to /cmd usage and layout')
.example('$0 PH --plain', 'Generate stats for Philippines with plain format')
.help('help')
.argv;
const getGlobal = (data) => {
const params = [ data.cases, data.deaths,data.recovered, data.updated];
let result;
if(argv.plain) {
result = covid19.plainglobaltracker(...params);
spinner.stop();
return console.log(result);
}
result = covid19.covid19globaltracker(...params);
spinner.stop();
return console.log(result);
}
const getCountry = async (u, country) => {
let result;
const api = await axios.get(`${apiBaseURL}/countries/${country}`),
d = api.data;
const params = [
d.country, d.cases, d.todayCases, d.deaths, d.todayDeaths,
d.recovered, d.active, d.critical, d.casesPerOneMillion,
u.updated
];
if(argv.plain) {
result = covid19.plaincountrytracker(...params);
spinner.stop();
return console.log(result);
}
result = covid19.covid19countrytracker(...params);
spinner.stop();
return console.log(result);
}
(async () => {
clear();
country = argv._[0];
spinner.start();
const all = await axios.get(`${apiBaseURL}/all`);
!country && getGlobal(all.data);
country && getCountry(all.data, country);
})()