Search in sources :

Example 1 with Deleter

use of org.gradle.internal.file.Deleter in project gradle by gradle.

the class SyncCopyActionDecorator method execute.

@Override
public WorkResult execute(final CopyActionProcessingStream stream) {
    final Set<RelativePath> visited = new HashSet<>();
    WorkResult didWork = delegate.execute(action -> stream.process(details -> {
        visited.add(details.getRelativePath());
        action.processFile(details);
    }));
    SyncCopyActionDecoratorFileVisitor fileVisitor = new SyncCopyActionDecoratorFileVisitor(visited, preserveSpec, deleter);
    MinimalFileTree walker = directoryFileTreeFactory.create(baseDestDir).postfix();
    walker.visit(fileVisitor);
    visited.clear();
    return WorkResults.didWork(didWork.getDidWork() || fileVisitor.didWork);
}
Also used : PatternFilterable(org.gradle.api.tasks.util.PatternFilterable) FileVisitDetails(org.gradle.api.file.FileVisitDetails) PatternSet(org.gradle.api.tasks.util.PatternSet) Set(java.util.Set) IOException(java.io.IOException) WorkResult(org.gradle.api.tasks.WorkResult) File(java.io.File) WorkResults(org.gradle.api.tasks.WorkResults) UncheckedIOException(java.io.UncheckedIOException) HashSet(java.util.HashSet) Deleter(org.gradle.internal.file.Deleter) RelativePath(org.gradle.api.file.RelativePath) Spec(org.gradle.api.specs.Spec) DirectoryFileTreeFactory(org.gradle.api.internal.file.collections.DirectoryFileTreeFactory) FileTreeElement(org.gradle.api.file.FileTreeElement) MinimalFileTree(org.gradle.api.internal.file.collections.MinimalFileTree) FileVisitor(org.gradle.api.file.FileVisitor) Nullable(javax.annotation.Nullable) RelativePath(org.gradle.api.file.RelativePath) WorkResult(org.gradle.api.tasks.WorkResult) MinimalFileTree(org.gradle.api.internal.file.collections.MinimalFileTree) HashSet(java.util.HashSet)

Example 2 with Deleter

use of org.gradle.internal.file.Deleter in project gradle by gradle.

the class StaleOutputCleaner method cleanOutputs.

/**
 * Clean up the given stale output files under the given directories.
 *
 * Any files and directories are removed that are descendants of any of the {@code directoriesToClean}.
 * Files and directories outside {@code directoriesToClean} and {@code directoriesToClean} themselves are not deleted.
 *
 * Returns {code true} if any file or directory was deleted, {@code false} otherwise.
 */
@CheckReturnValue
public static boolean cleanOutputs(Deleter deleter, Iterable<File> filesToDelete, ImmutableSet<File> directoriesToClean) {
    Set<String> prefixes = directoriesToClean.stream().map(directoryToClean -> directoryToClean.getAbsolutePath() + File.separator).collect(Collectors.toSet());
    OutputsCleaner outputsCleaner = new OutputsCleaner(deleter, file -> {
        String absolutePath = file.getAbsolutePath();
        return prefixes.stream().anyMatch(absolutePath::startsWith);
    }, dir -> !directoriesToClean.contains(dir));
    try {
        for (File f : filesToDelete) {
            if (f.isFile()) {
                outputsCleaner.cleanupOutput(f, FileType.RegularFile);
            }
        }
        outputsCleaner.cleanupDirectories();
    } catch (IOException e) {
        throw new UncheckedIOException("Failed to clean up stale outputs", e);
    }
    return outputsCleaner.getDidWork();
}
Also used : Deleter(org.gradle.internal.file.Deleter) CheckReturnValue(javax.annotation.CheckReturnValue) ImmutableSet(com.google.common.collect.ImmutableSet) OutputsCleaner(org.gradle.internal.execution.history.OutputsCleaner) Set(java.util.Set) FileType(org.gradle.internal.file.FileType) IOException(java.io.IOException) Collectors(java.util.stream.Collectors) UncheckedIOException(org.gradle.api.UncheckedIOException) File(java.io.File) OutputsCleaner(org.gradle.internal.execution.history.OutputsCleaner) UncheckedIOException(org.gradle.api.UncheckedIOException) IOException(java.io.IOException) UncheckedIOException(org.gradle.api.UncheckedIOException) File(java.io.File) CheckReturnValue(javax.annotation.CheckReturnValue)

Example 3 with Deleter

use of org.gradle.internal.file.Deleter in project gradle by gradle.

the class DefaultFileOperations method createSimple.

public static DefaultFileOperations createSimple(FileResolver fileResolver, FileCollectionFactory fileTreeFactory, ServiceRegistry services) {
    Instantiator instantiator = services.get(Instantiator.class);
    ObjectFactory objectFactory = services.get(ObjectFactory.class);
    FileSystem fileSystem = services.get(FileSystem.class);
    DirectoryFileTreeFactory directoryFileTreeFactory = services.get(DirectoryFileTreeFactory.class);
    StreamHasher streamHasher = services.get(StreamHasher.class);
    FileHasher fileHasher = services.get(FileHasher.class);
    ApiTextResourceAdapter.Factory textResourceAdapterFactory = services.get(ApiTextResourceAdapter.Factory.class);
    Factory<PatternSet> patternSetFactory = services.getFactory(PatternSet.class);
    Deleter deleter = services.get(Deleter.class);
    DocumentationRegistry documentationRegistry = services.get(DocumentationRegistry.class);
    ProviderFactory providers = services.get(ProviderFactory.class);
    DefaultResourceHandler.Factory resourceHandlerFactory = DefaultResourceHandler.Factory.from(fileResolver, fileSystem, null, textResourceAdapterFactory);
    return new DefaultFileOperations(fileResolver, null, instantiator, directoryFileTreeFactory, streamHasher, fileHasher, resourceHandlerFactory, fileTreeFactory, objectFactory, fileSystem, patternSetFactory, deleter, documentationRegistry, providers);
}
Also used : Deleter(org.gradle.internal.file.Deleter) Instantiator(org.gradle.internal.reflect.Instantiator) StreamHasher(org.gradle.internal.hash.StreamHasher) FileHasher(org.gradle.internal.hash.FileHasher) ObjectFactory(org.gradle.api.model.ObjectFactory) DirectoryFileTreeFactory(org.gradle.api.internal.file.collections.DirectoryFileTreeFactory) DefaultResourceHandler(org.gradle.api.internal.resources.DefaultResourceHandler) FileSystem(org.gradle.internal.nativeintegration.filesystem.FileSystem) ProviderFactory(org.gradle.api.provider.ProviderFactory) DocumentationRegistry(org.gradle.api.internal.DocumentationRegistry) ApiTextResourceAdapter(org.gradle.api.internal.resources.ApiTextResourceAdapter) PatternSet(org.gradle.api.tasks.util.PatternSet)

Aggregations

Deleter (org.gradle.internal.file.Deleter)3 File (java.io.File)2 IOException (java.io.IOException)2 Set (java.util.Set)2 DirectoryFileTreeFactory (org.gradle.api.internal.file.collections.DirectoryFileTreeFactory)2 PatternSet (org.gradle.api.tasks.util.PatternSet)2 ImmutableSet (com.google.common.collect.ImmutableSet)1 UncheckedIOException (java.io.UncheckedIOException)1 HashSet (java.util.HashSet)1 Collectors (java.util.stream.Collectors)1 CheckReturnValue (javax.annotation.CheckReturnValue)1 Nullable (javax.annotation.Nullable)1 UncheckedIOException (org.gradle.api.UncheckedIOException)1 FileTreeElement (org.gradle.api.file.FileTreeElement)1 FileVisitDetails (org.gradle.api.file.FileVisitDetails)1 FileVisitor (org.gradle.api.file.FileVisitor)1 RelativePath (org.gradle.api.file.RelativePath)1 DocumentationRegistry (org.gradle.api.internal.DocumentationRegistry)1 MinimalFileTree (org.gradle.api.internal.file.collections.MinimalFileTree)1 ApiTextResourceAdapter (org.gradle.api.internal.resources.ApiTextResourceAdapter)1