1 | #!/usr/bin/env node
|
2 |
|
3 | const program = require('commander'),
|
4 | fs = require('fs'),
|
5 | ora = require('ora'),
|
6 | Gateway = require('./lib/proxy'),
|
7 | logger = require('./lib/logger'),
|
8 | fetchAuthData = require('./lib/settings').fetchSettings,
|
9 | transform = require('./lib/data/uploadFiles'),
|
10 | isValidJSON = require('./lib/data/isValidJSON'),
|
11 | version = require('./package.json').version;
|
12 |
|
13 | let gateway;
|
14 | const spinner = ora({ text: 'Sending data', stream: process.stdout, spinner: 'bouncingBar' });
|
15 |
|
16 | PARTNER_PORTAL_HOST = process.env.PARTNER_PORTAL_HOST || 'https://portal.apps.near-me.com';
|
17 |
|
18 | program
|
19 | .version(version)
|
20 | .arguments('[environment]', 'name of the environment. Example: staging')
|
21 | .option('-p --path <update-file-path>', 'path of update .json file', 'data.json')
|
22 | .option('-c --config-file <config-file>', 'config file path', '.marketplace-kit')
|
23 | .action((environment, params) => {
|
24 | process.env.CONFIG_FILE_PATH = params.configFile;
|
25 | const filename = params.path;
|
26 | const authData = fetchAuthData(environment, program);
|
27 | Object.assign(process.env, {
|
28 | MARKETPLACE_TOKEN: authData.token,
|
29 | MARKETPLACE_URL: authData.url
|
30 | });
|
31 |
|
32 | gateway = new Gateway(authData);
|
33 |
|
34 | const data = fs.readFileSync(filename, 'utf8');
|
35 |
|
36 | if (!isValidJSON(data)) {
|
37 | return logger.Failed(
|
38 | `Invalid format of ${filename}. Must be a valid json file. Check your file using one of JSON validators online.
|
39 | For example: https://jsonlint.com`
|
40 | );
|
41 | }
|
42 |
|
43 | spinner.start();
|
44 | transform(JSON.parse(data)).then(transformedData => {
|
45 | const tmpFileName = './tmp/data-updated.json';
|
46 | fs.writeFileSync(tmpFileName, JSON.stringify(transformedData));
|
47 | const formData = { 'update[data]': fs.createReadStream(tmpFileName) };
|
48 | gateway
|
49 | .dataUpdate(formData)
|
50 | .then(() => {
|
51 | spinner
|
52 | .stopAndPersist()
|
53 | .succeed('Import scheduled. Check marketplace-kit logs for info when it is done.');
|
54 | });
|
55 | })
|
56 | .catch({ statusCode: 404 }, () => {
|
57 | spinner.fail('Import failed');
|
58 | logger.Error('[404] Data update is not supported by the server');
|
59 | })
|
60 | .catch(e => {
|
61 | spinner.fail('Import failed');
|
62 | logger.Error(e);
|
63 | logger.Error(e.message);
|
64 | });
|
65 | });
|
66 |
|
67 | program.parse(process.argv);
|