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