@sw-tsdk/docker 0.1.1-next.23

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 ADDED
@@ -0,0 +1,8 @@
1
+ The ISC License (ISC)
2
+
3
+ Copyright © SWIMLANE 2021
4
+
5
+ Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.
6
+
7
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
8
+ {"mode":"full","isActive":false}
@@ -0,0 +1,12 @@
1
+ export declare const DockerDefaults: {
2
+ SdkPythonVersion: string;
3
+ SdkBuildImage: string;
4
+ SdkValidateImage: string;
5
+ SdkRunImage: string;
6
+ SdkTestImage: string;
7
+ SdkTurbineValidateImage: string;
8
+ };
9
+ export declare const DEFAULT_SKIP_PATTERNS: string[];
10
+ export declare const DEFAULT_IGNORE_PATTERNS: string[];
11
+ export declare const DEFAULT_ARCHIVE_PATTERN = "**/*.*";
12
+ export declare const TEMPLATE_DIRECTORY: string;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TEMPLATE_DIRECTORY = exports.DEFAULT_ARCHIVE_PATTERN = exports.DEFAULT_IGNORE_PATTERNS = exports.DEFAULT_SKIP_PATTERNS = exports.DockerDefaults = void 0;
4
+ const node_path_1 = require("node:path");
5
+ exports.DockerDefaults = {
6
+ SdkPythonVersion: '3.6',
7
+ SdkBuildImage: 'quay.io/swimlane/sdk-build',
8
+ SdkValidateImage: 'quay.io/swimlane/sdk-validate',
9
+ SdkRunImage: 'quay.io/swimlane/sdk-run',
10
+ SdkTestImage: 'quay.io/swimlane/sdk-test',
11
+ SdkTurbineValidateImage: 'quay.io/swimlane/sdk-turbine-validate',
12
+ };
13
+ exports.DEFAULT_SKIP_PATTERNS = [
14
+ 'venv',
15
+ 'output',
16
+ 'dist',
17
+ '.idea',
18
+ 'data',
19
+ '**/__pycache__',
20
+ 'test_output',
21
+ '.coverage',
22
+ ];
23
+ exports.DEFAULT_IGNORE_PATTERNS = [
24
+ '**/*.swimbundle',
25
+ ];
26
+ exports.DEFAULT_ARCHIVE_PATTERN = '**/*.*';
27
+ exports.TEMPLATE_DIRECTORY = (0, node_path_1.resolve)(__dirname);
28
+ //# sourceMappingURL=docker-defaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docker-defaults.js","sourceRoot":"","sources":["../src/docker-defaults.ts"],"names":[],"mappings":";;;AAAA,yCAAiC;AAEpB,QAAA,cAAc,GAAG;IAC5B,gBAAgB,EAAE,KAAK;IACvB,aAAa,EAAE,4BAA4B;IAC3C,gBAAgB,EAAE,+BAA+B;IACjD,WAAW,EAAE,0BAA0B;IACvC,YAAY,EAAE,2BAA2B;IACzC,uBAAuB,EAAE,uCAAuC;CACjE,CAAA;AAEY,QAAA,qBAAqB,GAAG;IACnC,MAAM;IACN,QAAQ;IACR,MAAM;IACN,OAAO;IACP,MAAM;IACN,gBAAgB;IAChB,aAAa;IACb,WAAW;CACZ,CAAA;AACY,QAAA,uBAAuB,GAAG;IACrC,iBAAiB;CAClB,CAAA;AACY,QAAA,uBAAuB,GAAG,QAAQ,CAAA;AAElC,QAAA,kBAAkB,GAAG,IAAA,mBAAO,EAAC,SAAS,CAAC,CAAA"}
@@ -0,0 +1,16 @@
1
+ /// <reference types="node" />
2
+ import type { BuildOptions, ConstructorOptions, CreateOptions, PushOptions, TagOptions } from './types';
3
+ export declare class Docker {
4
+ private docker;
5
+ private authConfig;
6
+ constructor(constructorOptions?: ConstructorOptions);
7
+ ping(): Promise<boolean>;
8
+ checkAuth(): Promise<boolean>;
9
+ pullImage(image: string): Promise<boolean>;
10
+ tagImage(options: TagOptions): Promise<string>;
11
+ pushImage(options: PushOptions): Promise<string>;
12
+ runImage(image: string, createOptions: CreateOptions, outputStream?: NodeJS.WritableStream, errorStream?: NodeJS.WritableStream | null): Promise<boolean>;
13
+ deleteContainer(name: string): Promise<void>;
14
+ saveImage(imageTag: string, path: string): Promise<void>;
15
+ buildImage(buildOptions: BuildOptions): Promise<string>;
16
+ }
package/lib/docker.js ADDED
@@ -0,0 +1,182 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Docker = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const core_1 = require("@oclif/core");
6
+ const dockerode_1 = tslib_1.__importStar(require("dockerode"));
7
+ const archiver_1 = require("archiver");
8
+ const temp_1 = tslib_1.__importDefault(require("temp"));
9
+ const fs = tslib_1.__importStar(require("node:fs"));
10
+ const node_stream_1 = require("node:stream");
11
+ const node_path_1 = require("node:path");
12
+ const fs_extra_1 = require("fs-extra");
13
+ const node_zlib_1 = require("node:zlib");
14
+ const docker_reference_1 = require("@swimlane/docker-reference");
15
+ class Docker {
16
+ constructor(constructorOptions) {
17
+ const { options, authConfig, } = constructorOptions || {};
18
+ this.docker = new dockerode_1.default(options);
19
+ this.authConfig = authConfig;
20
+ }
21
+ async ping() {
22
+ try {
23
+ await this.docker.ping();
24
+ return true;
25
+ }
26
+ catch (_a) {
27
+ core_1.CliUx.ux.error('Could not access docker');
28
+ return false;
29
+ }
30
+ }
31
+ async checkAuth() {
32
+ try {
33
+ const response = await this.docker.checkAuth(this.authConfig);
34
+ return response.status;
35
+ }
36
+ catch (error) {
37
+ console.log('checkAuth', error);
38
+ return false;
39
+ }
40
+ }
41
+ async pullImage(image) {
42
+ return new Promise((resolve, reject) => {
43
+ function onFinished(finishedError) {
44
+ if (finishedError) {
45
+ return reject(finishedError);
46
+ }
47
+ return resolve(true);
48
+ }
49
+ this.docker.pull(image, {}, (err, stream) => {
50
+ if (err) {
51
+ return reject(err);
52
+ }
53
+ this.docker.modem.followProgress(stream, onFinished);
54
+ }, this.authConfig);
55
+ }).catch(error => {
56
+ core_1.CliUx.ux.error(`Could not pull image: ${error.message}`);
57
+ });
58
+ }
59
+ async tagImage(options) {
60
+ const { domain, newTag, imageReference } = options;
61
+ const image = this.docker.getImage(imageReference);
62
+ const { repository, tag } = (0, docker_reference_1.parseQualifiedName)(imageReference);
63
+ await image.tag({
64
+ repo: `${domain}/${repository}`,
65
+ tag: newTag || tag,
66
+ });
67
+ return new docker_reference_1.Reference({
68
+ domain,
69
+ repository,
70
+ tag: newTag || tag,
71
+ }).toString();
72
+ }
73
+ async pushImage(options) {
74
+ const { imageReference, domain, newTag } = options;
75
+ const taggedImage = await this.tagImage({
76
+ imageReference,
77
+ domain,
78
+ newTag,
79
+ });
80
+ const image = new dockerode_1.Image(this.docker.modem, taggedImage);
81
+ await image.push({ authconfig: { username: '', password: '', serveraddress: domain } });
82
+ return taggedImage;
83
+ }
84
+ async runImage(image, createOptions, outputStream = process.stdout, errorStream = null) {
85
+ const stdStream = new node_stream_1.PassThrough();
86
+ const errStream = new node_stream_1.PassThrough();
87
+ stdStream.on('data', chunk => {
88
+ outputStream.write(chunk);
89
+ });
90
+ let success = true;
91
+ errStream.on('data', chunk => {
92
+ if (errorStream) {
93
+ errorStream.write(chunk);
94
+ core_1.CliUx.ux.log(chunk === null || chunk === void 0 ? void 0 : chunk.toString());
95
+ return;
96
+ }
97
+ core_1.CliUx.ux.error(chunk === null || chunk === void 0 ? void 0 : chunk.toString(), { exit: false });
98
+ success = false;
99
+ });
100
+ Object.assign(createOptions, { Tty: false });
101
+ await this.docker.run(image, [], [stdStream, errStream], createOptions)
102
+ .catch(error => {
103
+ core_1.CliUx.ux.error(`Could not build image: ${error.message}`);
104
+ success = false;
105
+ })
106
+ .then(function (data) {
107
+ if (data[0].StatusCode !== 0) {
108
+ success = false;
109
+ }
110
+ });
111
+ return success;
112
+ }
113
+ async deleteContainer(name) {
114
+ const container = await this.docker.getContainer(name);
115
+ await container.remove({ force: true });
116
+ }
117
+ async saveImage(imageTag, path) {
118
+ await (0, fs_extra_1.ensureDir)((0, node_path_1.dirname)(path));
119
+ const image = await this.docker.getImage(imageTag);
120
+ const stream = await image.get();
121
+ const archive = (0, node_zlib_1.createGzip)();
122
+ const output = fs.createWriteStream(path);
123
+ return new Promise((resolve, reject) => {
124
+ stream
125
+ .pipe(archive)
126
+ .pipe(output)
127
+ .on('finish', resolve)
128
+ .on('error', reject);
129
+ });
130
+ }
131
+ async buildImage(buildOptions) {
132
+ const { context, dockerfile, tag, buildArgs, nocache, skipPatterns, ignorePatterns, archivePattern, target, platform, squash, } = buildOptions;
133
+ const tempDir = await temp_1.default.mkdir();
134
+ const tarPath = tempDir + '/context.tar';
135
+ const output = fs.createWriteStream(tarPath);
136
+ const archive = (0, archiver_1.create)('tar');
137
+ archive.pipe(output);
138
+ if (archivePattern) {
139
+ archive.glob(archivePattern, {
140
+ cwd: context,
141
+ skip: skipPatterns,
142
+ ignore: ignorePatterns,
143
+ });
144
+ }
145
+ if (context) {
146
+ archive.append(fs.createReadStream((0, node_path_1.join)(context, dockerfile)), { name: 'Dockerfile' });
147
+ }
148
+ else {
149
+ archive.append(fs.createReadStream(dockerfile), { name: 'Dockerfile' });
150
+ }
151
+ await archive.finalize();
152
+ const options = {
153
+ t: tag,
154
+ forcerm: true,
155
+ rm: true,
156
+ buildargs: buildArgs,
157
+ nocache: nocache,
158
+ authconfig: this.authConfig,
159
+ target: target,
160
+ platform: platform,
161
+ squash: squash,
162
+ };
163
+ const stream = await this.docker.buildImage(tarPath, options);
164
+ try {
165
+ const progress = await new Promise((resolve, reject) => {
166
+ this.docker.modem.followProgress(stream, (error, response) => error ? reject(error) : resolve(response));
167
+ });
168
+ const errors = progress === null || progress === void 0 ? void 0 : progress.filter((x) => x.error);
169
+ if (errors) {
170
+ for (const error of errors) {
171
+ core_1.CliUx.ux.error(error.error);
172
+ }
173
+ }
174
+ }
175
+ catch (error) {
176
+ core_1.CliUx.ux.error(error);
177
+ }
178
+ return tag;
179
+ }
180
+ }
181
+ exports.Docker = Docker;
182
+ //# sourceMappingURL=docker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docker.js","sourceRoot":"","sources":["../src/docker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import 'glob';
2
+ declare module 'glob' {
3
+ interface IOptions {
4
+ skip?: string | ReadonlyArray<string> | undefined;
5
+ }
6
+ }
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ require("glob");
4
+ //# sourceMappingURL=dockerode.extension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dockerode.extension.js","sourceRoot":"","sources":["../../src/extensions/dockerode.extension.ts"],"names":[],"mappings":";;AAAA,gBAAa"}
@@ -0,0 +1,6 @@
1
+ import 'dockerode';
2
+ declare module 'dockerode' {
3
+ interface ImageBuildOptions {
4
+ nocache?: boolean | undefined;
5
+ }
6
+ }
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ require("dockerode");
4
+ //# sourceMappingURL=glob.extension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"glob.extension.js","sourceRoot":"","sources":["../../src/extensions/glob.extension.ts"],"names":[],"mappings":";;AAAA,qBAAkB"}
@@ -0,0 +1 @@
1
+ export * from './glob.extension';
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./glob.extension"), exports);
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/extensions/index.ts"],"names":[],"mappings":";;;AAAA,2DAAgC"}
package/lib/index.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ export * from './docker';
2
+ export * from './docker-defaults';
3
+ export * from './types';
package/lib/index.js ADDED
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./docker"), exports);
5
+ tslib_1.__exportStar(require("./docker-defaults"), exports);
6
+ tslib_1.__exportStar(require("./types"), exports);
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,mDAAwB;AACxB,4DAAiC;AACjC,kDAAuB"}
@@ -0,0 +1,13 @@
1
+ ARG RUNTIME_IMAGE
2
+ FROM ${RUNTIME_IMAGE}
3
+
4
+ COPY . /src
5
+
6
+ RUN if test -f /src/os_requirements.txt; then apt update && apt install -y $(cat /src/os_requirements.txt); fi
7
+
8
+ RUN pip install -r /src/dist_requirements.txt
9
+
10
+ ENV PATH=${PATH}:/src/libs
11
+ RUN mkdir /data
12
+
13
+ ENTRYPOINT ["python"]
@@ -0,0 +1,15 @@
1
+ ARG RUNTIME_IMAGE
2
+ FROM ${RUNTIME_IMAGE}
3
+
4
+ COPY . /src
5
+
6
+ RUN if test -f /src/os_requirements.txt; then apt update && apt install -y $(cat /src/os_requirements.txt); fi
7
+
8
+ RUN pip install -r /src/dist_requirements.txt
9
+
10
+ RUN if [[test -f "/src/test_requirements.txt"]]; then pip install -r /src/test_requirements.txt; else echo "No test_requirements"; fi
11
+
12
+ ENV PATH=${PATH}:/src/libs
13
+ RUN mkdir /data
14
+
15
+ ENTRYPOINT ["python"]
@@ -0,0 +1 @@
1
+ export * from './types';
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./types"), exports);
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";;;AAAA,kDAAuB"}
@@ -0,0 +1,187 @@
1
+ /// <reference types="node" />
2
+ export declare type BuildOptions = {
3
+ context?: string;
4
+ dockerfile: string;
5
+ tag: string;
6
+ buildArgs?: Record<string, string>;
7
+ nocache: boolean;
8
+ archivePattern?: string;
9
+ skipPatterns?: string[];
10
+ ignorePatterns?: string[];
11
+ target?: string;
12
+ platform: string;
13
+ squash?: boolean | undefined;
14
+ };
15
+ export declare type TagOptions = {
16
+ imageReference: string;
17
+ newTag?: string | undefined;
18
+ domain: string;
19
+ };
20
+ export declare type PushOptions = {
21
+ imageReference: string;
22
+ newTag?: string | undefined;
23
+ domain: string;
24
+ authConfig?: AuthConfig;
25
+ };
26
+ export declare type ConstructorOptions = {
27
+ options?: DockerOptions;
28
+ authConfig?: AuthConfig;
29
+ };
30
+ export declare type AuthConfig = {
31
+ username: string;
32
+ password: string;
33
+ serveraddress: string;
34
+ email?: string | undefined;
35
+ };
36
+ export declare type DockerOptions = {
37
+ socketPath?: string | undefined;
38
+ host?: string | undefined;
39
+ port?: number | string | undefined;
40
+ username?: string | undefined;
41
+ ca?: string | string[] | Buffer | Buffer[] | undefined;
42
+ cert?: string | string[] | Buffer | Buffer[] | undefined;
43
+ key?: string | string[] | Buffer | Buffer[] | KeyObject[] | undefined;
44
+ protocol?: 'https' | 'http' | 'ssh' | undefined;
45
+ timeout?: number | undefined;
46
+ version?: string | undefined;
47
+ sshAuthAgent?: string | undefined;
48
+ };
49
+ export declare type KeyObject = {
50
+ pem: string | Buffer;
51
+ passphrase?: string | undefined;
52
+ };
53
+ export declare type MountType = 'bind' | 'volume' | 'tmpfs';
54
+ export declare type DeviceRequest = {
55
+ Driver?: string;
56
+ Count?: number;
57
+ DeviceIDs?: string[];
58
+ Capabilities?: string[][];
59
+ Options?: {
60
+ [key: string]: string;
61
+ };
62
+ };
63
+ export declare type MountSettings = {
64
+ Target: string;
65
+ Source: string;
66
+ Type: MountType;
67
+ ReadOnly?: boolean;
68
+ VolumeOptions?: {
69
+ NoCopy: boolean;
70
+ Labels: {
71
+ [label: string]: string;
72
+ };
73
+ DriverConfig: {
74
+ Name: string;
75
+ Options: {
76
+ [option: string]: string;
77
+ };
78
+ };
79
+ };
80
+ TmpfsOptions?: {
81
+ SizeBytes: number;
82
+ Mode: number;
83
+ };
84
+ };
85
+ export declare type MountConfig = MountSettings[];
86
+ export declare type HostConfig = {
87
+ AutoRemove?: boolean;
88
+ Binds?: string[];
89
+ ContainerIDFile?: string;
90
+ LogConfig?: {
91
+ Type: string;
92
+ Config: any;
93
+ };
94
+ NetworkMode?: string;
95
+ PortBindings?: any;
96
+ VolumeDriver?: string;
97
+ VolumesFrom?: any;
98
+ Mounts?: MountConfig;
99
+ CapAdd?: any;
100
+ CapDrop?: any;
101
+ Dns?: any[];
102
+ DnsOptions?: any[];
103
+ DnsSearch?: any[];
104
+ ExtraHosts?: any;
105
+ GroupAdd?: string[];
106
+ IpcMode?: string;
107
+ Cgroup?: string;
108
+ Links?: any;
109
+ OomScoreAdj?: number;
110
+ PidMode?: string;
111
+ Privileged?: boolean;
112
+ PublishAllPorts?: boolean;
113
+ ReadonlyRootfs?: boolean;
114
+ SecurityOpt?: any;
115
+ StorageOpt?: {
116
+ [option: string]: string;
117
+ };
118
+ Tmpfs?: {
119
+ [dir: string]: string;
120
+ };
121
+ UTSMode?: string;
122
+ UsernsMode?: string;
123
+ ShmSize?: number;
124
+ Sysctls?: {
125
+ [index: string]: string;
126
+ };
127
+ Runtime?: string;
128
+ ConsoleSize?: number[];
129
+ Isolation?: string;
130
+ MaskedPaths?: string[];
131
+ ReadonlyPaths?: string[];
132
+ CpuShares?: number;
133
+ CgroupParent?: string;
134
+ BlkioWeight?: number;
135
+ BlkioWeightDevice?: any;
136
+ BlkioDeviceReadBps?: any;
137
+ BlkioDeviceWriteBps?: any;
138
+ BlkioDeviceReadIOps?: any;
139
+ BlkioDeviceWriteIOps?: any;
140
+ CpuPeriod?: number;
141
+ CpuQuota?: number;
142
+ CpusetCpus?: string;
143
+ CpusetMems?: string;
144
+ Devices?: any;
145
+ DeviceCgroupRules?: string[];
146
+ DeviceRequests?: DeviceRequest[];
147
+ DiskQuota?: number;
148
+ KernelMemory?: number;
149
+ Memory?: number;
150
+ MemoryReservation?: number;
151
+ MemorySwap?: number;
152
+ MemorySwappiness?: number;
153
+ OomKillDisable?: boolean;
154
+ PidsLimit?: number;
155
+ Ulimits?: any;
156
+ };
157
+ export declare type CreateOptions = {
158
+ name?: string;
159
+ Hostname?: string;
160
+ Domainname?: string;
161
+ User?: string;
162
+ AttachStdin?: boolean;
163
+ AttachStdout?: boolean;
164
+ AttachStderr?: boolean;
165
+ Tty?: boolean;
166
+ OpenStdin?: boolean;
167
+ StdinOnce?: boolean;
168
+ Env?: string[];
169
+ Cmd?: string[];
170
+ Entrypoint?: string | string[];
171
+ Image?: string;
172
+ Labels?: {
173
+ [label: string]: string;
174
+ };
175
+ Volumes?: {
176
+ [volume: string]: unknown;
177
+ };
178
+ WorkingDir?: string;
179
+ NetworkDisabled?: boolean;
180
+ MacAddress?: boolean;
181
+ ExposedPorts?: {
182
+ [port: string]: unknown;
183
+ };
184
+ StopSignal?: string;
185
+ StopTimeout?: number;
186
+ HostConfig?: HostConfig;
187
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types/types.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,45 @@
1
+ {
2
+ "author": "Chris Young <youngcm2@gmail.com>",
3
+ "bugs": {
4
+ "url": "https://github.com/swimlane/turbine-sdk/issues"
5
+ },
6
+ "dependencies": {
7
+ "@oclif/core": "1.16.4",
8
+ "@sw-tsdk/core": "^0.1.1-next.23+038e7a6",
9
+ "@swimlane/docker-reference": "0.0.15",
10
+ "archiver": "5.3.0",
11
+ "dockerode": "3.3.4",
12
+ "fs-extra": "10.1.0",
13
+ "glob": "7.2.0",
14
+ "npmlog": "6.0.1",
15
+ "temp": "0.9.4"
16
+ },
17
+ "description": "Shared Docker library",
18
+ "directories": {
19
+ "lib": "lib",
20
+ "test": "__tests__"
21
+ },
22
+ "files": [
23
+ "lib"
24
+ ],
25
+ "homepage": "https://github.com/swimlane/turbine-sdk#readme",
26
+ "license": "ISC",
27
+ "main": "lib/index.js",
28
+ "name": "@sw-tsdk/docker",
29
+ "publishConfig": {
30
+ "access": "public"
31
+ },
32
+ "repository": {
33
+ "type": "git",
34
+ "url": "git+https://github.com/swimlane/turbine-sdk.git"
35
+ },
36
+ "scripts": {
37
+ "build": "rm -rf lib && tsc && yarn copy-files",
38
+ "copy-files": "copyfiles -u 2 ./src/templates/**/*.* ./lib/templates",
39
+ "lint": "eslint . --ext .ts --config .eslintrc",
40
+ "test": "echo \"Error: run tests from root\" && exit 1"
41
+ },
42
+ "types": "lib/index.d.ts",
43
+ "version": "0.1.1-next.23+038e7a6",
44
+ "gitHead": "038e7a68d45b2d93f39c7f7b2edce9798019007e"
45
+ }