cdk8s-image 0.2.175 → 0.2.176
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/.jsii +45 -7
- package/API.md +5 -1
- package/lib/image.d.ts +15 -1
- package/lib/image.js +11 -9
- package/package.json +1 -1
package/.jsii
CHANGED
|
@@ -156,7 +156,7 @@
|
|
|
156
156
|
"assembly": "cdk8s-image",
|
|
157
157
|
"base": "constructs.Construct",
|
|
158
158
|
"docs": {
|
|
159
|
-
"remarks": "The image will be built using `docker build` and then pushed through `docker\npush`. The URL of the pushed image can be accessed through `image.url`.\n\nIf you push to a registry other
|
|
159
|
+
"remarks": "The image will be built using `docker build` and then pushed through `docker\npush`. The URL of the pushed image can be accessed through `image.url`.\n\nIf you push to a registry other than docker hub, you can specify the registry\nURL through the `registry` option.",
|
|
160
160
|
"stability": "stable",
|
|
161
161
|
"summary": "Represents a docker image built during synthesis from a context directory (`dir`) with a `Dockerfile`."
|
|
162
162
|
},
|
|
@@ -167,7 +167,7 @@
|
|
|
167
167
|
},
|
|
168
168
|
"locationInModule": {
|
|
169
169
|
"filename": "src/image.ts",
|
|
170
|
-
"line":
|
|
170
|
+
"line": 90
|
|
171
171
|
},
|
|
172
172
|
"parameters": [
|
|
173
173
|
{
|
|
@@ -193,7 +193,7 @@
|
|
|
193
193
|
"kind": "class",
|
|
194
194
|
"locationInModule": {
|
|
195
195
|
"filename": "src/image.ts",
|
|
196
|
-
"line":
|
|
196
|
+
"line": 84
|
|
197
197
|
},
|
|
198
198
|
"name": "Image",
|
|
199
199
|
"properties": [
|
|
@@ -205,7 +205,7 @@
|
|
|
205
205
|
"immutable": true,
|
|
206
206
|
"locationInModule": {
|
|
207
207
|
"filename": "src/image.ts",
|
|
208
|
-
"line":
|
|
208
|
+
"line": 88
|
|
209
209
|
},
|
|
210
210
|
"name": "url",
|
|
211
211
|
"type": {
|
|
@@ -285,6 +285,25 @@
|
|
|
285
285
|
"primitive": "string"
|
|
286
286
|
}
|
|
287
287
|
},
|
|
288
|
+
{
|
|
289
|
+
"abstract": true,
|
|
290
|
+
"docs": {
|
|
291
|
+
"default": "- auto-generated name",
|
|
292
|
+
"remarks": "Docker convention is {registry_name}/{name}:{tag}\nVisit https://docs.docker.com/engine/reference/commandline/tag/ for more information",
|
|
293
|
+
"stability": "stable",
|
|
294
|
+
"summary": "Name for the image."
|
|
295
|
+
},
|
|
296
|
+
"immutable": true,
|
|
297
|
+
"locationInModule": {
|
|
298
|
+
"filename": "src/image.ts",
|
|
299
|
+
"line": 58
|
|
300
|
+
},
|
|
301
|
+
"name": "name",
|
|
302
|
+
"optional": true,
|
|
303
|
+
"type": {
|
|
304
|
+
"primitive": "string"
|
|
305
|
+
}
|
|
306
|
+
},
|
|
288
307
|
{
|
|
289
308
|
"abstract": true,
|
|
290
309
|
"docs": {
|
|
@@ -294,7 +313,7 @@
|
|
|
294
313
|
"immutable": true,
|
|
295
314
|
"locationInModule": {
|
|
296
315
|
"filename": "src/image.ts",
|
|
297
|
-
"line":
|
|
316
|
+
"line": 71
|
|
298
317
|
},
|
|
299
318
|
"name": "platform",
|
|
300
319
|
"optional": true,
|
|
@@ -320,11 +339,30 @@
|
|
|
320
339
|
"type": {
|
|
321
340
|
"primitive": "string"
|
|
322
341
|
}
|
|
342
|
+
},
|
|
343
|
+
{
|
|
344
|
+
"abstract": true,
|
|
345
|
+
"docs": {
|
|
346
|
+
"default": "\"latest\"",
|
|
347
|
+
"remarks": "Docker convention is {registry_name}/{name}:{tag}\nVisit https://docs.docker.com/engine/reference/commandline/tag/ for more information",
|
|
348
|
+
"stability": "stable",
|
|
349
|
+
"summary": "Tag for the image."
|
|
350
|
+
},
|
|
351
|
+
"immutable": true,
|
|
352
|
+
"locationInModule": {
|
|
353
|
+
"filename": "src/image.ts",
|
|
354
|
+
"line": 66
|
|
355
|
+
},
|
|
356
|
+
"name": "tag",
|
|
357
|
+
"optional": true,
|
|
358
|
+
"type": {
|
|
359
|
+
"primitive": "string"
|
|
360
|
+
}
|
|
323
361
|
}
|
|
324
362
|
],
|
|
325
363
|
"symbolId": "src/image:ImageProps"
|
|
326
364
|
}
|
|
327
365
|
},
|
|
328
|
-
"version": "0.2.
|
|
329
|
-
"fingerprint": "
|
|
366
|
+
"version": "0.2.176",
|
|
367
|
+
"fingerprint": "H2Dl/nFvymcho9fIeKR3YO5S9KFFf7olWDNgetK01Ss="
|
|
330
368
|
}
|
package/API.md
CHANGED
|
@@ -23,7 +23,7 @@ Represents a docker image built during synthesis from a context directory (`dir`
|
|
|
23
23
|
The image will be built using `docker build` and then pushed through `docker
|
|
24
24
|
push`. The URL of the pushed image can be accessed through `image.url`.
|
|
25
25
|
|
|
26
|
-
If you push to a registry other
|
|
26
|
+
If you push to a registry other than docker hub, you can specify the registry
|
|
27
27
|
URL through the `registry` option.
|
|
28
28
|
|
|
29
29
|
__Implements__: [IConstruct](#constructs-iconstruct)
|
|
@@ -44,8 +44,10 @@ new Image(scope: Construct, id: string, props: ImageProps)
|
|
|
44
44
|
* **dir** (<code>string</code>) The docker build context directory (where `Dockerfile` is).
|
|
45
45
|
* **buildArgs** (<code>Array<[BuildArg](#cdk8s-image-buildarg)></code>) List of build args to pass to the build action. __*Optional*__
|
|
46
46
|
* **file** (<code>string</code>) Path to Dockerfile. __*Optional*__
|
|
47
|
+
* **name** (<code>string</code>) Name for the image. __*Default*__: auto-generated name
|
|
47
48
|
* **platform** (<code>string</code>) Set to specify the target platform for the build output, (for example, linux/amd64, linux/arm64, or darwin/amd64). __*Optional*__
|
|
48
49
|
* **registry** (<code>string</code>) The registry URL to use. __*Default*__: "docker.io/library"
|
|
50
|
+
* **tag** (<code>string</code>) Tag for the image. __*Default*__: "latest"
|
|
49
51
|
|
|
50
52
|
|
|
51
53
|
|
|
@@ -84,8 +86,10 @@ Name | Type | Description
|
|
|
84
86
|
**dir** | <code>string</code> | The docker build context directory (where `Dockerfile` is).
|
|
85
87
|
**buildArgs**? | <code>Array<[BuildArg](#cdk8s-image-buildarg)></code> | List of build args to pass to the build action.<br/>__*Optional*__
|
|
86
88
|
**file**? | <code>string</code> | Path to Dockerfile.<br/>__*Optional*__
|
|
89
|
+
**name**? | <code>string</code> | Name for the image.<br/>__*Default*__: auto-generated name
|
|
87
90
|
**platform**? | <code>string</code> | Set to specify the target platform for the build output, (for example, linux/amd64, linux/arm64, or darwin/amd64).<br/>__*Optional*__
|
|
88
91
|
**registry**? | <code>string</code> | The registry URL to use.<br/>__*Default*__: "docker.io/library"
|
|
92
|
+
**tag**? | <code>string</code> | Tag for the image.<br/>__*Default*__: "latest"
|
|
89
93
|
|
|
90
94
|
|
|
91
95
|
|
package/lib/image.d.ts
CHANGED
|
@@ -38,6 +38,20 @@ export interface ImageProps {
|
|
|
38
38
|
* Path to Dockerfile
|
|
39
39
|
*/
|
|
40
40
|
readonly file?: string;
|
|
41
|
+
/**
|
|
42
|
+
* Name for the image.
|
|
43
|
+
* Docker convention is {registry_name}/{name}:{tag}
|
|
44
|
+
* Visit https://docs.docker.com/engine/reference/commandline/tag/ for more information
|
|
45
|
+
* @default - auto-generated name
|
|
46
|
+
*/
|
|
47
|
+
readonly name?: string;
|
|
48
|
+
/**
|
|
49
|
+
* Tag for the image.
|
|
50
|
+
* Docker convention is {registry_name}/{name}:{tag}
|
|
51
|
+
* Visit https://docs.docker.com/engine/reference/commandline/tag/ for more information
|
|
52
|
+
* @default "latest"
|
|
53
|
+
*/
|
|
54
|
+
readonly tag?: string;
|
|
41
55
|
/**
|
|
42
56
|
* Set to specify the target platform for the build output, (for example, linux/amd64, linux/arm64, or darwin/amd64).
|
|
43
57
|
*/
|
|
@@ -50,7 +64,7 @@ export interface ImageProps {
|
|
|
50
64
|
* The image will be built using `docker build` and then pushed through `docker
|
|
51
65
|
* push`. The URL of the pushed image can be accessed through `image.url`.
|
|
52
66
|
*
|
|
53
|
-
* If you push to a registry other
|
|
67
|
+
* If you push to a registry other than docker hub, you can specify the registry
|
|
54
68
|
* URL through the `registry` option.
|
|
55
69
|
*/
|
|
56
70
|
export declare class Image extends Construct {
|
package/lib/image.js
CHANGED
|
@@ -14,14 +14,16 @@ const PARSE_DIGEST = /digest:\ (sha256:[0-9a-f]+)/;
|
|
|
14
14
|
* The image will be built using `docker build` and then pushed through `docker
|
|
15
15
|
* push`. The URL of the pushed image can be accessed through `image.url`.
|
|
16
16
|
*
|
|
17
|
-
* If you push to a registry other
|
|
17
|
+
* If you push to a registry other than docker hub, you can specify the registry
|
|
18
18
|
* URL through the `registry` option.
|
|
19
19
|
*/
|
|
20
20
|
class Image extends constructs_1.Construct {
|
|
21
21
|
constructor(scope, id, props) {
|
|
22
22
|
super(scope, id);
|
|
23
23
|
const registry = props.registry ?? 'docker.io/library';
|
|
24
|
-
const
|
|
24
|
+
const name = props.name || cdk8s_1.Names.toDnsLabel(this);
|
|
25
|
+
const tag = props.tag || 'latest';
|
|
26
|
+
const fullTag = `${registry}/${name}:${tag}`;
|
|
25
27
|
const allBuildArgs = [];
|
|
26
28
|
props.buildArgs?.forEach((arg) => {
|
|
27
29
|
allBuildArgs.push('--build-arg');
|
|
@@ -34,18 +36,18 @@ class Image extends constructs_1.Construct {
|
|
|
34
36
|
if (props.platform) {
|
|
35
37
|
allBuildArgs.push(`--platform=${props.platform}`);
|
|
36
38
|
}
|
|
37
|
-
console.error(`building docker image ${
|
|
38
|
-
_shell_1.shell('docker', 'build', '-t',
|
|
39
|
-
console.error(`pushing docker image ${
|
|
40
|
-
const push = _shell_1.shell('docker', 'push',
|
|
39
|
+
console.error(`building docker image ${fullTag} from ${props.file ? props.file : props.dir}`);
|
|
40
|
+
_shell_1.shell('docker', 'build', '-t', fullTag, props.dir, ...allBuildArgs);
|
|
41
|
+
console.error(`pushing docker image ${fullTag} to ${registry}`);
|
|
42
|
+
const push = _shell_1.shell('docker', 'push', fullTag);
|
|
41
43
|
const result = PARSE_DIGEST.exec(push);
|
|
42
44
|
if (!result) {
|
|
43
45
|
throw new Error(`unable to read image digest after push: ${push}`);
|
|
44
46
|
}
|
|
45
|
-
this.url = `${
|
|
47
|
+
this.url = props.tag ? fullTag : `${registry}/${name}@${result[1]}`;
|
|
46
48
|
}
|
|
47
49
|
}
|
|
48
50
|
exports.Image = Image;
|
|
49
51
|
_a = JSII_RTTI_SYMBOL_1;
|
|
50
|
-
Image[_a] = { fqn: "cdk8s-image.Image", version: "0.2.
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
52
|
+
Image[_a] = { fqn: "cdk8s-image.Image", version: "0.2.176" };
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW1hZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxpQ0FBOEI7QUFDOUIsMkNBQXVDO0FBQ3ZDLHFDQUFpQztBQUVqQyxNQUFNLFlBQVksR0FBRyw2QkFBNkIsQ0FBQztBQXFFbkQ7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBYSxLQUFNLFNBQVEsc0JBQVM7SUFNbEMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFpQjtRQUN6RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pCLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLElBQUksbUJBQW1CLENBQUM7UUFDdkQsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksSUFBSSxhQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xELE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxHQUFHLElBQUksUUFBUSxDQUFDO1FBQ2xDLE1BQU0sT0FBTyxHQUFHLEdBQUcsUUFBUSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUM3QyxNQUFNLFlBQVksR0FBYSxFQUFFLENBQUM7UUFDbEMsS0FBSyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUMvQixZQUFZLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ2pDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ2hELENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFO1lBQ2QsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN4QixZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMvQjtRQUNELElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRTtZQUNsQixZQUFZLENBQUMsSUFBSSxDQUFDLGNBQWMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7U0FDbkQ7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLHlCQUF5QixPQUFPLFNBQVMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDOUYsY0FBSyxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsWUFBWSxDQUFDLENBQUM7UUFDcEUsT0FBTyxDQUFDLEtBQUssQ0FBQyx3QkFBd0IsT0FBTyxPQUFPLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDaEUsTUFBTSxJQUFJLEdBQUcsY0FBSyxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFOUMsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1gsTUFBTSxJQUFJLEtBQUssQ0FBQywyQ0FBMkMsSUFBSSxFQUFFLENBQUMsQ0FBQztTQUNwRTtRQUVELElBQUksQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFBLENBQUMsQ0FBQSxHQUFHLFFBQVEsSUFBSSxJQUFJLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDcEUsQ0FBQzs7QUFuQ0gsc0JBb0NDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmFtZXMgfSBmcm9tICdjZGs4cyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IHNoZWxsIH0gZnJvbSAnLi9fc2hlbGwnO1xuXG5jb25zdCBQQVJTRV9ESUdFU1QgPSAvZGlnZXN0OlxcIChzaGEyNTY6WzAtOWEtZl0rKS87XG5cbi8qKlxuICogQnVpbGQgYXJnIHRvIHBhc3MgdG8gdGhlIGRvY2tlciBidWlsZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkQXJnIHtcbiAgLyoqXG4gICAqIHRoZSBuYW1lIG9mIHRoZSBidWlsZCBhcmdcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogdGhlIHZhbHVlIG9mIHRoZSBidWlsZCBhcmdcbiAgICovXG4gIHJlYWRvbmx5IHZhbHVlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcHMgZm9yIGBJbWFnZWAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW1hZ2VQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgZG9ja2VyIGJ1aWxkIGNvbnRleHQgZGlyZWN0b3J5ICh3aGVyZSBgRG9ja2VyZmlsZWAgaXMpLlxuICAgKi9cbiAgcmVhZG9ubHkgZGlyOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSByZWdpc3RyeSBVUkwgdG8gdXNlLlxuICAgKlxuICAgKiBUaGlzIHdpbGwgYmUgdXNlZCBhcyB0aGUgcHJlZml4IGZvciB0aGUgaW1hZ2UgbmFtZS5cbiAgICpcbiAgICogRm9yIGV4YW1wbGUsIGlmIHlvdSBoYXZlIGEgbG9jYWwgcmVnaXN0cnkgbGlzdGVuaW5nIG9uIHBvcnQgNTAwLCB5b3UgY2FuIHNldCB0aGlzIHRvIGBsb2NhbGhvc3Q6NTAwMGAuXG4gICAqXG4gICAqIEBkZWZhdWx0IFwiZG9ja2VyLmlvL2xpYnJhcnlcIlxuICAgKi9cbiAgcmVhZG9ubHkgcmVnaXN0cnk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIExpc3Qgb2YgYnVpbGQgYXJncyB0byBwYXNzIHRvIHRoZSBidWlsZCBhY3Rpb25cbiAgICovXG4gIHJlYWRvbmx5IGJ1aWxkQXJncz86IEJ1aWxkQXJnW107XG5cbiAgLyoqXG4gICAqIFBhdGggdG8gRG9ja2VyZmlsZVxuICAgKi9cbiAgcmVhZG9ubHkgZmlsZT86IHN0cmluZztcblxuICAvKipcbiAgICogTmFtZSBmb3IgdGhlIGltYWdlLlxuICAgKiBEb2NrZXIgY29udmVudGlvbiBpcyB7cmVnaXN0cnlfbmFtZX0ve25hbWV9Ont0YWd9XG4gICAqIFZpc2l0IGh0dHBzOi8vZG9jcy5kb2NrZXIuY29tL2VuZ2luZS9yZWZlcmVuY2UvY29tbWFuZGxpbmUvdGFnLyBmb3IgbW9yZSBpbmZvcm1hdGlvblxuICAgKiBAZGVmYXVsdCAtIGF1dG8tZ2VuZXJhdGVkIG5hbWVcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRhZyBmb3IgdGhlIGltYWdlLlxuICAgKiBEb2NrZXIgY29udmVudGlvbiBpcyB7cmVnaXN0cnlfbmFtZX0ve25hbWV9Ont0YWd9XG4gICAqIFZpc2l0IGh0dHBzOi8vZG9jcy5kb2NrZXIuY29tL2VuZ2luZS9yZWZlcmVuY2UvY29tbWFuZGxpbmUvdGFnLyBmb3IgbW9yZSBpbmZvcm1hdGlvblxuICAgKiBAZGVmYXVsdCBcImxhdGVzdFwiXG4gICAqL1xuICByZWFkb25seSB0YWc/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNldCB0byBzcGVjaWZ5IHRoZSB0YXJnZXQgcGxhdGZvcm0gZm9yIHRoZSBidWlsZCBvdXRwdXQsIChmb3IgZXhhbXBsZSwgbGludXgvYW1kNjQsIGxpbnV4L2FybTY0LCBvciBkYXJ3aW4vYW1kNjQpLlxuICAgKi9cbiAgcmVhZG9ubHkgcGxhdGZvcm0/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIGRvY2tlciBpbWFnZSBidWlsdCBkdXJpbmcgc3ludGhlc2lzIGZyb20gYSBjb250ZXh0IGRpcmVjdG9yeVxuICogKGBkaXJgKSB3aXRoIGEgYERvY2tlcmZpbGVgLlxuICpcbiAqIFRoZSBpbWFnZSB3aWxsIGJlIGJ1aWx0IHVzaW5nIGBkb2NrZXIgYnVpbGRgIGFuZCB0aGVuIHB1c2hlZCB0aHJvdWdoIGBkb2NrZXJcbiAqIHB1c2hgLiBUaGUgVVJMIG9mIHRoZSBwdXNoZWQgaW1hZ2UgY2FuIGJlIGFjY2Vzc2VkIHRocm91Z2ggYGltYWdlLnVybGAuXG4gKlxuICogSWYgeW91IHB1c2ggdG8gYSByZWdpc3RyeSBvdGhlciB0aGFuIGRvY2tlciBodWIsIHlvdSBjYW4gc3BlY2lmeSB0aGUgcmVnaXN0cnlcbiAqIFVSTCB0aHJvdWdoIHRoZSBgcmVnaXN0cnlgIG9wdGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIEltYWdlIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgLyoqXG4gICAqIFRoZSBpbWFnZSBVUkwgdG8gdXNlIGluIG9yZGVyIHRvIHB1bGwgdGhpcyBpbnN0YW5jZSBvZiB0aGUgaW1hZ2UuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdXJsOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEltYWdlUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIGNvbnN0IHJlZ2lzdHJ5ID0gcHJvcHMucmVnaXN0cnkgPz8gJ2RvY2tlci5pby9saWJyYXJ5JztcbiAgICBjb25zdCBuYW1lID0gcHJvcHMubmFtZSB8fCBOYW1lcy50b0Ruc0xhYmVsKHRoaXMpO1xuICAgIGNvbnN0IHRhZyA9IHByb3BzLnRhZyB8fCAnbGF0ZXN0JztcbiAgICBjb25zdCBmdWxsVGFnID0gYCR7cmVnaXN0cnl9LyR7bmFtZX06JHt0YWd9YDtcbiAgICBjb25zdCBhbGxCdWlsZEFyZ3M6IHN0cmluZ1tdID0gW107XG4gICAgcHJvcHMuYnVpbGRBcmdzPy5mb3JFYWNoKChhcmcpID0+IHtcbiAgICAgIGFsbEJ1aWxkQXJncy5wdXNoKCctLWJ1aWxkLWFyZycpO1xuICAgICAgYWxsQnVpbGRBcmdzLnB1c2goYCR7YXJnLm5hbWV9PSR7YXJnLnZhbHVlfWApO1xuICAgIH0pO1xuICAgIGlmIChwcm9wcy5maWxlKSB7XG4gICAgICBhbGxCdWlsZEFyZ3MucHVzaCgnLWYnKTtcbiAgICAgIGFsbEJ1aWxkQXJncy5wdXNoKHByb3BzLmZpbGUpO1xuICAgIH1cbiAgICBpZiAocHJvcHMucGxhdGZvcm0pIHtcbiAgICAgIGFsbEJ1aWxkQXJncy5wdXNoKGAtLXBsYXRmb3JtPSR7cHJvcHMucGxhdGZvcm19YCk7XG4gICAgfVxuICAgIGNvbnNvbGUuZXJyb3IoYGJ1aWxkaW5nIGRvY2tlciBpbWFnZSAke2Z1bGxUYWd9IGZyb20gJHtwcm9wcy5maWxlID8gcHJvcHMuZmlsZSA6IHByb3BzLmRpcn1gKTtcbiAgICBzaGVsbCgnZG9ja2VyJywgJ2J1aWxkJywgJy10JywgZnVsbFRhZywgcHJvcHMuZGlyLCAuLi5hbGxCdWlsZEFyZ3MpO1xuICAgIGNvbnNvbGUuZXJyb3IoYHB1c2hpbmcgZG9ja2VyIGltYWdlICR7ZnVsbFRhZ30gdG8gJHtyZWdpc3RyeX1gKTtcbiAgICBjb25zdCBwdXNoID0gc2hlbGwoJ2RvY2tlcicsICdwdXNoJywgZnVsbFRhZyk7XG5cbiAgICBjb25zdCByZXN1bHQgPSBQQVJTRV9ESUdFU1QuZXhlYyhwdXNoKTtcbiAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGB1bmFibGUgdG8gcmVhZCBpbWFnZSBkaWdlc3QgYWZ0ZXIgcHVzaDogJHtwdXNofWApO1xuICAgIH1cblxuICAgIHRoaXMudXJsID0gcHJvcHMudGFnID8gZnVsbFRhZzpgJHtyZWdpc3RyeX0vJHtuYW1lfUAke3Jlc3VsdFsxXX1gO1xuICB9XG59XG4iXX0=
|