pwrdrvr 0.4.0-alpha.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +241 -0
- package/bin/run +5 -0
- package/dist/commands/delete.d.ts +18 -0
- package/dist/commands/delete.d.ts.map +1 -0
- package/dist/commands/delete.js +125 -0
- package/dist/commands/delete.js.map +1 -0
- package/dist/commands/nextjs-version-restore.d.ts +14 -0
- package/dist/commands/nextjs-version-restore.d.ts.map +1 -0
- package/dist/commands/nextjs-version-restore.js +53 -0
- package/dist/commands/nextjs-version-restore.js.map +1 -0
- package/dist/commands/nextjs-version.d.ts +18 -0
- package/dist/commands/nextjs-version.d.ts.map +1 -0
- package/dist/commands/nextjs-version.js +103 -0
- package/dist/commands/nextjs-version.js.map +1 -0
- package/dist/commands/preflight.d.ts +19 -0
- package/dist/commands/preflight.d.ts.map +1 -0
- package/dist/commands/preflight.js +135 -0
- package/dist/commands/preflight.js.map +1 -0
- package/dist/commands/publish-static.d.ts +25 -0
- package/dist/commands/publish-static.d.ts.map +1 -0
- package/dist/commands/publish-static.js +361 -0
- package/dist/commands/publish-static.js.map +1 -0
- package/dist/commands/publish.d.ts +39 -0
- package/dist/commands/publish.d.ts.map +1 -0
- package/dist/commands/publish.js +565 -0
- package/dist/commands/publish.js.map +1 -0
- package/dist/config/Application.d.ts +26 -0
- package/dist/config/Application.d.ts.map +1 -0
- package/dist/config/Application.js +99 -0
- package/dist/config/Application.js.map +1 -0
- package/dist/config/Config.d.ts +18 -0
- package/dist/config/Config.d.ts.map +1 -0
- package/dist/config/Config.js +71 -0
- package/dist/config/Config.js.map +1 -0
- package/dist/config/Deployer.d.ts +10 -0
- package/dist/config/Deployer.d.ts.map +1 -0
- package/dist/config/Deployer.js +17 -0
- package/dist/config/Deployer.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/DeployClient.d.ts +102 -0
- package/dist/lib/DeployClient.d.ts.map +1 -0
- package/dist/lib/DeployClient.js +233 -0
- package/dist/lib/DeployClient.js.map +1 -0
- package/dist/lib/FilesExist.d.ts +5 -0
- package/dist/lib/FilesExist.d.ts.map +1 -0
- package/dist/lib/FilesExist.js +26 -0
- package/dist/lib/FilesExist.js.map +1 -0
- package/dist/lib/S3TransferUtility.d.ts +19 -0
- package/dist/lib/S3TransferUtility.d.ts.map +1 -0
- package/dist/lib/S3TransferUtility.js +94 -0
- package/dist/lib/S3TransferUtility.js.map +1 -0
- package/dist/lib/S3Uploader.d.ts +27 -0
- package/dist/lib/S3Uploader.d.ts.map +1 -0
- package/dist/lib/S3Uploader.js +77 -0
- package/dist/lib/S3Uploader.js.map +1 -0
- package/dist/lib/Versions.d.ts +33 -0
- package/dist/lib/Versions.d.ts.map +1 -0
- package/dist/lib/Versions.js +76 -0
- package/dist/lib/Versions.js.map +1 -0
- package/package.json +83 -0
- package/src/commands/delete.ts +135 -0
- package/src/commands/nextjs-version-restore.ts +70 -0
- package/src/commands/nextjs-version.ts +123 -0
- package/src/commands/preflight.ts +148 -0
- package/src/commands/publish-static.ts +416 -0
- package/src/commands/publish.ts +662 -0
- package/src/commands-deprecated/nextjs-docker-auto.skip +590 -0
- package/src/config/Application.ts +98 -0
- package/src/config/Config.ts +81 -0
- package/src/config/Deployer.ts +17 -0
- package/src/index.ts +1 -0
- package/src/lib/DeployClient.ts +334 -0
- package/src/lib/FilesExist.ts +25 -0
- package/src/lib/S3TransferUtility.spec.ts +15 -0
- package/src/lib/S3TransferUtility.ts +113 -0
- package/src/lib/S3Uploader.ts +94 -0
- package/src/lib/Versions.ts +101 -0
- package/src/lib/__snapshots__/S3TransferUtility.spec.ts.snap +12 -0
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PreflightCommand = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
require("reflect-metadata");
|
|
6
|
+
const sts = tslib_1.__importStar(require("@aws-sdk/client-sts"));
|
|
7
|
+
const command_1 = require("@oclif/command");
|
|
8
|
+
const listr2_1 = require("listr2");
|
|
9
|
+
const Config_1 = require("../config/Config");
|
|
10
|
+
const DeployClient_1 = tslib_1.__importDefault(require("../lib/DeployClient"));
|
|
11
|
+
class PreflightCommand extends command_1.Command {
|
|
12
|
+
async run() {
|
|
13
|
+
var _a, _b, _c, _d, _e, _f;
|
|
14
|
+
const config = Config_1.Config.instance;
|
|
15
|
+
// const RUNNING_TEXT = ' RUNS ';
|
|
16
|
+
// const RUNNING = chalk.reset.inverse.yellow.bold(RUNNING_TEXT) + ' ';
|
|
17
|
+
const RUNNING = ''; //chalk.reset.inverse.yellow.bold(RUNNING_TEXT) + ' ';
|
|
18
|
+
const { flags: parsedFlags } = this.parse(PreflightCommand);
|
|
19
|
+
const appName = (_b = (_a = parsedFlags.appName) !== null && _a !== void 0 ? _a : parsedFlags['app-name']) !== null && _b !== void 0 ? _b : config.app.name;
|
|
20
|
+
const deployerLambdaName = (_d = (_c = parsedFlags.deployerLambdaName) !== null && _c !== void 0 ? _c : parsedFlags['deployer-lambda-name']) !== null && _d !== void 0 ? _d : config.deployer.lambdaName;
|
|
21
|
+
const semVer = (_f = (_e = parsedFlags.newVersion) !== null && _e !== void 0 ? _e : parsedFlags['new-version']) !== null && _f !== void 0 ? _f : config.app.semVer;
|
|
22
|
+
const overwrite = parsedFlags.overwrite;
|
|
23
|
+
// Override the config value
|
|
24
|
+
config.deployer.lambdaName = deployerLambdaName;
|
|
25
|
+
config.app.name = appName;
|
|
26
|
+
config.app.semVer = semVer;
|
|
27
|
+
// TODO: Pick and validate the appname/semver from the config and flags
|
|
28
|
+
// Get the account ID and region from STS
|
|
29
|
+
// TODO: Move this to the right place
|
|
30
|
+
if (config.app.awsAccountID === '' || config.app.awsRegion === '') {
|
|
31
|
+
const stsClient = new sts.STSClient({
|
|
32
|
+
maxAttempts: 8,
|
|
33
|
+
});
|
|
34
|
+
const stsResponse = await stsClient.send(new sts.GetCallerIdentityCommand({}));
|
|
35
|
+
if (config.app.awsAccountID === '') {
|
|
36
|
+
config.app.awsAccountID = stsResponse.Account;
|
|
37
|
+
}
|
|
38
|
+
if (config.app.awsRegion === '') {
|
|
39
|
+
config.app.awsRegion = stsClient.config.region;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
//
|
|
43
|
+
// Setup Tasks
|
|
44
|
+
//
|
|
45
|
+
const tasks = new listr2_1.Listr([
|
|
46
|
+
{
|
|
47
|
+
title: 'Preflight Version Check',
|
|
48
|
+
task: async (ctx, task) => {
|
|
49
|
+
const origTitle = task.title;
|
|
50
|
+
task.title = RUNNING + origTitle;
|
|
51
|
+
// Confirm the Version Does Not Exist in Published State
|
|
52
|
+
task.output = `Checking if deployed app/version already exists for ${config.app.name}/${semVer}`;
|
|
53
|
+
const preflightResult = await DeployClient_1.default.DeployVersionPreflight({
|
|
54
|
+
config,
|
|
55
|
+
needS3Creds: false,
|
|
56
|
+
overwrite,
|
|
57
|
+
output: (message) => (task.output = message),
|
|
58
|
+
});
|
|
59
|
+
if (preflightResult.exists) {
|
|
60
|
+
if (!overwrite) {
|
|
61
|
+
throw new Error(`App/Version already exists: ${config.app.name}/${config.app.semVer}`);
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
task.title = `Warning: App/Version already exists: ${config.app.name}/${config.app.semVer}`;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
task.title = `App/Version does not exist: ${config.app.name}/${config.app.semVer}`;
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
},
|
|
72
|
+
], {
|
|
73
|
+
rendererOptions: {
|
|
74
|
+
showTimer: true,
|
|
75
|
+
},
|
|
76
|
+
});
|
|
77
|
+
await tasks.run();
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
exports.PreflightCommand = PreflightCommand;
|
|
81
|
+
PreflightCommand.description = 'Check if app/version are available';
|
|
82
|
+
PreflightCommand.examples = [
|
|
83
|
+
`$ pwrdrvr preflight -d microapps-deployer-dev -a release -n 0.0.13
|
|
84
|
+
✔ Preflight Version Check [0.2s]
|
|
85
|
+
`,
|
|
86
|
+
];
|
|
87
|
+
PreflightCommand.flags = {
|
|
88
|
+
version: command_1.flags.version({
|
|
89
|
+
char: 'v',
|
|
90
|
+
}),
|
|
91
|
+
help: command_1.flags.help(),
|
|
92
|
+
// Deprecated
|
|
93
|
+
appName: command_1.flags.string({
|
|
94
|
+
multiple: false,
|
|
95
|
+
required: false,
|
|
96
|
+
hidden: true,
|
|
97
|
+
}),
|
|
98
|
+
'app-name': command_1.flags.string({
|
|
99
|
+
char: 'a',
|
|
100
|
+
multiple: false,
|
|
101
|
+
exactlyOne: ['app-name', 'appName'],
|
|
102
|
+
description: 'MicroApps app name (this becomes the path the app is rooted at)',
|
|
103
|
+
}),
|
|
104
|
+
// Deprecated
|
|
105
|
+
newVersion: command_1.flags.string({
|
|
106
|
+
multiple: false,
|
|
107
|
+
required: false,
|
|
108
|
+
hidden: true,
|
|
109
|
+
}),
|
|
110
|
+
'new-version': command_1.flags.string({
|
|
111
|
+
char: 'n',
|
|
112
|
+
multiple: false,
|
|
113
|
+
exactlyOne: ['new-version', 'newVersion'],
|
|
114
|
+
description: 'New semantic version to apply',
|
|
115
|
+
}),
|
|
116
|
+
// Deprecated
|
|
117
|
+
deployerLambdaName: command_1.flags.string({
|
|
118
|
+
multiple: false,
|
|
119
|
+
required: false,
|
|
120
|
+
hidden: true,
|
|
121
|
+
}),
|
|
122
|
+
'deployer-lambda-name': command_1.flags.string({
|
|
123
|
+
char: 'd',
|
|
124
|
+
multiple: false,
|
|
125
|
+
exactlyOne: ['deployer-lambda-name', 'deployerLambdaName'],
|
|
126
|
+
description: 'Name of the deployer lambda function',
|
|
127
|
+
}),
|
|
128
|
+
overwrite: command_1.flags.boolean({
|
|
129
|
+
char: 'o',
|
|
130
|
+
required: false,
|
|
131
|
+
default: false,
|
|
132
|
+
description: 'Allow overwrite - Warn but do not fail if version exists. Discouraged outside of test envs if cacheable static files have changed.',
|
|
133
|
+
}),
|
|
134
|
+
};
|
|
135
|
+
//# sourceMappingURL=preflight.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preflight.js","sourceRoot":"","sources":["../../src/commands/preflight.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
2
|
+
import { Command, flags as flagsParser } from '@oclif/command';
|
|
3
|
+
export declare class PublishCommand extends Command {
|
|
4
|
+
static description: string;
|
|
5
|
+
static examples: string[];
|
|
6
|
+
static flags: {
|
|
7
|
+
version: import("@oclif/parser/lib/flags").IBooleanFlag<void>;
|
|
8
|
+
help: import("@oclif/parser/lib/flags").IBooleanFlag<void>;
|
|
9
|
+
deployerLambdaName: flagsParser.IOptionFlag<string>;
|
|
10
|
+
'deployer-lambda-name': flagsParser.IOptionFlag<string>;
|
|
11
|
+
newVersion: flagsParser.IOptionFlag<string>;
|
|
12
|
+
'new-version': flagsParser.IOptionFlag<string>;
|
|
13
|
+
appName: flagsParser.IOptionFlag<string>;
|
|
14
|
+
'app-name': flagsParser.IOptionFlag<string>;
|
|
15
|
+
staticAssetsPath: flagsParser.IOptionFlag<string>;
|
|
16
|
+
'static-assets-path': flagsParser.IOptionFlag<string>;
|
|
17
|
+
defaultFile: flagsParser.IOptionFlag<string>;
|
|
18
|
+
'default-file': flagsParser.IOptionFlag<string>;
|
|
19
|
+
overwrite: import("@oclif/parser/lib/flags").IBooleanFlag<boolean>;
|
|
20
|
+
noCache: import("@oclif/parser/lib/flags").IBooleanFlag<boolean>;
|
|
21
|
+
'no-cache': import("@oclif/parser/lib/flags").IBooleanFlag<boolean>;
|
|
22
|
+
};
|
|
23
|
+
run(): Promise<void>;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=publish-static.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publish-static.d.ts","sourceRoot":"","sources":["../../src/commands/publish-static.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAI1B,OAAO,EAAE,OAAO,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAoB/D,qBAAa,cAAe,SAAQ,OAAO;IACzC,MAAM,CAAC,WAAW,SAA+E;IAEjG,MAAM,CAAC,QAAQ,WAUb;IAEF,MAAM,CAAC,KAAK;;;;;;;;;;;;;;;;MAuFV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA+R3B"}
|
|
@@ -0,0 +1,361 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PublishCommand = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
require("reflect-metadata");
|
|
6
|
+
const s3 = tslib_1.__importStar(require("@aws-sdk/client-s3"));
|
|
7
|
+
const sts = tslib_1.__importStar(require("@aws-sdk/client-sts"));
|
|
8
|
+
const lib_storage_1 = require("@aws-sdk/lib-storage");
|
|
9
|
+
const command_1 = require("@oclif/command");
|
|
10
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
11
|
+
const pMap = require('p-map');
|
|
12
|
+
const path = tslib_1.__importStar(require("path"));
|
|
13
|
+
const fs_extra_1 = require("fs-extra");
|
|
14
|
+
const listr2_1 = require("listr2");
|
|
15
|
+
const mime_types_1 = require("mime-types");
|
|
16
|
+
const Config_1 = require("../config/Config");
|
|
17
|
+
const DeployClient_1 = tslib_1.__importDefault(require("../lib/DeployClient"));
|
|
18
|
+
const S3Uploader_1 = require("../lib/S3Uploader");
|
|
19
|
+
const S3TransferUtility_1 = require("../lib/S3TransferUtility");
|
|
20
|
+
class PublishCommand extends command_1.Command {
|
|
21
|
+
async run() {
|
|
22
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
23
|
+
const config = Config_1.Config.instance;
|
|
24
|
+
// const RUNNING_TEXT = ' RUNS ';
|
|
25
|
+
// const RUNNING = chalk.reset.inverse.yellow.bold(RUNNING_TEXT) + ' ';
|
|
26
|
+
const RUNNING = ''; //chalk.reset.inverse.yellow.bold(RUNNING_TEXT) + ' ';
|
|
27
|
+
const { flags: parsedFlags } = this.parse(PublishCommand);
|
|
28
|
+
const appName = (_b = (_a = parsedFlags.appName) !== null && _a !== void 0 ? _a : parsedFlags['app-name']) !== null && _b !== void 0 ? _b : config.app.name;
|
|
29
|
+
const deployerLambdaName = (_d = (_c = parsedFlags.deployerLambdaName) !== null && _c !== void 0 ? _c : parsedFlags['deployer-lambda-name']) !== null && _d !== void 0 ? _d : config.deployer.lambdaName;
|
|
30
|
+
const semVer = (_f = (_e = parsedFlags.newVersion) !== null && _e !== void 0 ? _e : parsedFlags['new-version']) !== null && _f !== void 0 ? _f : config.app.semVer;
|
|
31
|
+
const staticAssetsPath = (_h = (_g = parsedFlags.staticAssetsPath) !== null && _g !== void 0 ? _g : parsedFlags['static-assets-path']) !== null && _h !== void 0 ? _h : config.app.staticAssetsPath;
|
|
32
|
+
const defaultFile = (_k = (_j = parsedFlags.defaultFile) !== null && _j !== void 0 ? _j : parsedFlags['default-file']) !== null && _k !== void 0 ? _k : config.app.defaultFile;
|
|
33
|
+
const overwrite = parsedFlags.overwrite;
|
|
34
|
+
const noCache = (_l = parsedFlags.noCache) !== null && _l !== void 0 ? _l : parsedFlags['no-cache'];
|
|
35
|
+
// Override the config value
|
|
36
|
+
config.deployer.lambdaName = deployerLambdaName;
|
|
37
|
+
delete config.app.lambdaName;
|
|
38
|
+
config.app.name = appName;
|
|
39
|
+
config.app.semVer = semVer;
|
|
40
|
+
config.app.staticAssetsPath = staticAssetsPath;
|
|
41
|
+
config.app.defaultFile = defaultFile;
|
|
42
|
+
// Get the account ID and region from STS
|
|
43
|
+
// TODO: Move this to the right place
|
|
44
|
+
if (config.app.awsAccountID === '' || config.app.awsRegion === '') {
|
|
45
|
+
const stsClient = new sts.STSClient({
|
|
46
|
+
maxAttempts: 8,
|
|
47
|
+
});
|
|
48
|
+
const stsResponse = await stsClient.send(new sts.GetCallerIdentityCommand({}));
|
|
49
|
+
if (config.app.awsAccountID === '') {
|
|
50
|
+
config.app.awsAccountID = stsResponse.Account;
|
|
51
|
+
}
|
|
52
|
+
if (config.app.awsRegion === '') {
|
|
53
|
+
config.app.awsRegion = stsClient.config.region;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
if (config.app.staticAssetsPath === undefined) {
|
|
57
|
+
this.error('staticAssetsPath must be specified');
|
|
58
|
+
}
|
|
59
|
+
if (config.app.defaultFile === undefined || config.app.defaultFile === '') {
|
|
60
|
+
this.error('defaultFile must be specified');
|
|
61
|
+
}
|
|
62
|
+
//
|
|
63
|
+
// Setup Tasks
|
|
64
|
+
//
|
|
65
|
+
const tasks = new listr2_1.Listr([
|
|
66
|
+
{
|
|
67
|
+
// TODO: Disable this task if no static assets path
|
|
68
|
+
title: 'Confirm Static Assets Folder Exists',
|
|
69
|
+
task: async (ctx, task) => {
|
|
70
|
+
const origTitle = task.title;
|
|
71
|
+
task.title = RUNNING + origTitle;
|
|
72
|
+
// Check that Static Assets Folder exists
|
|
73
|
+
if (!(await (0, fs_extra_1.pathExists)(config.app.staticAssetsPath))) {
|
|
74
|
+
this.error(`Static asset path does not exist: ${config.app.staticAssetsPath}`);
|
|
75
|
+
}
|
|
76
|
+
task.title = origTitle;
|
|
77
|
+
},
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
// TODO: Disable this task if no static assets path
|
|
81
|
+
title: 'Get S3 Temp Credentials',
|
|
82
|
+
task: async (ctx, task) => {
|
|
83
|
+
const origTitle = task.title;
|
|
84
|
+
task.title = RUNNING + origTitle;
|
|
85
|
+
// Confirm the Version Does Not Exist in Published State
|
|
86
|
+
task.output = `Checking if deployed app/version already exists for ${config.app.name}/${semVer}`;
|
|
87
|
+
ctx.preflightResult = await DeployClient_1.default.DeployVersionPreflight({
|
|
88
|
+
config,
|
|
89
|
+
overwrite,
|
|
90
|
+
output: (message) => (task.output = message),
|
|
91
|
+
});
|
|
92
|
+
if (ctx.preflightResult.exists) {
|
|
93
|
+
if (!overwrite) {
|
|
94
|
+
throw new Error(`App/Version already exists: ${config.app.name}/${config.app.semVer}`);
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
task.title = `Warning: App/Version already exists: ${config.app.name}/${config.app.semVer}`;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
task.title = `App/Version does not exist: ${config.app.name}/${config.app.semVer}`;
|
|
102
|
+
}
|
|
103
|
+
},
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
// TODO: Disable this task if no static assets path
|
|
107
|
+
title: 'Copy Static Files to Local Upload Dir',
|
|
108
|
+
task: async (ctx, task) => {
|
|
109
|
+
const origTitle = task.title;
|
|
110
|
+
task.title = RUNNING + origTitle;
|
|
111
|
+
// Copy files to local dir to be uploaded
|
|
112
|
+
await S3Uploader_1.S3Uploader.CopyToUploadDir(config, ctx.preflightResult.response.s3UploadUrl);
|
|
113
|
+
task.title = origTitle;
|
|
114
|
+
},
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
// TODO: Disable this task if no static assets path
|
|
118
|
+
title: 'Enumerate Files to Upload to S3',
|
|
119
|
+
task: (ctx, task) => {
|
|
120
|
+
const origTitle = task.title;
|
|
121
|
+
task.title = RUNNING + origTitle;
|
|
122
|
+
ctx.files = S3TransferUtility_1.S3TransferUtility.GetFiles(S3Uploader_1.S3Uploader.TempDir);
|
|
123
|
+
task.title = origTitle;
|
|
124
|
+
},
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
// TODO: Disable this task if no static assets path
|
|
128
|
+
title: 'Upload Static Files to S3',
|
|
129
|
+
task: async (ctx, task) => {
|
|
130
|
+
const origTitle = task.title;
|
|
131
|
+
task.title = RUNNING + origTitle;
|
|
132
|
+
const { bucketName, destinationPrefix } = S3Uploader_1.S3Uploader.ParseUploadPath(ctx.preflightResult.response.s3UploadUrl);
|
|
133
|
+
// Use temp credentials for S3
|
|
134
|
+
const s3Client = new s3.S3Client({
|
|
135
|
+
maxAttempts: 16,
|
|
136
|
+
credentials: {
|
|
137
|
+
accessKeyId: ctx.preflightResult.response.awsCredentials.accessKeyId,
|
|
138
|
+
secretAccessKey: ctx.preflightResult.response.awsCredentials.secretAccessKey,
|
|
139
|
+
sessionToken: ctx.preflightResult.response.awsCredentials.sessionToken,
|
|
140
|
+
},
|
|
141
|
+
});
|
|
142
|
+
// Setup caching on static assets
|
|
143
|
+
// NoCache - Only used for test deploys, requires browser and CloudFront to refetch every time
|
|
144
|
+
// Default - 24 hours
|
|
145
|
+
const CacheControl = noCache
|
|
146
|
+
? 'max-age=0, must-revalidate, public'
|
|
147
|
+
: `max-age=${24 * 60 * 60}, public`;
|
|
148
|
+
const pathWithoutAppAndVer = path.join(S3Uploader_1.S3Uploader.TempDir, destinationPrefix);
|
|
149
|
+
// Listr causes OOM if passes a list of, say, 5,000 to 20,000 files
|
|
150
|
+
if (ctx.files.length > 200) {
|
|
151
|
+
const fileCountMsgInterval = Math.floor(ctx.files.length / 10);
|
|
152
|
+
let filesPublished = 0;
|
|
153
|
+
await pMap(ctx.files, async (filePath) => {
|
|
154
|
+
// Can't use tasks for each file
|
|
155
|
+
const relFilePath = path.relative(pathWithoutAppAndVer, filePath);
|
|
156
|
+
if (ctx.files.length > 1000 &&
|
|
157
|
+
(filesPublished % fileCountMsgInterval === 0 ||
|
|
158
|
+
filesPublished === ctx.files.length)) {
|
|
159
|
+
task.output = `Uploaded ${filesPublished} of ${ctx.files.length} files`;
|
|
160
|
+
}
|
|
161
|
+
else if (ctx.files.length <= 1000) {
|
|
162
|
+
task.output = `Uploading ${relFilePath}`;
|
|
163
|
+
}
|
|
164
|
+
const upload = new lib_storage_1.Upload({
|
|
165
|
+
client: s3Client,
|
|
166
|
+
leavePartsOnError: false,
|
|
167
|
+
params: {
|
|
168
|
+
Bucket: bucketName,
|
|
169
|
+
Key: path.relative(S3Uploader_1.S3Uploader.TempDir, filePath),
|
|
170
|
+
Body: (0, fs_extra_1.createReadStream)(filePath),
|
|
171
|
+
ContentType: (0, mime_types_1.contentType)(path.basename(filePath)) || 'application/octet-stream',
|
|
172
|
+
CacheControl,
|
|
173
|
+
},
|
|
174
|
+
});
|
|
175
|
+
await upload.done();
|
|
176
|
+
filesPublished++;
|
|
177
|
+
}, { concurrency: 40 });
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
const tasks = ctx.files.map((filePath) => ({
|
|
181
|
+
task: async (ctx, subtask) => {
|
|
182
|
+
const relFilePath = path.relative(pathWithoutAppAndVer, filePath);
|
|
183
|
+
const origTitle = relFilePath;
|
|
184
|
+
subtask.title = RUNNING + origTitle;
|
|
185
|
+
const upload = new lib_storage_1.Upload({
|
|
186
|
+
client: s3Client,
|
|
187
|
+
leavePartsOnError: false,
|
|
188
|
+
params: {
|
|
189
|
+
Bucket: bucketName,
|
|
190
|
+
Key: path.relative(S3Uploader_1.S3Uploader.TempDir, filePath),
|
|
191
|
+
Body: (0, fs_extra_1.createReadStream)(filePath),
|
|
192
|
+
ContentType: (0, mime_types_1.contentType)(path.basename(filePath)) || 'application/octet-stream',
|
|
193
|
+
CacheControl,
|
|
194
|
+
},
|
|
195
|
+
});
|
|
196
|
+
await upload.done();
|
|
197
|
+
subtask.title = origTitle;
|
|
198
|
+
},
|
|
199
|
+
}));
|
|
200
|
+
task.title = origTitle;
|
|
201
|
+
return task.newListr(tasks, {
|
|
202
|
+
concurrent: 8,
|
|
203
|
+
rendererOptions: {
|
|
204
|
+
clearOutput: false,
|
|
205
|
+
showErrorMessage: true,
|
|
206
|
+
showTimer: true,
|
|
207
|
+
},
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
},
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
title: `Creating MicroApp Application: ${config.app.name}`,
|
|
214
|
+
task: async (ctx, task) => {
|
|
215
|
+
const origTitle = task.title;
|
|
216
|
+
task.title = RUNNING + origTitle;
|
|
217
|
+
// Call Deployer to Create App if Not Exists
|
|
218
|
+
await DeployClient_1.default.CreateApp({ config });
|
|
219
|
+
task.title = origTitle;
|
|
220
|
+
},
|
|
221
|
+
},
|
|
222
|
+
{
|
|
223
|
+
title: `Creating MicroApp Version: ${config.app.semVer}`,
|
|
224
|
+
task: async (ctx, task) => {
|
|
225
|
+
var _a;
|
|
226
|
+
const origTitle = task.title;
|
|
227
|
+
task.title = RUNNING + origTitle;
|
|
228
|
+
const request = {
|
|
229
|
+
appName: config.app.name,
|
|
230
|
+
semVer: config.app.semVer,
|
|
231
|
+
deployerLambdaName: config.deployer.lambdaName,
|
|
232
|
+
defaultFile: config.app.defaultFile,
|
|
233
|
+
appType: 'static',
|
|
234
|
+
overwrite,
|
|
235
|
+
output: (message) => (task.output = message),
|
|
236
|
+
};
|
|
237
|
+
// Use DeployVersionLite if createAlias is supported
|
|
238
|
+
if (((_a = ctx.preflightResult.response.capabilities) === null || _a === void 0 ? void 0 : _a['createAlias']) === 'true') {
|
|
239
|
+
task.output = 'Using DeployVersionLite';
|
|
240
|
+
await DeployClient_1.default.DeployVersionLite(request);
|
|
241
|
+
}
|
|
242
|
+
else {
|
|
243
|
+
// Use legacy DeployVersion if createAlias is not supported
|
|
244
|
+
task.output = 'Using DeployVersion';
|
|
245
|
+
await DeployClient_1.default.DeployVersion(request);
|
|
246
|
+
}
|
|
247
|
+
task.title = origTitle;
|
|
248
|
+
},
|
|
249
|
+
},
|
|
250
|
+
], {
|
|
251
|
+
rendererOptions: {
|
|
252
|
+
showTimer: true,
|
|
253
|
+
},
|
|
254
|
+
});
|
|
255
|
+
try {
|
|
256
|
+
await tasks.run();
|
|
257
|
+
}
|
|
258
|
+
finally {
|
|
259
|
+
await S3Uploader_1.S3Uploader.removeTempDirIfExists();
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
exports.PublishCommand = PublishCommand;
|
|
264
|
+
PublishCommand.description = 'Publish arbitrary framework static app - deploy static assets to S3 only.';
|
|
265
|
+
PublishCommand.examples = [
|
|
266
|
+
`$ pwrdrvr publish-static -d microapps-deployer-dev -l microapps-app-release-dev -a release -n 0.0.21
|
|
267
|
+
✔ Get S3 Temp Credentials [1s]
|
|
268
|
+
✔ Confirm Static Assets Folder Exists [0.0s]
|
|
269
|
+
✔ Copy Static Files to Local Upload Dir [0.0s]
|
|
270
|
+
✔ Enumerate Files to Upload to S3 [0.0s]
|
|
271
|
+
✔ Upload Static Files to S3 [1s]
|
|
272
|
+
✔ Creating MicroApp Application: release [0.0s]
|
|
273
|
+
✔ Creating MicroApp Version: 0.0.21 [1s]
|
|
274
|
+
`,
|
|
275
|
+
];
|
|
276
|
+
PublishCommand.flags = {
|
|
277
|
+
version: command_1.flags.version({
|
|
278
|
+
char: 'v',
|
|
279
|
+
}),
|
|
280
|
+
help: command_1.flags.help(),
|
|
281
|
+
// Deprecated
|
|
282
|
+
deployerLambdaName: command_1.flags.string({
|
|
283
|
+
multiple: false,
|
|
284
|
+
required: false,
|
|
285
|
+
hidden: true,
|
|
286
|
+
}),
|
|
287
|
+
'deployer-lambda-name': command_1.flags.string({
|
|
288
|
+
char: 'd',
|
|
289
|
+
multiple: false,
|
|
290
|
+
exactlyOne: ['deployer-lambda-name', 'deployerLambdaName'],
|
|
291
|
+
description: 'Name of the deployer lambda function',
|
|
292
|
+
}),
|
|
293
|
+
// Deprecated
|
|
294
|
+
newVersion: command_1.flags.string({
|
|
295
|
+
multiple: false,
|
|
296
|
+
required: false,
|
|
297
|
+
hidden: true,
|
|
298
|
+
}),
|
|
299
|
+
'new-version': command_1.flags.string({
|
|
300
|
+
char: 'n',
|
|
301
|
+
multiple: false,
|
|
302
|
+
exactlyOne: ['new-version', 'newVersion'],
|
|
303
|
+
description: 'New semantic version to apply',
|
|
304
|
+
}),
|
|
305
|
+
// Deprecated
|
|
306
|
+
appName: command_1.flags.string({
|
|
307
|
+
multiple: false,
|
|
308
|
+
required: false,
|
|
309
|
+
hidden: true,
|
|
310
|
+
}),
|
|
311
|
+
'app-name': command_1.flags.string({
|
|
312
|
+
char: 'a',
|
|
313
|
+
multiple: false,
|
|
314
|
+
exactlyOne: ['app-name', 'appName'],
|
|
315
|
+
description: 'MicroApps app name (this becomes the path the app is rooted at)',
|
|
316
|
+
}),
|
|
317
|
+
// Deprecated
|
|
318
|
+
staticAssetsPath: command_1.flags.string({
|
|
319
|
+
multiple: false,
|
|
320
|
+
required: false,
|
|
321
|
+
hidden: true,
|
|
322
|
+
}),
|
|
323
|
+
'static-assets-path': command_1.flags.string({
|
|
324
|
+
char: 's',
|
|
325
|
+
multiple: false,
|
|
326
|
+
required: false,
|
|
327
|
+
exactlyOne: ['static-assets-path', 'staticAssetsPath'],
|
|
328
|
+
description: 'Path to files to be uploaded to S3 static bucket at app/version/ path. Do include app/version/ in path if files are already "rooted" under that path locally.',
|
|
329
|
+
}),
|
|
330
|
+
// Deprecated
|
|
331
|
+
defaultFile: command_1.flags.string({
|
|
332
|
+
multiple: false,
|
|
333
|
+
required: false,
|
|
334
|
+
hidden: true,
|
|
335
|
+
exclusive: ['default-file'],
|
|
336
|
+
}),
|
|
337
|
+
'default-file': command_1.flags.string({
|
|
338
|
+
char: 'i',
|
|
339
|
+
multiple: false,
|
|
340
|
+
required: false,
|
|
341
|
+
description: 'Default file to return when the app is loaded via the router without a version (e.g. when app/ is requested).',
|
|
342
|
+
}),
|
|
343
|
+
overwrite: command_1.flags.boolean({
|
|
344
|
+
char: 'o',
|
|
345
|
+
required: false,
|
|
346
|
+
default: false,
|
|
347
|
+
description: 'Allow overwrite - Warn but do not fail if version exists. Discouraged outside of test envs if cacheable static files have changed.',
|
|
348
|
+
}),
|
|
349
|
+
// Deprecated
|
|
350
|
+
noCache: command_1.flags.boolean({
|
|
351
|
+
required: false,
|
|
352
|
+
default: false,
|
|
353
|
+
hidden: true,
|
|
354
|
+
}),
|
|
355
|
+
'no-cache': command_1.flags.boolean({
|
|
356
|
+
required: false,
|
|
357
|
+
default: false,
|
|
358
|
+
description: 'Force revalidation of CloudFront and browser caching of static assets',
|
|
359
|
+
}),
|
|
360
|
+
};
|
|
361
|
+
//# sourceMappingURL=publish-static.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publish-static.js","sourceRoot":"","sources":["../../src/commands/publish-static.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
2
|
+
import { Command, flags as flagsParser } from '@oclif/command';
|
|
3
|
+
export declare class PublishCommand extends Command {
|
|
4
|
+
static description: string;
|
|
5
|
+
static examples: string[];
|
|
6
|
+
static flags: {
|
|
7
|
+
version: import("@oclif/parser/lib/flags").IBooleanFlag<void>;
|
|
8
|
+
help: import("@oclif/parser/lib/flags").IBooleanFlag<void>;
|
|
9
|
+
deployerLambdaName: flagsParser.IOptionFlag<string>;
|
|
10
|
+
'deployer-lambda-name': flagsParser.IOptionFlag<string>;
|
|
11
|
+
newVersion: flagsParser.IOptionFlag<string>;
|
|
12
|
+
'new-version': flagsParser.IOptionFlag<string>;
|
|
13
|
+
appLambdaName: flagsParser.IOptionFlag<string>;
|
|
14
|
+
'app-lambda-name': flagsParser.IOptionFlag<string>;
|
|
15
|
+
appName: flagsParser.IOptionFlag<string>;
|
|
16
|
+
'app-name': flagsParser.IOptionFlag<string>;
|
|
17
|
+
staticAssetsPath: flagsParser.IOptionFlag<string>;
|
|
18
|
+
'static-assets-path': flagsParser.IOptionFlag<string>;
|
|
19
|
+
defaultFile: flagsParser.IOptionFlag<string>;
|
|
20
|
+
'default-file': flagsParser.IOptionFlag<string>;
|
|
21
|
+
overwrite: import("@oclif/parser/lib/flags").IBooleanFlag<boolean>;
|
|
22
|
+
noCache: import("@oclif/parser/lib/flags").IBooleanFlag<boolean>;
|
|
23
|
+
'no-cache': import("@oclif/parser/lib/flags").IBooleanFlag<boolean>;
|
|
24
|
+
'startup-type': flagsParser.IOptionFlag<string>;
|
|
25
|
+
type: flagsParser.IOptionFlag<string>;
|
|
26
|
+
url: flagsParser.IOptionFlag<string>;
|
|
27
|
+
};
|
|
28
|
+
private VersionAndAlias;
|
|
29
|
+
run(): Promise<void>;
|
|
30
|
+
/**
|
|
31
|
+
* Publish an app version to Lambda
|
|
32
|
+
*
|
|
33
|
+
* @param config
|
|
34
|
+
* @param versions
|
|
35
|
+
* @deprecated 2023-01-16 - The deployer svc now creates the alias and, optionally, the version
|
|
36
|
+
*/
|
|
37
|
+
private deployToLambda;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=publish.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../../src/commands/publish.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAK1B,OAAO,EAAE,OAAO,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,gBAAgB,CAAC;AA4C/D,qBAAa,cAAe,SAAQ,OAAO;IACzC,MAAM,CAAC,WAAW,SAC6H;IAE/I,MAAM,CAAC,QAAQ,WAWb;IAEF,MAAM,CAAC,KAAK;;;;;;;;;;;;;;;;;;;;;MA0HV;IAEF,OAAO,CAAC,eAAe,CAAY;IAE7B,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IA4X1B;;;;;;OAMG;YACW,cAAc;CAkF7B"}
|