update dependencies and README
This commit is contained in:
		
							
								
								
									
										4
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -1,6 +1,8 @@ | |||||||
| node_modules/ | node_modules/ | ||||||
| coverage/ | coverage/ | ||||||
| docs/ | pages/ | ||||||
|  | public/ | ||||||
|  |  | ||||||
| test/ | test/ | ||||||
| assets/ | assets/ | ||||||
| .nogit/ | .nogit/ | ||||||
|   | |||||||
							
								
								
									
										56
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										56
									
								
								README.md
									
									
									
									
									
								
							| @@ -1,5 +1,59 @@ | |||||||
| # npmdocker | # npmdocker | ||||||
| develop npm modules cross platform with docker | develop npm modules cross platform with docker | ||||||
|  |  | ||||||
|  | ## Availabililty | ||||||
|  | [](https://www.npmjs.com/package/npmdocker) | ||||||
|  | [](https://GitLab.com/gitzone/npmdocker) | ||||||
|  | [](https://github.com/gitzone/npmdocker) | ||||||
|  | [](https://gitzone.gitlab.io/npmdocker/) | ||||||
|  |  | ||||||
|  | ## Status for master | ||||||
|  | [](https://GitLab.com/gitzone/npmdocker/commits/master) | ||||||
|  | [](https://GitLab.com/gitzone/npmdocker/commits/master) | ||||||
|  | [](https://www.npmjs.com/package/npmdocker) | ||||||
|  | [](https://david-dm.org/gitzonetools/npmdocker) | ||||||
|  | [](https://www.bithound.io/github/gitzonetools/npmdocker/master/dependencies/npm) | ||||||
|  | [](https://www.bithound.io/github/gitzonetools/npmdocker) | ||||||
|  | [](https://nodejs.org/dist/latest-v6.x/docs/api/) | ||||||
|  | [](https://nodejs.org/dist/latest-v6.x/docs/api/) | ||||||
|  | [](http://standardjs.com/) | ||||||
|  |  | ||||||
| ## Usage | ## Usage | ||||||
| npmdocker looks for a npmextra.json at the root of your directory and looks at the npmdocker portion of it. | Use TypeScript for best in class instellisense. | ||||||
|  |  | ||||||
|  | ### Why does this package exist? | ||||||
|  | Sometimes you want a clean and fresh linux environment everytime you test your package. | ||||||
|  | Usually this is the default i CI, but locally behaviour tends to defer. | ||||||
|  |  | ||||||
|  | ### Where does it work | ||||||
|  | The npmdocker package works in everywhere where the docker cli is available. e.g.: | ||||||
|  |  | ||||||
|  |   * docker toolbox | ||||||
|  |   * native docker application | ||||||
|  |   * docker in docker | ||||||
|  |   * mounted docker.sock | ||||||
|  |  | ||||||
|  | ### How do I use it? | ||||||
|  | create a npmextra.json in the project's root directory | ||||||
|  |  | ||||||
|  | ```json | ||||||
|  | { | ||||||
|  |   "npmdocker": { | ||||||
|  |     "baseImage": "hosttoday/ht-docker-node:npmts", | ||||||
|  |     "command": "npmci test stable", | ||||||
|  |     "dockerSock": false | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | option | description | ||||||
|  | --- | --- | ||||||
|  | baseImage | the base image that is the context for your project | ||||||
|  | command | the cli command to run within the the project's directory inside the docker container | ||||||
|  | dockersSock | wether or not the testcontainer will have access to the docker.sock of the host | ||||||
|  |  | ||||||
|  | For further information read the linked docs at the top of this README. | ||||||
|  |  | ||||||
|  | > MIT licensed | **©** [Lossless GmbH](https://lossless.gmbh) | ||||||
|  |  | ||||||
|  | [](https://git.zone) | ||||||
|   | |||||||
| @@ -2,4 +2,4 @@ FROM hosttoday/ht-docker-node:npmts | |||||||
| COPY ./buildContextDir /workspace | COPY ./buildContextDir /workspace | ||||||
| WORKDIR /workspace | WORKDIR /workspace | ||||||
| ENV CI=true | ENV CI=true | ||||||
| CMD ["npm","run","npmdocker"]; | CMD ["npmci","test","stable"]; | ||||||
|   | |||||||
							
								
								
									
										2
									
								
								dist/cli.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								dist/cli.js
									
									
									
									
										vendored
									
									
								
							| @@ -1,2 +1,2 @@ | |||||||
| #!/usr/bin/env node | #!/usr/bin/env node | ||||||
| var index = require("./index.js"); | var index = require("../dist/index.js"); | ||||||
							
								
								
									
										2
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							| @@ -11,4 +11,4 @@ promisechain.run() | |||||||
|         process.exit(1); |         process.exit(1); | ||||||
|     } |     } | ||||||
| }); | }); | ||||||
| //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsTUFBWSxPQUFPLFdBQU0scUJBQXFCLENBQUMsQ0FBQTtBQUMvQyxNQUFZLFlBQVksV0FBTSwwQkFBMEIsQ0FBQyxDQUFBO0FBSXpELFlBQVksQ0FBQyxHQUFHLEVBQUU7S0FDYixJQUFJLENBQUMsQ0FBQyxTQUE4QjtJQUNqQyxFQUFFLENBQUEsQ0FBQyxTQUFTLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQyxDQUFBLENBQUM7UUFDeEIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBQUMsSUFBSSxDQUFDLENBQUM7UUFDSixPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1FBQ3ZELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEIsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIn0= | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsK0NBQStDO0FBQy9DLHlEQUF5RDtBQUl6RCxZQUFZLENBQUMsR0FBRyxFQUFFO0tBQ2IsSUFBSSxDQUFDLENBQUMsU0FBOEI7SUFDakMsRUFBRSxDQUFBLENBQUMsU0FBUyxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUMsQ0FBQSxDQUFDO1FBQ3hCLE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLDRCQUE0QixDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUFDLElBQUksQ0FBQyxDQUFDO1FBQ0osT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQztRQUN2RCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BCLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyJ9 | ||||||
							
								
								
									
										6
									
								
								dist/npmdocker.config.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								dist/npmdocker.config.d.ts
									
									
									
									
										vendored
									
									
								
							| @@ -1,6 +1,4 @@ | |||||||
| /// <reference types="q" /> | import { IKeyValueObject } from 'qenv'; | ||||||
| import * as plugins from "./npmdocker.plugins"; |  | ||||||
| import { IKeyValueObject } from "qenv"; |  | ||||||
| export interface IConfig { | export interface IConfig { | ||||||
|     baseImage: string; |     baseImage: string; | ||||||
|     command: string; |     command: string; | ||||||
| @@ -8,4 +6,4 @@ export interface IConfig { | |||||||
|     exitCode?: number; |     exitCode?: number; | ||||||
|     keyValueObjectArray: IKeyValueObject[]; |     keyValueObjectArray: IKeyValueObject[]; | ||||||
| } | } | ||||||
| export declare let run: () => plugins.q.Promise<{}>; | export declare let run: () => Promise<{}>; | ||||||
|   | |||||||
							
								
								
									
										20
									
								
								dist/npmdocker.config.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										20
									
								
								dist/npmdocker.config.js
									
									
									
									
										vendored
									
									
								
							| @@ -5,8 +5,8 @@ const paths = require("./npmdocker.paths"); | |||||||
| let getQenvKeyValueObject = () => { | let getQenvKeyValueObject = () => { | ||||||
|     let done = plugins.q.defer(); |     let done = plugins.q.defer(); | ||||||
|     let qenvKeyValueObjectArray; |     let qenvKeyValueObjectArray; | ||||||
|     if (plugins.smartfile.fs.fileExistsSync(plugins.path.join(paths.cwd, "qenv.yml"))) { |     if (plugins.smartfile.fs.fileExistsSync(plugins.path.join(paths.cwd, 'qenv.yml'))) { | ||||||
|         qenvKeyValueObjectArray = new plugins.qenv.Qenv(paths.cwd, ".nogit/").keyValueObjectArray; |         qenvKeyValueObjectArray = new plugins.qenv.Qenv(paths.cwd, '.nogit/').keyValueObjectArray; | ||||||
|     } |     } | ||||||
|     else { |     else { | ||||||
|         qenvKeyValueObjectArray = []; |         qenvKeyValueObjectArray = []; | ||||||
| @@ -17,14 +17,12 @@ let getQenvKeyValueObject = () => { | |||||||
| }; | }; | ||||||
| let buildConfig = (qenvKeyValueObjectArrayArg) => { | let buildConfig = (qenvKeyValueObjectArrayArg) => { | ||||||
|     let done = plugins.q.defer(); |     let done = plugins.q.defer(); | ||||||
|     let config = plugins.npmextra.dataFor({ |     let npmextra = new plugins.npmextra.Npmextra(paths.cwd); | ||||||
|         toolName: "npmdocker", |     let config = npmextra.dataFor('npmdocker', { | ||||||
|         defaultSettings: { |         baseImage: 'hosttoday/ht-docker-node:npmts', | ||||||
|             baseImage: "hosttoday/ht-docker-node:npmts", |         command: 'npm test', | ||||||
|             command: "npm run npmdocker", |         dockerSock: false, | ||||||
|             dockerSock: false, |         keyValueObjectArray: qenvKeyValueObjectArrayArg | ||||||
|             keyValueObjectArray: qenvKeyValueObjectArrayArg |  | ||||||
|         } |  | ||||||
|     }); |     }); | ||||||
|     done.resolve(config); |     done.resolve(config); | ||||||
|     return done.promise; |     return done.promise; | ||||||
| @@ -36,4 +34,4 @@ exports.run = () => { | |||||||
|         .then(done.resolve); |         .then(done.resolve); | ||||||
|     return done.promise; |     return done.promise; | ||||||
| }; | }; | ||||||
| //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtZG9ja2VyLmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL25wbWRvY2tlci5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE1BQVksT0FBTyxXQUFNLHFCQUFxQixDQUFDLENBQUE7QUFDL0MsTUFBWSxLQUFLLFdBQU0sbUJBQW1CLENBQUMsQ0FBQTtBQVcxQyxDQUFDO0FBRUYsSUFBSSxxQkFBcUIsR0FBRztJQUN4QixJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzdCLElBQUksdUJBQXlDLENBQUM7SUFDOUMsRUFBRSxDQUFBLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUM7UUFDN0UsdUJBQXVCLEdBQUcsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDO0lBQzlGLENBQUM7SUFBQyxJQUFJLENBQUMsQ0FBQztRQUNILHVCQUF1QixHQUFHLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBQUEsQ0FBQztJQUNGLElBQUksQ0FBQyxPQUFPLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUN0QyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztBQUN4QixDQUFDLENBQUM7QUFFRixJQUFJLFdBQVcsR0FBRyxDQUFDLDBCQUEwQztJQUN6RCxJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzdCLElBQUksTUFBTSxHQUFZLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO1FBQzNDLFFBQVEsRUFBRSxXQUFXO1FBQ3JCLGVBQWUsRUFBRTtZQUNiLFNBQVMsRUFBRSxnQ0FBZ0M7WUFDM0MsT0FBTyxFQUFFLG1CQUFtQjtZQUM1QixVQUFVLEVBQUUsS0FBSztZQUNqQixtQkFBbUIsRUFBRSwwQkFBMEI7U0FDbEQ7S0FDSixDQUFDLENBQUM7SUFDSCxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3JCLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFBO0FBQ3ZCLENBQUMsQ0FBQztBQUVTLFdBQUcsR0FBRztJQUNiLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDN0IscUJBQXFCLEVBQUU7U0FDbEIsSUFBSSxDQUFDLFdBQVcsQ0FBQztTQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3hCLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO0FBQ3hCLENBQUMsQ0FBQSJ9 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtZG9ja2VyLmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL25wbWRvY2tlci5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLCtDQUE4QztBQUM5QywyQ0FBMEM7QUFXekMsQ0FBQztBQUVGLElBQUkscUJBQXFCLEdBQUc7SUFDMUIsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUM1QixJQUFJLHVCQUEwQyxDQUFBO0lBQzlDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xGLHVCQUF1QixHQUFHLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQTtJQUMzRixDQUFDO0lBQUMsSUFBSSxDQUFDLENBQUM7UUFDTix1QkFBdUIsR0FBRyxFQUFFLENBQUE7SUFDOUIsQ0FBQztJQUFBLENBQUM7SUFDRixJQUFJLENBQUMsT0FBTyxDQUFDLHVCQUF1QixDQUFDLENBQUE7SUFDckMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUE7QUFDckIsQ0FBQyxDQUFBO0FBRUQsSUFBSSxXQUFXLEdBQUcsQ0FBQywwQkFBMkM7SUFDNUQsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUM1QixJQUFJLFFBQVEsR0FBRyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUN2RCxJQUFJLE1BQU0sR0FBRyxRQUFRLENBQUMsT0FBTyxDQUMzQixXQUFXLEVBQ1g7UUFDRSxTQUFTLEVBQUUsZ0NBQWdDO1FBQzNDLE9BQU8sRUFBRSxVQUFVO1FBQ25CLFVBQVUsRUFBRSxLQUFLO1FBQ2pCLG1CQUFtQixFQUFFLDBCQUEwQjtLQUNoRCxDQUNGLENBQUE7SUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ3BCLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFBO0FBQ3JCLENBQUMsQ0FBQTtBQUVVLFFBQUEsR0FBRyxHQUFHO0lBQ2YsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUM1QixxQkFBcUIsRUFBRTtTQUNwQixJQUFJLENBQUMsV0FBVyxDQUFDO1NBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDckIsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUE7QUFDckIsQ0FBQyxDQUFBIn0= | ||||||
							
								
								
									
										4
									
								
								dist/npmdocker.docker.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								dist/npmdocker.docker.d.ts
									
									
									
									
										vendored
									
									
								
							| @@ -1,3 +1 @@ | |||||||
| /// <reference types="q" /> | export declare let run: (configArg: any) => Promise<{}>; | ||||||
| import * as plugins from "./npmdocker.plugins"; |  | ||||||
| export declare let run: (configArg: any) => plugins.q.Promise<{}>; |  | ||||||
|   | |||||||
							
								
								
									
										54
									
								
								dist/npmdocker.docker.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										54
									
								
								dist/npmdocker.docker.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										2
									
								
								dist/npmdocker.paths.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								dist/npmdocker.paths.js
									
									
									
									
										vendored
									
									
								
							| @@ -9,4 +9,4 @@ exports.buildContextDir = plugins.path.join(exports.assets, "buildContextDir"); | |||||||
| plugins.smartfile.fs.ensureDirSync(exports.buildContextDir); | plugins.smartfile.fs.ensureDirSync(exports.buildContextDir); | ||||||
| // files | // files | ||||||
| exports.dockerfile = plugins.path.join(exports.assets, "Dockerfile"); | exports.dockerfile = plugins.path.join(exports.assets, "Dockerfile"); | ||||||
| //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtZG9ja2VyLnBhdGhzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvbnBtZG9ja2VyLnBhdGhzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxNQUFZLE9BQU8sV0FBTSxxQkFBcUIsQ0FBQyxDQUFBO0FBRS9DLGNBQWM7QUFDSCxXQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ3BCLG1CQUFXLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2xELGNBQU0sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBVyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQzlELE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxjQUFNLENBQUMsQ0FBQztBQUVoQyx1QkFBZSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQU0sRUFBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBQ3pFLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyx1QkFBZSxDQUFDLENBQUM7QUFFcEQsUUFBUTtBQUNHLGtCQUFVLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBTSxFQUFFLFlBQVksQ0FBQyxDQUFDIn0= | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtZG9ja2VyLnBhdGhzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvbnBtZG9ja2VyLnBhdGhzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwrQ0FBK0M7QUFFL0MsY0FBYztBQUNILFFBQUEsR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNwQixRQUFBLFdBQVcsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDbEQsUUFBQSxNQUFNLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQVcsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUM5RCxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsY0FBTSxDQUFDLENBQUM7QUFFaEMsUUFBQSxlQUFlLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBTSxFQUFDLGlCQUFpQixDQUFDLENBQUM7QUFDekUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLHVCQUFlLENBQUMsQ0FBQztBQUVwRCxRQUFRO0FBQ0csUUFBQSxVQUFVLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBTSxFQUFFLFlBQVksQ0FBQyxDQUFDIn0= | ||||||
							
								
								
									
										2
									
								
								dist/npmdocker.plugins.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								dist/npmdocker.plugins.d.ts
									
									
									
									
										vendored
									
									
								
							| @@ -3,7 +3,7 @@ export import beautylog = require("beautylog"); | |||||||
| export import npmextra = require("npmextra"); | export import npmextra = require("npmextra"); | ||||||
| export import path = require("path"); | export import path = require("path"); | ||||||
| export import projectinfo = require("projectinfo"); | export import projectinfo = require("projectinfo"); | ||||||
| export import q = require("q"); | export import q = require("smartq"); | ||||||
| export import qenv = require("qenv"); | export import qenv = require("qenv"); | ||||||
| export import shelljs = require("shelljs"); | export import shelljs = require("shelljs"); | ||||||
| export import smartfile = require("smartfile"); | export import smartfile = require("smartfile"); | ||||||
|   | |||||||
							
								
								
									
										4
									
								
								dist/npmdocker.plugins.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								dist/npmdocker.plugins.js
									
									
									
									
										vendored
									
									
								
							| @@ -4,9 +4,9 @@ exports.beautylog = require("beautylog"); | |||||||
| exports.npmextra = require("npmextra"); | exports.npmextra = require("npmextra"); | ||||||
| exports.path = require("path"); | exports.path = require("path"); | ||||||
| exports.projectinfo = require("projectinfo"); | exports.projectinfo = require("projectinfo"); | ||||||
| exports.q = require("q"); | exports.q = require("smartq"); | ||||||
| exports.qenv = require("qenv"); | exports.qenv = require("qenv"); | ||||||
| exports.shelljs = require("shelljs"); | exports.shelljs = require("shelljs"); | ||||||
| exports.smartfile = require("smartfile"); | exports.smartfile = require("smartfile"); | ||||||
| exports.smartstring = require("smartstring"); | exports.smartstring = require("smartstring"); | ||||||
| //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtZG9ja2VyLnBsdWdpbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9ucG1kb2NrZXIucGx1Z2lucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsUUFBTyxnQkFBZ0IsQ0FBQyxDQUFBO0FBQ1YsaUJBQVMsV0FBVyxXQUFXLENBQUMsQ0FBQztBQUNqQyxnQkFBUSxXQUFXLFVBQVUsQ0FBQyxDQUFDO0FBQy9CLFlBQUksV0FBVyxNQUFNLENBQUMsQ0FBQztBQUN2QixtQkFBVyxXQUFXLGFBQWEsQ0FBQyxDQUFDO0FBQ3JDLFNBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztBQUNqQixZQUFJLFdBQVcsTUFBTSxDQUFDLENBQUM7QUFDdkIsZUFBTyxXQUFXLFNBQVMsQ0FBQyxDQUFDO0FBQzdCLGlCQUFTLFdBQVcsV0FBVyxDQUFDLENBQUM7QUFDakMsbUJBQVcsV0FBVyxhQUFhLENBQUMsQ0FBQyJ9 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtZG9ja2VyLnBsdWdpbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9ucG1kb2NrZXIucGx1Z2lucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsMEJBQXdCO0FBQ3hCLHlDQUErQztBQUMvQyx1Q0FBNkM7QUFDN0MsK0JBQXFDO0FBQ3JDLDZDQUFtRDtBQUNuRCw4QkFBb0M7QUFDcEMsK0JBQXFDO0FBQ3JDLHFDQUEyQztBQUMzQyx5Q0FBK0M7QUFDL0MsNkNBQW1EIn0= | ||||||
							
								
								
									
										6
									
								
								dist/npmdocker.promisechain.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								dist/npmdocker.promisechain.d.ts
									
									
									
									
										vendored
									
									
								
							| @@ -1,5 +1 @@ | |||||||
| /// <reference types="q" /> | export declare let run: () => Promise<{}>; | ||||||
| import * as plugins from "./npmdocker.plugins"; |  | ||||||
| import { Ora } from "beautylog"; |  | ||||||
| export declare let npmdockerOra: Ora; |  | ||||||
| export declare let run: () => plugins.q.Promise<{}>; |  | ||||||
|   | |||||||
							
								
								
									
										6
									
								
								dist/npmdocker.promisechain.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								dist/npmdocker.promisechain.js
									
									
									
									
										vendored
									
									
								
							| @@ -1,11 +1,9 @@ | |||||||
| "use strict"; | "use strict"; | ||||||
| const plugins = require("./npmdocker.plugins"); | const plugins = require("./npmdocker.plugins"); | ||||||
| const beautylog_1 = require("beautylog"); |  | ||||||
| //modules | //modules | ||||||
| const ConfigModule = require("./npmdocker.config"); | const ConfigModule = require("./npmdocker.config"); | ||||||
| const DockerModule = require("./npmdocker.docker"); | const DockerModule = require("./npmdocker.docker"); | ||||||
| exports.npmdockerOra = new beautylog_1.Ora("npmdocker", "blue"); | plugins.beautylog.ora.start(); | ||||||
| exports.npmdockerOra.start(); |  | ||||||
| exports.run = () => { | exports.run = () => { | ||||||
|     let done = plugins.q.defer(); |     let done = plugins.q.defer(); | ||||||
|     ConfigModule.run() |     ConfigModule.run() | ||||||
| @@ -15,4 +13,4 @@ exports.run = () => { | |||||||
|     }); |     }); | ||||||
|     return done.promise; |     return done.promise; | ||||||
| }; | }; | ||||||
| //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtZG9ja2VyLnByb21pc2VjaGFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL25wbWRvY2tlci5wcm9taXNlY2hhaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE1BQVksT0FBTyxXQUFNLHFCQUFxQixDQUFDLENBQUE7QUFFL0MsNEJBQWtCLFdBQVcsQ0FBQyxDQUFBO0FBQzlCLFNBQVM7QUFDVCxNQUFZLFlBQVksV0FBTSxvQkFBb0IsQ0FBQyxDQUFBO0FBQ25ELE1BQVksWUFBWSxXQUFNLG9CQUFvQixDQUFDLENBQUE7QUFFeEMsb0JBQVksR0FBRyxJQUFJLGVBQUcsQ0FBQyxXQUFXLEVBQUMsTUFBTSxDQUFDLENBQUM7QUFDdEQsb0JBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUNWLFdBQUcsR0FBRztJQUNiLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDN0IsWUFBWSxDQUFDLEdBQUcsRUFBRTtTQUNiLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDO1NBQ3RCLElBQUksQ0FBQyxDQUFDLFNBQVM7UUFDWixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzVCLENBQUMsQ0FBQyxDQUFBO0lBQ04sTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7QUFDeEIsQ0FBQyxDQUFBIn0= | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtZG9ja2VyLnByb21pc2VjaGFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL25wbWRvY2tlci5wcm9taXNlY2hhaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLCtDQUErQztBQUcvQyxTQUFTO0FBQ1QsbURBQW1EO0FBQ25ELG1EQUFtRDtBQUVuRCxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUNuQixRQUFBLEdBQUcsR0FBRztJQUNiLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDN0IsWUFBWSxDQUFDLEdBQUcsRUFBRTtTQUNiLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDO1NBQ3RCLElBQUksQ0FBQyxDQUFDLFNBQVM7UUFDWixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzVCLENBQUMsQ0FBQyxDQUFBO0lBQ04sTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7QUFDeEIsQ0FBQyxDQUFBIn0= | ||||||
							
								
								
									
										2
									
								
								dist/npmdocker.snippets.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								dist/npmdocker.snippets.js
									
									
									
									
										vendored
									
									
								
							| @@ -18,4 +18,4 @@ exports.dockerfileSnippet = (optionsArg) => { | |||||||
|         CMD [${commandString}]; |         CMD [${commandString}]; | ||||||
|     `); |     `); | ||||||
| }; | }; | ||||||
| //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtZG9ja2VyLnNuaXBwZXRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvbnBtZG9ja2VyLnNuaXBwZXRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxNQUFZLE9BQU8sV0FBTSxxQkFBcUIsQ0FBQyxDQUFBO0FBT3BDLHlCQUFpQixHQUFHLENBQUMsVUFBNkI7SUFDekQsSUFBSSxZQUFZLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEQsSUFBSSxhQUFhLEdBQVUsRUFBRSxDQUFDO0lBQzlCLEdBQUcsQ0FBQSxDQUFDLElBQUksVUFBVSxJQUFJLFlBQVksQ0FBQyxDQUFBLENBQUM7UUFDaEMsRUFBRSxDQUFBLENBQUMsQ0FBQyxDQUFDLGFBQWEsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFBLENBQUM7WUFDdkIsYUFBYSxHQUFHLGFBQWEsR0FBRyxHQUFHLENBQUM7UUFDeEMsQ0FBQztRQUNELGFBQWEsR0FBRyxhQUFhLEdBQUcsR0FBRyxHQUFHLFVBQVUsR0FBRyxHQUFHLENBQUM7SUFDM0QsQ0FBQztJQUFBLENBQUM7SUFDRixNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO2VBQ2pDLFVBQVUsQ0FBQyxTQUFTOzs7O2VBSXBCLGFBQWE7S0FDdkIsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyxDQUFBIn0= | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtZG9ja2VyLnNuaXBwZXRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvbnBtZG9ja2VyLnNuaXBwZXRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwrQ0FBK0M7QUFPcEMsUUFBQSxpQkFBaUIsR0FBRyxDQUFDLFVBQTZCO0lBQ3pELElBQUksWUFBWSxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xELElBQUksYUFBYSxHQUFVLEVBQUUsQ0FBQztJQUM5QixHQUFHLENBQUEsQ0FBQyxJQUFJLFVBQVUsSUFBSSxZQUFZLENBQUMsQ0FBQSxDQUFDO1FBQ2hDLEVBQUUsQ0FBQSxDQUFDLENBQUMsQ0FBQyxhQUFhLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQSxDQUFDO1lBQ3ZCLGFBQWEsR0FBRyxhQUFhLEdBQUcsR0FBRyxDQUFDO1FBQ3hDLENBQUM7UUFDRCxhQUFhLEdBQUcsYUFBYSxHQUFHLEdBQUcsR0FBRyxVQUFVLEdBQUcsR0FBRyxDQUFDO0lBQzNELENBQUM7SUFBQSxDQUFDO0lBQ0YsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztlQUNqQyxVQUFVLENBQUMsU0FBUzs7OztlQUlwQixhQUFhO0tBQ3ZCLENBQUMsQ0FBQztBQUNQLENBQUMsQ0FBQSJ9 | ||||||
							
								
								
									
										28
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										28
									
								
								package.json
									
									
									
									
									
								
							| @@ -12,6 +12,7 @@ | |||||||
|   }, |   }, | ||||||
|   "scripts": { |   "scripts": { | ||||||
|     "test": "(npm run clean && npm run compile && npm run setupCheck && npm run check)", |     "test": "(npm run clean && npm run compile && npm run setupCheck && npm run check)", | ||||||
|  |     "testDev": "(npm run compile && npm run check)", | ||||||
|     "clean": "(rm -rf test/)", |     "clean": "(rm -rf test/)", | ||||||
|     "compile": "(npmts --notest)", |     "compile": "(npmts --notest)", | ||||||
|     "setupCheck": "(git clone https://gitlab.com/sandboxzone/sandbox-npmts.git test/)", |     "setupCheck": "(git clone https://gitlab.com/sandboxzone/sandbox-npmts.git test/)", | ||||||
| @@ -19,7 +20,7 @@ | |||||||
|   }, |   }, | ||||||
|   "repository": { |   "repository": { | ||||||
|     "type": "git", |     "type": "git", | ||||||
|     "url": "git+ssh://git@gitlab.com/pushrocks/npmdocker.git" |     "url": "git+ssh://git@gitlab.com/gitzone/npmdocker.git" | ||||||
|   }, |   }, | ||||||
|   "keywords": [ |   "keywords": [ | ||||||
|     "docker" |     "docker" | ||||||
| @@ -27,23 +28,22 @@ | |||||||
|   "author": "Lossless GmbH", |   "author": "Lossless GmbH", | ||||||
|   "license": "MIT", |   "license": "MIT", | ||||||
|   "bugs": { |   "bugs": { | ||||||
|     "url": "https://gitlab.com/pushrocks/npmdocker/issues" |     "url": "https://gitlab.com/gitzone/npmdocker/issues" | ||||||
|   }, |   }, | ||||||
|   "homepage": "https://gitlab.com/pushrocks/npmdocker#README", |   "homepage": "https://gitlab.com/gitzone/npmdocker#README", | ||||||
|   "devDependencies": { |   "devDependencies": { | ||||||
|     "npmts-g": "^5.2.8" |     "npmts-g": "^6.0.0" | ||||||
|   }, |   }, | ||||||
|   "dependencies": { |   "dependencies": { | ||||||
|     "@types/q": "0.x.x", |  | ||||||
|     "@types/shelljs": "0.x.x", |     "@types/shelljs": "0.x.x", | ||||||
|     "beautylog": "^5.0.20", |     "beautylog": "^6.1.1", | ||||||
|     "npmextra": "^1.0.8", |     "npmextra": "^2.0.3", | ||||||
|     "projectinfo": "^1.0.3", |     "projectinfo": "^3.0.1", | ||||||
|     "q": "^1.4.1", |     "qenv": "^1.1.3", | ||||||
|     "qenv": "^1.1.1", |     "shelljs": "^0.7.6", | ||||||
|     "shelljs": "^0.7.3", |     "smartfile": "^4.1.5", | ||||||
|     "smartfile": "^4.0.13", |     "smartq": "^1.1.0", | ||||||
|     "smartstring": "^2.0.17", |     "smartstring": "^2.0.22", | ||||||
|     "typings-global": "^1.0.6" |     "typings-global": "^1.0.14" | ||||||
|   } |   } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -1,48 +1,49 @@ | |||||||
| import * as plugins from "./npmdocker.plugins"; | import * as plugins from './npmdocker.plugins' | ||||||
| import * as paths from "./npmdocker.paths"; | import * as paths from "./npmdocker.paths" | ||||||
|  |  | ||||||
| // interfaces | // interfaces | ||||||
| import { IKeyValueObject } from "qenv"; | import { IKeyValueObject } from 'qenv' | ||||||
|  |  | ||||||
| export interface IConfig { | export interface IConfig { | ||||||
|     baseImage: string; |   baseImage: string | ||||||
|     command: string; |   command: string | ||||||
|     dockerSock: boolean; |   dockerSock: boolean | ||||||
|     exitCode?: number; |   exitCode?: number | ||||||
|     keyValueObjectArray: IKeyValueObject[]; |   keyValueObjectArray: IKeyValueObject[] | ||||||
| }; | }; | ||||||
|  |  | ||||||
| let getQenvKeyValueObject = () => { | let getQenvKeyValueObject = () => { | ||||||
|     let done = plugins.q.defer(); |   let done = plugins.q.defer() | ||||||
|     let qenvKeyValueObjectArray:IKeyValueObject[]; |   let qenvKeyValueObjectArray: IKeyValueObject[] | ||||||
|     if(plugins.smartfile.fs.fileExistsSync(plugins.path.join(paths.cwd,"qenv.yml"))){ |   if (plugins.smartfile.fs.fileExistsSync(plugins.path.join(paths.cwd, 'qenv.yml'))) { | ||||||
|         qenvKeyValueObjectArray = new plugins.qenv.Qenv(paths.cwd, ".nogit/").keyValueObjectArray; |     qenvKeyValueObjectArray = new plugins.qenv.Qenv(paths.cwd, '.nogit/').keyValueObjectArray | ||||||
|     } else { |   } else { | ||||||
|          qenvKeyValueObjectArray = []; |     qenvKeyValueObjectArray = [] | ||||||
|     }; |   }; | ||||||
|     done.resolve(qenvKeyValueObjectArray); |   done.resolve(qenvKeyValueObjectArray) | ||||||
|     return done.promise; |   return done.promise | ||||||
| }; | } | ||||||
|  |  | ||||||
| let buildConfig = (qenvKeyValueObjectArrayArg:IKeyValueObject) => { | let buildConfig = (qenvKeyValueObjectArrayArg: IKeyValueObject) => { | ||||||
|     let done = plugins.q.defer(); |   let done = plugins.q.defer() | ||||||
|     let config: IConfig = plugins.npmextra.dataFor({ |   let npmextra = new plugins.npmextra.Npmextra(paths.cwd) | ||||||
|         toolName: "npmdocker", |   let config = npmextra.dataFor<IConfig>( | ||||||
|         defaultSettings: { |     'npmdocker', | ||||||
|             baseImage: "hosttoday/ht-docker-node:npmts", |     { | ||||||
|             command: "npm run npmdocker", |       baseImage: 'hosttoday/ht-docker-node:npmts', | ||||||
|             dockerSock: false, |       command: 'npm test', | ||||||
|             keyValueObjectArray: qenvKeyValueObjectArrayArg |       dockerSock: false, | ||||||
|         } |       keyValueObjectArray: qenvKeyValueObjectArrayArg | ||||||
|     }); |     } | ||||||
|     done.resolve(config); |   ) | ||||||
|     return done.promise |   done.resolve(config) | ||||||
| }; |   return done.promise | ||||||
|  | } | ||||||
|  |  | ||||||
| export let run = () => { | export let run = () => { | ||||||
|     let done = plugins.q.defer(); |   let done = plugins.q.defer() | ||||||
|     getQenvKeyValueObject() |   getQenvKeyValueObject() | ||||||
|         .then(buildConfig) |     .then(buildConfig) | ||||||
|         .then(done.resolve); |     .then(done.resolve) | ||||||
|     return done.promise; |   return done.promise | ||||||
| } | } | ||||||
| @@ -1,181 +1,208 @@ | |||||||
| import * as plugins from "./npmdocker.plugins"; | import * as plugins from './npmdocker.plugins'; | ||||||
| import * as paths from "./npmdocker.paths"; | import * as paths from './npmdocker.paths'; | ||||||
| import * as snippets from "./npmdocker.snippets"; | import * as snippets from './npmdocker.snippets' | ||||||
|  |  | ||||||
| import { npmdockerOra } from "./npmdocker.promisechain"; |  | ||||||
|  |  | ||||||
| // interfaces | // interfaces | ||||||
| import { IConfig } from "./npmdocker.config"; | import { IConfig } from './npmdocker.config' | ||||||
|  |  | ||||||
| let config: IConfig; | let config: IConfig | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * the docker data used to build the internal testing container | ||||||
|  |  */ | ||||||
| let dockerData = { | let dockerData = { | ||||||
|     imageTag: "npmdocker-temp-image:latest", |   imageTag: 'npmdocker-temp-image:latest', | ||||||
|     containerName: "npmdocker-temp-container", |   containerName: 'npmdocker-temp-container', | ||||||
|     dockerProjectMountString: "", |   dockerProjectMountString: '', | ||||||
|     dockerSockString: "", |   dockerSockString: '', | ||||||
|     dockerEnvString: "" |   dockerEnvString: '' | ||||||
| }; | } | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * check if docker is available |  * check if docker is available | ||||||
|  */ |  */ | ||||||
| let checkDocker = () => { | let checkDocker = () => { | ||||||
|     let done = plugins.q.defer(); |   let done = plugins.q.defer() | ||||||
|     npmdockerOra.text("checking docker..."); |   plugins.beautylog.ora.text('checking docker...') | ||||||
|     if (plugins.shelljs.which("docker")) { |   if (plugins.shelljs.which('docker')) { | ||||||
|         plugins.beautylog.ok("Docker found!") |     plugins.beautylog.ok('Docker found!') | ||||||
|         done.resolve(); |     done.resolve() | ||||||
|     } else { |   } else { | ||||||
|         done.reject(new Error("docker not found on this machine")); |     done.reject(new Error('docker not found on this machine')) | ||||||
|     } |   } | ||||||
|     return done.promise; |   return done.promise | ||||||
| }; | } | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * builds the Dockerfile according to the config in the project |  * builds the Dockerfile according to the config in the project | ||||||
|  */ |  */ | ||||||
| let buildDockerFile = () => { | let buildDockerFile = () => { | ||||||
|     let done = plugins.q.defer(); |   let done = plugins.q.defer() | ||||||
|     npmdockerOra.text("building Dockerfile..."); |   plugins.beautylog.ora.text('building Dockerfile...') | ||||||
|     let dockerfile: string = snippets.dockerfileSnippet({ |   let dockerfile: string = snippets.dockerfileSnippet({ | ||||||
|         baseImage: config.baseImage, |     baseImage: config.baseImage, | ||||||
|         command: config.command |     command: config.command | ||||||
|     }); |   }) | ||||||
|     plugins.beautylog.info(`Base image is: ${config.baseImage}`); |   plugins.beautylog.info(`Base image is: ${config.baseImage}`) | ||||||
|     plugins.beautylog.info(`Command is: ${config.command}`); |   plugins.beautylog.info(`Command is: ${config.command}`) | ||||||
|     plugins.smartfile.memory.toFsSync(dockerfile, paths.dockerfile); |   plugins.smartfile.memory.toFsSync(dockerfile, paths.dockerfile) | ||||||
|     plugins.beautylog.ok("Dockerfile created!"); |   plugins.beautylog.ok('Dockerfile created!') | ||||||
|     done.resolve(); |   done.resolve() | ||||||
|     return done.promise |   return done.promise | ||||||
| }; | } | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * builds the Dockerimage from the built Dockerfile |  * builds the Dockerimage from the built Dockerfile | ||||||
|  */ |  */ | ||||||
| let buildDockerImage = () => { | let buildDockerImage = () => { | ||||||
|     let done = plugins.q.defer(); |   let done = plugins.q.defer() | ||||||
|     npmdockerOra.text("pulling latest base image from registry..."); |   plugins.beautylog.ora.text('pulling latest base image from registry...') | ||||||
|     plugins.shelljs.exec(`docker pull ${config.baseImage}`, { |   plugins.shelljs.exec( | ||||||
|         silent: true |     `docker pull ${config.baseImage}`, | ||||||
|     }, () => { |     { | ||||||
|         npmdockerOra.text("building Dockerimage..."); |       silent: true | ||||||
|         // are we creating a build context form project ? |     }, | ||||||
|         if (process.env.CI == "true") { |     () => { | ||||||
|             npmdockerOra.text("creating build context..."); |       plugins.beautylog.ora.text('building Dockerimage...') | ||||||
|             plugins.smartfile.fs.copySync(paths.cwd, paths.buildContextDir); |       // are we creating a build context form project ? | ||||||
|  |       if (process.env.CI === 'true') { | ||||||
|  |         plugins.beautylog.ora.text('creating build context...') | ||||||
|  |         plugins.smartfile.fs.copySync(paths.cwd, paths.buildContextDir) | ||||||
|  |       } | ||||||
|  |       plugins.shelljs.exec( | ||||||
|  |         `docker build -f ${paths.dockerfile} -t ${dockerData.imageTag} ${paths.assets}`, | ||||||
|  |         { | ||||||
|  |           silent: true | ||||||
|  |         }, | ||||||
|  |         () => { | ||||||
|  |           plugins.beautylog.ok('Dockerimage built!') | ||||||
|  |           done.resolve() | ||||||
|         } |         } | ||||||
|         plugins.shelljs.exec(`docker build -f ${paths.dockerfile} -t ${dockerData.imageTag} ${paths.assets}`, { |       ) | ||||||
|             silent: true |     } | ||||||
|         }, () => { |   ) // first pull latest version of baseImage | ||||||
|             plugins.beautylog.ok("Dockerimage built!") |   return done.promise | ||||||
|             done.resolve(); | } | ||||||
|         }); |  | ||||||
|     }); // first pull latest version of baseImage |  | ||||||
|     return done.promise |  | ||||||
| }; |  | ||||||
|  |  | ||||||
| let buildDockerProjectMountString = () => { | let buildDockerProjectMountString = () => { | ||||||
|     let done = plugins.q.defer(); |   let done = plugins.q.defer() | ||||||
|     if (process.env.CI != "true") { |   if (process.env.CI !== 'true') { | ||||||
|         dockerData.dockerProjectMountString = `-v ${paths.cwd}:/workspace`; |     dockerData.dockerProjectMountString = `-v ${paths.cwd}:/workspace` | ||||||
|     }; |   }; | ||||||
|     done.resolve(); |   done.resolve() | ||||||
|     return done.promise; |   return done.promise | ||||||
| } | } | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * builds an environment string that docker cli understands | ||||||
|  |  */ | ||||||
| let buildDockerEnvString = () => { | let buildDockerEnvString = () => { | ||||||
|     let done = plugins.q.defer(); |   let done = plugins.q.defer() | ||||||
|     for (let keyValueObjectArg of config.keyValueObjectArray) { |   for (let keyValueObjectArg of config.keyValueObjectArray) { | ||||||
|         let envString = dockerData.dockerEnvString = dockerData.dockerEnvString + `-e ${keyValueObjectArg.key}=${keyValueObjectArg.value} ` |     let envString = dockerData.dockerEnvString = dockerData.dockerEnvString + `-e ${keyValueObjectArg.key}=${keyValueObjectArg.value} ` | ||||||
|     }; |   }; | ||||||
|     done.resolve(); |   done.resolve() | ||||||
|     return done.promise; |   return done.promise | ||||||
| } | } | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * creates string to mount the docker.sock inside the testcontainer | ||||||
|  |  */ | ||||||
| let buildDockerSockString = () => { | let buildDockerSockString = () => { | ||||||
|     let done = plugins.q.defer(); |   let done = plugins.q.defer() | ||||||
|     if (config.dockerSock) { |   if (config.dockerSock) { | ||||||
|         dockerData.dockerSockString = `-v /var/run/docker.sock:/var/run/docker.sock` |     dockerData.dockerSockString = `-v /var/run/docker.sock:/var/run/docker.sock` | ||||||
|     }; |   }; | ||||||
|     done.resolve() |   done.resolve() | ||||||
|     return done; |   return done | ||||||
| }; | } | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * creates a container by running the built Dockerimage |  * creates a container by running the built Dockerimage | ||||||
|  */ |  */ | ||||||
| let runDockerImage = () => { | let runDockerImage = () => { | ||||||
|     let done = plugins.q.defer(); |   let done = plugins.q.defer() | ||||||
|     npmdockerOra.text("starting Container..."); |   plugins.beautylog.ora.text('starting Container...') | ||||||
|     npmdockerOra.end(); |   plugins.beautylog.ora.end() | ||||||
|     plugins.beautylog.log("now running Dockerimage"); |   plugins.beautylog.log('now running Dockerimage') | ||||||
|     config.exitCode = plugins.shelljs.exec(`docker run ${dockerData.dockerProjectMountString} ${dockerData.dockerSockString} ${dockerData.dockerEnvString} --name ${dockerData.containerName} ${dockerData.imageTag}`).code; |   config.exitCode = plugins.shelljs.exec(`docker run ${dockerData.dockerProjectMountString} ${dockerData.dockerSockString} ${dockerData.dockerEnvString} --name ${dockerData.containerName} ${dockerData.imageTag}`).code | ||||||
|     done.resolve(); |   done.resolve() | ||||||
|     return done.promise; |   return done.promise | ||||||
| }; | } | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * cleans up: deletes the test container | ||||||
|  |  */ | ||||||
| let deleteDockerContainer = () => { | let deleteDockerContainer = () => { | ||||||
|     let done = plugins.q.defer(); |   let done = plugins.q.defer() | ||||||
|     plugins.shelljs.exec(`docker rm -f ${dockerData.containerName}`, { |   plugins.shelljs.exec(`docker rm -f ${dockerData.containerName}`, { | ||||||
|         silent: true |     silent: true | ||||||
|     }); |   }) | ||||||
|     done.resolve(); |   done.resolve() | ||||||
|     return done.promise |   return done.promise | ||||||
| }; | } | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * cleans up deletes the test image | ||||||
|  |  */ | ||||||
| let deleteDockerImage = () => { | let deleteDockerImage = () => { | ||||||
|     let done = plugins.q.defer(); |   let done = plugins.q.defer() | ||||||
|     plugins.shelljs.exec(`docker rmi ${dockerData.imageTag}`, { |   plugins.shelljs.exec(`docker rmi ${dockerData.imageTag}`, { | ||||||
|         silent: true |     silent: true | ||||||
|     }); |   }) | ||||||
|     done.resolve(); |   done.resolve() | ||||||
|     return done.promise |   return done.promise | ||||||
| }; | } | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * cleans up, deletes the build context | ||||||
|  |  */ | ||||||
| let deleteBuildContext = () => { | let deleteBuildContext = () => { | ||||||
|     let done = plugins.q.defer(); |   let done = plugins.q.defer() | ||||||
|     plugins.smartfile.fs.remove(paths.buildContextDir) |   plugins.smartfile.fs.remove(paths.buildContextDir) | ||||||
|         .then(done.resolve); |     .then(() => { | ||||||
|     return done.promise; |       done.resolve() | ||||||
| }; |     }) | ||||||
|  |   return done.promise | ||||||
|  | } | ||||||
|  |  | ||||||
| let preClean = () => { | let preClean = () => { | ||||||
|     let done = plugins.q.defer(); |   let done = plugins.q.defer() | ||||||
|     deleteDockerImage() |   deleteDockerImage() | ||||||
|         .then(deleteDockerContainer) |     .then(deleteDockerContainer) | ||||||
|         .then(() => { |     .then(() => { | ||||||
|             plugins.beautylog.ok("ensured clean Docker environment!"); |       plugins.beautylog.ok('ensured clean Docker environment!') | ||||||
|             done.resolve(); |       done.resolve() | ||||||
|         }); |     }) | ||||||
| }; | } | ||||||
|  |  | ||||||
| let postClean = () => { | let postClean = () => { | ||||||
|     let done = plugins.q.defer(); |   let done = plugins.q.defer() | ||||||
|     deleteDockerContainer() |   deleteDockerContainer() | ||||||
|         .then(deleteDockerImage) |     .then(deleteDockerImage) | ||||||
|         .then(deleteBuildContext) |     .then(deleteBuildContext) | ||||||
|         .then(() => { |     .then(() => { | ||||||
|             plugins.beautylog.ok("cleaned up!"); |       plugins.beautylog.ok('cleaned up!') | ||||||
|             done.resolve(); |       done.resolve() | ||||||
|         }); |     }) | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| export let run = (configArg) => { | export let run = (configArg) => { | ||||||
|     let done = plugins.q.defer(); |   let done = plugins.q.defer() | ||||||
|     config = configArg; |   config = configArg | ||||||
|     checkDocker() |   checkDocker() | ||||||
|         .then(preClean) |     .then(preClean) | ||||||
|         .then(buildDockerFile) |     .then(buildDockerFile) | ||||||
|         .then(buildDockerImage) |     .then(buildDockerImage) | ||||||
|         .then(buildDockerProjectMountString) |     .then(buildDockerProjectMountString) | ||||||
|         .then(buildDockerEnvString) |     .then(buildDockerEnvString) | ||||||
|         .then(buildDockerSockString) |     .then(buildDockerSockString) | ||||||
|         .then(runDockerImage) |     .then(runDockerImage) | ||||||
|         .then(postClean) |     .then(postClean) | ||||||
|         .then(() => { |     .then(() => { | ||||||
|             done.resolve(config); |       done.resolve(config); | ||||||
|         }).catch(err => {console.log(err)}); |     }).catch(err => { console.log(err) }) | ||||||
|     return done.promise; |   return done.promise | ||||||
| } | } | ||||||
| @@ -3,7 +3,7 @@ export import beautylog = require("beautylog"); | |||||||
| export import npmextra = require("npmextra"); | export import npmextra = require("npmextra"); | ||||||
| export import path = require("path"); | export import path = require("path"); | ||||||
| export import projectinfo = require("projectinfo"); | export import projectinfo = require("projectinfo"); | ||||||
| export import q = require("q"); | export import q = require("smartq"); | ||||||
| export import qenv = require("qenv"); | export import qenv = require("qenv"); | ||||||
| export import shelljs = require("shelljs"); | export import shelljs = require("shelljs"); | ||||||
| export import smartfile = require("smartfile"); | export import smartfile = require("smartfile"); | ||||||
|   | |||||||
| @@ -1,12 +1,11 @@ | |||||||
| import * as plugins from "./npmdocker.plugins"; | import * as plugins from "./npmdocker.plugins"; | ||||||
| import * as paths from "./npmdocker.paths"; | import * as paths from "./npmdocker.paths"; | ||||||
| import {Ora} from "beautylog"; |  | ||||||
| //modules | //modules | ||||||
| import * as ConfigModule from "./npmdocker.config"; | import * as ConfigModule from "./npmdocker.config"; | ||||||
| import * as DockerModule from "./npmdocker.docker"; | import * as DockerModule from "./npmdocker.docker"; | ||||||
|  |  | ||||||
| export let npmdockerOra = new Ora("npmdocker","blue"); | plugins.beautylog.ora.start(); | ||||||
| npmdockerOra.start(); |  | ||||||
| export let run = () => { | export let run = () => { | ||||||
|     let done = plugins.q.defer(); |     let done = plugins.q.defer(); | ||||||
|     ConfigModule.run() |     ConfigModule.run() | ||||||
|   | |||||||
							
								
								
									
										3
									
								
								tslint.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								tslint.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | |||||||
|  | { | ||||||
|  |     "extends": "tslint-config-standard" | ||||||
|  | } | ||||||
		Reference in New Issue
	
	Block a user