-
Notifications
You must be signed in to change notification settings - Fork 0
/
cli.js
77 lines (64 loc) · 1.76 KB
/
cli.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
#!/usr/bin/env node
require('dotenv').config(); // eslint-disable-line global-require
const findLatLng = require('find-lat-lng');
const meow = require('meow');
const { promisify } = require('util');
const fs = require('fs');
const readFileAsync = promisify(fs.readFile);
const writeFileAsync = promisify(fs.writeFile);
const options = {
boolean: ['debug'],
alias: {
d: 'debug',
},
};
const cli = meow(
`
Usage
$ find-lan-lng input [output]
Options
--debug Add debug information
Example
$ find-lan-lng input.json
[
{ address: 'Lonnrotinkatu 4', lat: 60.167142, lng: 24.940959},
{ address: 'Lonnrotinkatu 5', lat: 60.166924, lng: 24.939788},
...
]
`,
options,
);
if (cli.input.length === 0) {
console.error('Please specify an input file'); // eslint-disable-line
process.exit(1);
}
const [input, output] = cli.input;
const { GOOGLE_MAPS_API_KEY } = process.env;
try {
if (!GOOGLE_MAPS_API_KEY) {
// eslint-disable-next-line no-console
console.error(
'ERROR: You must provide a Google Maps Api Key as GOOGLE_MAPS_API_KEY environment variable',
);
process.exit(1);
}
(async () => {
const text = await readFileAsync(input, { encoding: 'utf8' });
const json = JSON.parse(text);
const outText = await findLatLng(GOOGLE_MAPS_API_KEY, {
debug: cli.flags.debug,
})(json);
if (output) {
await writeFileAsync(output, JSON.stringify(outText, null, '\t'), {
encoding: 'utf8',
});
console.log(`Wrote output to ${output}`); // eslint-disable-line
return process.exit(0);
}
process.stdout.write(JSON.stringify(outText, null, '\t'));
return process.exit(0);
})();
} catch (err) {
process.stderr.write(err.message || err);
process.exit(1);
}