Class DefaultTransferFilesCreator
java.lang.Object
software.xdev.testcontainers.imagebuilder.transfer.DefaultTransferFilesCreator
- All Implemented Interfaces:
TransferFilesCreator
Helper class for copying the docker-context inside a container, based on a (.git-)ignore file.
This class only exists because TestContainers default .dockerignore resolver isn't working well: It's slow (needs ~30s) and works incorrectly/misses files.
Utilizes IgnoreNode for ignoring.
- Author:
- AB
- See Also:
-
Dockerfile.ScannedResult
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected IgnoreNodecreateIgnoreNode(Set<String> ignoreLines) determineFileForTransfer(IgnoreNode ignoreNode, Set<String> alwaysIncludedRelativePaths, Path file, Map<String, Boolean> cachedDirectoryOutcome) determineFilesToTransfer(Set<String> preGitIgnoreLines, Predicate<String> ignoreFileLineFilter, Set<String> postGitIgnoreLines, Set<String> alwaysIncludedRelativePaths) determineParentDirectoryForTransfer(IgnoreNode ignoreNode, Set<String> alwaysIncludedRelativePaths, Path file, Map<String, Boolean> cachedDirectoryOutcome, String relativePath, List<String> processedDirs) getAllFilesToTransferAsTarInputStream(Collection<Path> filesToTransfer, TransferArchiveTARCompressor transferArchiveTARCompressor) protected StringparentDirectory(String dir) shouldIgnore(IgnoreNode ignoreNode, Set<String> alwaysIncludedRelativePaths, Path file, String relativePath, String relativeWorkingPath, boolean isDirectory) walkFilesAndDetermineTransfer(IgnoreNode ignoreNode, Set<String> alwaysIncludedRelativePaths)
-
Constructor Details
-
DefaultTransferFilesCreator
-
-
Method Details
-
determineFilesToTransfer
public Map<Path,String> determineFilesToTransfer(Set<String> preGitIgnoreLines, Predicate<String> ignoreFileLineFilter, Set<String> postGitIgnoreLines, Set<String> alwaysIncludedRelativePaths) - Specified by:
determineFilesToTransferin interfaceTransferFilesCreator
-
createIgnoreNode
-
walkFilesAndDetermineTransfer
protected Map<Path,String> walkFilesAndDetermineTransfer(IgnoreNode ignoreNode, Set<String> alwaysIncludedRelativePaths) throws IOException - Throws:
IOException
-
determineFileForTransfer
-
determineParentDirectoryForTransfer
-
parentDirectory
-
shouldIgnore
-
getAllFilesToTransferAsTarInputStream
public InputStream getAllFilesToTransferAsTarInputStream(Collection<Path> filesToTransfer, TransferArchiveTARCompressor transferArchiveTARCompressor) - Specified by:
getAllFilesToTransferAsTarInputStreamin interfaceTransferFilesCreator
-