From 4cfc7f3a73a8a532240241dc1e22133114488e7c Mon Sep 17 00:00:00 2001 From: Jonathan Pearlin Date: Wed, 2 Jul 2014 12:02:02 -0400 Subject: [PATCH 1/2] Use regular expression to match on ADD command. Dockerfile spec does not specify the whitespace format between the `ADD` command and the parameters. This change uses the whitespace character class to handle any whitespace (space, tab, etc) between the command and the parameters. --- .../dockerjava/client/command/BuildImgCmd.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/github/dockerjava/client/command/BuildImgCmd.java b/src/main/java/com/github/dockerjava/client/command/BuildImgCmd.java index edaa3110c..7ce474476 100644 --- a/src/main/java/com/github/dockerjava/client/command/BuildImgCmd.java +++ b/src/main/java/com/github/dockerjava/client/command/BuildImgCmd.java @@ -8,6 +8,8 @@ import java.util.ArrayList; import java.util.List; import java.util.UUID; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.MultivaluedMap; @@ -34,6 +36,8 @@ public class BuildImgCmd extends AbstrDockerCmd { private static final Logger LOGGER = LoggerFactory.getLogger(BuildImgCmd.class); + private static final Pattern ADD_PATTERN = Pattern.compile("^ADD\\s+(.*)\\s+(.*)$"); + private File dockerFolder = null; private InputStream tarInputStream = null; private String tag; @@ -122,13 +126,13 @@ protected File buildDockerFolderTar() { filesToAdd.add(dockerFile); for (String cmd : dockerFileContent) { - if (StringUtils.startsWithIgnoreCase(cmd.trim(), "ADD")) { - String addArgs[] = StringUtils.split(cmd, " \t"); - if (addArgs.length != 3) { + final Matcher matcher = ADD_PATTERN.matcher(cmd); + if (matcher.find()) { + if (matcher.groupCount() != 2) { throw new DockerException(String.format("Wrong format on line [%s]", cmd)); } - String resource = addArgs[1]; + String resource = matcher.group(1); if(isFileResource(resource)) { File src = new File(resource); From d71d9681c700c1964e5d71d1805c9f68125ae8f3 Mon Sep 17 00:00:00 2001 From: Jonathan Pearlin Date: Wed, 2 Jul 2014 12:07:38 -0400 Subject: [PATCH 2/2] Added .trim() to command string. --- .../java/com/github/dockerjava/client/command/BuildImgCmd.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/github/dockerjava/client/command/BuildImgCmd.java b/src/main/java/com/github/dockerjava/client/command/BuildImgCmd.java index 7ce474476..0b718798a 100644 --- a/src/main/java/com/github/dockerjava/client/command/BuildImgCmd.java +++ b/src/main/java/com/github/dockerjava/client/command/BuildImgCmd.java @@ -126,7 +126,7 @@ protected File buildDockerFolderTar() { filesToAdd.add(dockerFile); for (String cmd : dockerFileContent) { - final Matcher matcher = ADD_PATTERN.matcher(cmd); + final Matcher matcher = ADD_PATTERN.matcher(cmd.trim()); if (matcher.find()) { if (matcher.groupCount() != 2) { throw new DockerException(String.format("Wrong format on line [%s]", cmd));