From 8c5cf3485afccf559eda62ceb86435745e9cff0a Mon Sep 17 00:00:00 2001 From: PhilKunz Date: Tue, 19 Jul 2016 00:59:57 +0200 Subject: [PATCH] improve confighandling --- ts/npmdocker.config.ts | 7 ++++++- ts/npmdocker.docker.ts | 18 ++++++++++++++---- ts/npmdocker.snippets.ts | 12 ++++++++++-- 3 files changed, 30 insertions(+), 7 deletions(-) diff --git a/ts/npmdocker.config.ts b/ts/npmdocker.config.ts index 5fde002..1342170 100644 --- a/ts/npmdocker.config.ts +++ b/ts/npmdocker.config.ts @@ -1,7 +1,12 @@ import * as plugins from "./npmdocker.plugins"; import * as paths from "./npmdocker.paths"; -let config = plugins.npmextra.dataFor({ +export interface IConfig { + baseImage:string; + command:string; +} + +let config:IConfig = plugins.npmextra.dataFor({ toolName:"npmdocker", defaultSettings: {}, cwd: "" diff --git a/ts/npmdocker.docker.ts b/ts/npmdocker.docker.ts index 507c81a..687f0d8 100644 --- a/ts/npmdocker.docker.ts +++ b/ts/npmdocker.docker.ts @@ -1,13 +1,16 @@ import * as plugins from "./npmdocker.plugins"; import * as paths from "./npmdocker.paths"; +import * as snippets from "./npmdocker.snippets"; + +let config; /** * check if docker is available */ -let checkDocker = (configArg) => { +let checkDocker = () => { let done = plugins.q.defer(); if(plugins.shelljs.which("docker")){ - done.resolve(configArg); + done.resolve(); } else { done.reject(new Error("docker not found on this machine")); } @@ -19,6 +22,10 @@ let checkDocker = (configArg) => { */ let buildDockerFile = () => { let done = plugins.q.defer(); + let dockerfile = snippets.dockerfileSnippet({ + baseImage:config.baseImage, + command:config.command + }); return done.promise }; @@ -52,12 +59,15 @@ let deleteDockerImage = () => { export let run = (configArg) => { let done = plugins.q.defer(); - checkDocker(configArg) + config = configArg; + checkDocker() .then(buildDockerFile) .then(buildDockerImage) .then(runDockerImage) .then(deleteDockerContainter) .then(deleteDockerImage) - .then(done.resolve) + .then(() => { + done.resolve(configArg); + }) return done.promise; } \ No newline at end of file diff --git a/ts/npmdocker.snippets.ts b/ts/npmdocker.snippets.ts index 0ea48f2..d87fbfd 100644 --- a/ts/npmdocker.snippets.ts +++ b/ts/npmdocker.snippets.ts @@ -5,9 +5,17 @@ export interface IDockerfileSnippet { command:string; } -export let dockerfileSnippet = (optionsArg:IDockerfileSnippet) => { +export let dockerfileSnippet = (optionsArg:IDockerfileSnippet):string => { + let commandArray = optionsArg.command.split(" "); + let commandString:string = ""; + for(let stringItem of commandArray){ + if(!(commandString == "")){ + commandString = commandString + ","; + } + commandString = commandString + '"' + stringItem + '"'; + } return ` FROM ${optionsArg.baseImage} - + cmd[${commandString}]; ` } \ No newline at end of file