Skip to content

Commit

Permalink
Relax targetDir requirements (#1244)
Browse files Browse the repository at this point in the history
Signed-off-by: Tobias Stadler <ts.stadler@gmx.de>
  • Loading branch information
tobiasstadler authored and rhuss committed Aug 10, 2019
1 parent 2e16523 commit f457ea9
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@ public class DockerFileBuilder {

private static final Joiner JOIN_ON_COMMA = Joiner.on("\",\"");

private static final Pattern ENV_VAR_PATTERN = Pattern.compile("^\\$(\\{[a-zA-Z0-9_]+\\}|[a-zA-Z0-9_]+).*");

// Base image to use as from
private String baseImage;

Expand Down Expand Up @@ -370,9 +372,9 @@ public DockerFileBuilder workdir(String workdir) {

public DockerFileBuilder basedir(String dir) {
if (dir != null) {
if (!dir.startsWith("/")) {
if (!dir.startsWith("/") && !ENV_VAR_PATTERN.matcher(dir).matches()) {
throw new IllegalArgumentException("'basedir' must be an absolute path starting with / (and not " +
"'" + basedir + "')");
"'" + basedir + "') or start with an environment variable");
}
basedir = dir;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -252,6 +252,16 @@ public void testExportBaseDir() {
assertFalse(new DockerFileBuilder().baseImage("java").exportTargetDir(false).basedir("/export").content().contains("/export"));
}

@Test
public void testTargetDirStartsWithEnvVar() {
assertTrue(new DockerFileBuilder().basedir("${FOO}").content().contains("${FOO}"));
assertTrue(new DockerFileBuilder().basedir("$FOO").content().contains("$FOO"));
assertTrue(new DockerFileBuilder().basedir("${FOO}/").content().contains("${FOO}"));
assertTrue(new DockerFileBuilder().basedir("$FOO/").content().contains("$FOO"));
assertTrue(new DockerFileBuilder().basedir("${FOO}/bar").content().contains("${FOO}/bar"));
assertTrue(new DockerFileBuilder().basedir("$FOO/bar").content().contains("$FOO/bar"));
}

@Test
public void testDockerFileKeywords() {
StringBuilder b = new StringBuilder();
Expand Down

0 comments on commit f457ea9

Please sign in to comment.