1 |
|
2 | const https = require('https');
|
3 | const fs = require('fs');
|
4 | const path = require('path')
|
5 |
|
6 | const url = 'https://material.io/tools/icons/static/data.json';
|
7 |
|
8 | console.log('Fetching latest data...');
|
9 |
|
10 | https.get(url, res => {
|
11 | let data = '';
|
12 |
|
13 | res.on('data', chunk => {
|
14 | data += chunk;
|
15 | });
|
16 |
|
17 | res.on('end', () => {
|
18 | let json, ids, categories, list;
|
19 |
|
20 | try {
|
21 | json = JSON.parse(data);
|
22 | categories = json.categories;
|
23 | ids = [].concat.apply([], categories.map(cat => cat.icons));
|
24 | list = ids.map(c => c.id);
|
25 | } catch (error) {
|
26 | console.error('ERROR: can not parse downloaded data.');
|
27 | process.exit(1);
|
28 | }
|
29 |
|
30 | const listFile = list => path.resolve(__dirname, '..', 'data', `${list}.json`)
|
31 |
|
32 | fs.writeFileSync(listFile('icons'), data);
|
33 | fs.writeFileSync(listFile('categories'), JSON.stringify(categories));
|
34 | fs.writeFileSync(listFile('list'), JSON.stringify(list));
|
35 | fs.writeFileSync(listFile('ids'), JSON.stringify(ids));
|
36 | });
|
37 | });
|