X Tutup
Skip to content

Commit e57b7fa

Browse files
committed
Add support for deleting temporary temp tar files
1 parent f86abdb commit e57b7fa

File tree

5 files changed

+22
-8
lines changed

5 files changed

+22
-8
lines changed

src/main/java/com/github/dockerjava/api/DockerClient.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,8 @@ public CopyFileFromContainerCmd copyFileFromContainerCmd(
120120

121121
public BuildImageCmd buildImageCmd(File dockerFolder);
122122

123+
public BuildImageCmd buildImageCmd(File dockerFolder, boolean deleteTarOnExit);
124+
123125
public BuildImageCmd buildImageCmd(InputStream tarInputStream);
124126

125127
public TopContainerCmd topContainerCmd(String containerId);
@@ -134,4 +136,4 @@ public CopyFileFromContainerCmd copyFileFromContainerCmd(
134136

135137
public void close() throws IOException;
136138

137-
}
139+
}

src/main/java/com/github/dockerjava/core/CompressArchiveUtil.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
public class CompressArchiveUtil {
1010

11-
public static File archiveTARFiles(File base, Iterable<File> files, String archiveNameWithOutExtension) throws IOException {
11+
public static File archiveTARFiles(File base, Iterable<File> files, String archiveNameWithOutExtension, boolean deleteOnExit) throws IOException {
1212
File tarFile = new File(FileUtils.getTempDirectoryPath(), archiveNameWithOutExtension + ".tar");
1313
TarArchiveOutputStream tos = new TarArchiveOutputStream(new FileOutputStream(tarFile));
1414
try {
@@ -34,6 +34,9 @@ public static File archiveTARFiles(File base, Iterable<File> files, String archi
3434
tos.close();
3535
}
3636

37+
if (deleteOnExit) {
38+
tarFile.deleteOnExit();
39+
}
3740
return tarFile;
3841
}
3942

src/main/java/com/github/dockerjava/core/DockerClientImpl.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,12 @@ public CommitCmd commitCmd(String containerId) {
245245

246246
@Override
247247
public BuildImageCmd buildImageCmd(File dockerFolder) {
248-
return new BuildImageCmdImpl(getDockerCmdExecFactory().createBuildImageCmdExec(), dockerFolder);
248+
return buildImageCmd(dockerFolder, false);
249+
}
250+
251+
@Override
252+
public BuildImageCmd buildImageCmd(File dockerFolder, boolean deleteTarOnExit) {
253+
return new BuildImageCmdImpl(getDockerCmdExecFactory().createBuildImageCmdExec(), dockerFolder, deleteTarOnExit);
249254
}
250255

251256
@Override

src/main/java/com/github/dockerjava/core/command/BuildImageCmdImpl.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,14 @@ public class BuildImageCmdImpl extends AbstrDockerCmd<BuildImageCmd, InputStream
4545
private boolean remove = true;
4646
private boolean quiet;
4747

48-
public BuildImageCmdImpl(BuildImageCmd.Exec exec, File dockerFolder) {
48+
public BuildImageCmdImpl(BuildImageCmd.Exec exec, File dockerFolder, boolean deleteOnExit) {
4949
super(exec);
5050
Preconditions.checkNotNull(dockerFolder, "dockerFolder is null");
51-
withTarInputStream(buildDockerFolderTar(dockerFolder));
51+
withTarInputStream(buildDockerFolderTar(dockerFolder, deleteOnExit));
52+
}
53+
54+
public BuildImageCmdImpl(BuildImageCmd.Exec exec, File dockerFolder) {
55+
this(exec, dockerFolder, false);
5256
}
5357

5458
public BuildImageCmdImpl(BuildImageCmd.Exec exec, InputStream tarInputStream) {
@@ -139,7 +143,7 @@ public String toString() {
139143
.toString();
140144
}
141145

142-
protected InputStream buildDockerFolderTar(File dockerFolder) {
146+
protected InputStream buildDockerFolderTar(File dockerFolder, boolean deleteOnExit) {
143147
Preconditions.checkArgument(dockerFolder.exists(),
144148
"Path %s doesn't exist", dockerFolder);
145149
Preconditions.checkArgument(dockerFolder.isDirectory(),
@@ -256,7 +260,7 @@ protected InputStream buildDockerFolderTar(File dockerFolder) {
256260
}
257261

258262
dockerFolderTar = CompressArchiveUtil.archiveTARFiles(dockerFolder,
259-
filesToAdd, archiveNameWithOutExtension);
263+
filesToAdd, archiveNameWithOutExtension, deleteOnExit);
260264
return FileUtils.openInputStream(dockerFolderTar);
261265
} catch (IOException ex) {
262266
FileUtils.deleteQuietly(dockerFolderTar);

src/test/java/com/github/dockerjava/core/CompressArchiveUtilTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ public class CompressArchiveUtilTest {
2121
@Test
2222
public void testExecutableFlagIsPreserved() throws Exception {
2323
File executableFile = createExecutableFile();
24-
File archive = CompressArchiveUtil.archiveTARFiles(executableFile.getParentFile(), asList(executableFile), "archive");
24+
File archive = CompressArchiveUtil.archiveTARFiles(executableFile.getParentFile(), asList(executableFile), "archive", false);
2525
File expectedFile = extractFileByName(archive, "executableFile.sh.result");
2626

2727
assertThat("should be executable", expectedFile.canExecute());

0 commit comments

Comments
 (0)
X Tutup