lscontests 1.0.1 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. package/bin/cli.js +11 -15
  2. package/package.json +1 -1
package/bin/cli.js CHANGED
@@ -8,7 +8,7 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
8
8
 
9
9
  var axios__default = /*#__PURE__*/_interopDefaultLegacy(axios);
10
10
 
11
- var version = "1.0.1";
11
+ var version = "1.1.0";
12
12
 
13
13
  async function get() {
14
14
  const result = (await axios__default["default"].get("https://codeforces.com/api/contest.list")).data.result;
@@ -24,28 +24,24 @@ async function get() {
24
24
  }).filter(contest => contest.startTime >= new Date());
25
25
  }
26
26
 
27
+ const alloj = ["cf"];
27
28
  const getters = {
28
- "codeforces": get
29
+ "cf": get
29
30
  };
31
+ function getGetterList(ojs) {
32
+ if (!ojs) ojs = alloj;
33
+ return ojs.map(oj => getters[oj]);
34
+ }
30
35
 
31
- async function list(getters, days) {
32
- const cts = [];
33
-
34
- for (const get of getters) {
35
- const res = await get();
36
- cts.push(...res.filter(ct => ct.startTime <= new Date(Date.now() + days * 86400000)));
37
- }
38
-
39
- return cts;
36
+ async function list(ojs, days) {
37
+ return Promise.all(getGetterList(ojs).map(async get => (await get()).filter(ct => ct.startTime <= new Date(Date.now() + days * 86400000))));
40
38
  }
41
39
 
42
- commander.program.name("lsct").version(version).option("-a, --all", "List all contests").option("-d, --days", "Only list contests within a given number of days", "3").parse();
40
+ commander.program.name("lsct").version(version).option("-d, --days", "Number of days to get contests information", "3").option("-l, --list", "List all supported OJ").addOption(new commander.Option("-o, --oj <ojs...>", "OJs to get contests information").choices(alloj)).parse();
43
41
  const opts = commander.program.opts();
44
42
 
45
43
  async function main() {
46
- const cts = [];
47
- if (commander.program.args.length === 0 || opts.all) cts.push(...(await list(Object.values(getters), opts.days)));
48
- console.log(cts);
44
+ if (opts.list) console.log(alloj);else console.log(await list(opts.oj, opts.days));
49
45
  }
50
46
 
51
47
  main();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lscontests",
3
- "version": "1.0.1",
3
+ "version": "1.1.0",
4
4
  "description": "A CLI tool to get information about the contests on each OJ",
5
5
  "keywords": [
6
6
  "cli",