UNPKG

2.31 kBJavaScriptView Raw
1#!/usr/bin/env node
2
3const 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
13let gateway;
14const spinner = ora({ text: 'Sending data', stream: process.stdout, spinner: 'bouncingBar' });
15
16PARTNER_PORTAL_HOST = process.env.PARTNER_PORTAL_HOST || 'https://partners.platform-os.com';
17
18program
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.
39For 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
67program.parse(process.argv);