UNPKG

2.71 kBJavaScriptView Raw
1#!/usr/bin/env node
2
3const program = require('commander'),
4 fetchAuthData = require('./lib/settings').fetchSettings,
5 spawn = require('child_process').spawn,
6 ora = require('ora'),
7 command = require('./lib/command'),
8 logger = require('./lib/logger'),
9 Gateway = require('./lib/proxy'),
10 assets = require('./lib/assets'),
11 version = require('./package.json').version;
12
13const uploadArchive = (env, usingDeploymentService) => {
14 const options = usingDeploymentService ? ['--without-assets'] : [];
15 return new Promise((resolve, reject) => {
16 const archive = spawn(command('marketplace-kit-archive'), options, {
17 stdio: 'inherit'
18 });
19
20 archive.on('close', code => {
21 if (code === 1) {
22 logger.Error('Deploy failed.');
23 reject(e);
24 }
25
26 const push = spawn(command('marketplace-kit-push'), [], {
27 stdio: 'inherit',
28 env: env
29 });
30
31 push.on('close', (exitCode) => {
32 if (exitCode === 1) {
33 logger.Error('Deploy failed.');
34 reject(false);
35 } else if(exitCode === 0) {
36 resolve(true);
37 }
38 });
39 });
40 });
41};
42
43const deploy = async(env, authData, params) => {
44 await uploadArchive(env, params.directAssetsUpload);
45 if (params.directAssetsUpload){
46 const spinner = ora({ text: 'Uploading assets', stream: process.stdout, spinner: 'bouncingBar' }).start();
47 await assets.deployAssets(new Gateway(authData));
48
49 spinner.stopAndPersist().succeed('Assets uploaded');
50 }
51};
52
53PARTNER_PORTAL_HOST = process.env.PARTNER_PORTAL_HOST || 'https://portal.apps.near-me.com';
54
55program
56 .version(version)
57 .arguments('[environment]', 'name of environment. Example: staging')
58 .option('-f --force', 'force update. Removes instance-admin lock')
59 .option('-d --direct-assets-upload', 'Uploads assets straight to S3 servers')
60 .option('-p --partial-deploy', 'Partial deployment, does not remove data from directories missing from the build')
61 .option('-c --config-file <config-file>', 'config file path', '.marketplace-kit')
62 .action(async (environment, params) => {
63 process.env.CONFIG_FILE_PATH = params.configFile;
64 if (params.force) process.env.FORCE = params.force;
65 if (params.partialDeploy) process.env.PARTIAL_DEPLOY = params.partialDeploy;
66 const authData = fetchAuthData(environment, program);
67 const env = Object.assign(process.env, {
68 MARKETPLACE_EMAIL: authData.email,
69 MARKETPLACE_TOKEN: authData.token,
70 MARKETPLACE_URL: authData.url,
71 MARKETPLACE_ENV: environment
72 });
73
74 try{
75 await deploy(env, authData, params);
76 process.exit(0);
77 } catch(error) {
78 process.exit(1);
79 }
80 });
81
82program.parse(process.argv);