diff --git a/src/command.nim b/src/command.nim index 0476066..8341741 100644 --- a/src/command.nim +++ b/src/command.nim @@ -152,7 +152,7 @@ proc down*(conf: ProjectConfig) {.raises: [].} = ## Builds the image, passing build arguments in proc build*(conf: ProjectConfig, noCache: bool = false) = var hasEnv = false - var buildArgs = argsToStr[BuildArgs](conf.buildArgs) + var buildArgs = buildArgsToStr(conf.buildArgs) for arg in conf.buildArgs: if arg.name == "env": hasEnv = true if not hasEnv: diff --git a/src/config.nim b/src/config.nim index f89ed79..ac507b8 100644 --- a/src/config.nim +++ b/src/config.nim @@ -52,10 +52,14 @@ proc data*(config: ProjectConfig): string = ## Helper proc for getting data container name result = config.name & "-data" -proc argsToStr*[T](args: T): string {.raises: [].} = +proc argsToStr*(args: Args): string {.raises: [].} = result = "" - var marker = " -e " - if name(T) == "BuildArgs": - marker = " --build-arg " + let marker = " -e " + for arg in args: + result &= marker & quoteShellPosix(arg.name) & "=" & quoteShellPosix(arg.value) + +proc buildArgsToStr*(args: BuildArgs): string {.raises: [].} = + result = "" + var marker = " --build-arg " for arg in args: result &= marker & quoteShellPosix(arg.name) & "=" & quoteShellPosix(arg.value) diff --git a/test/config_test.nim b/test/config_test.nim index 3bec8c0..3d4f3f0 100644 --- a/test/config_test.nim +++ b/test/config_test.nim @@ -14,10 +14,10 @@ suite "config.argsToStr": test "works with BuildArgs": let args: BuildArgs = @[newArg("example", "value")] - let result = argsToStr(args) + let result = buildArgsToStr(args) check(result == " --build-arg example=value") test "works with Args": let args: Args = @[newArg("example2", "value2")] let result = argsToStr(args) - check(result == " --build-arg example2=value2") + check(result == " -e example2=value2")