IncludesFinder.java

package com.github.casperjs.casperjsrunner;

import static com.github.casperjs.casperjsrunner.LogUtils.getLogger;
import static java.util.Arrays.asList;

import org.codehaus.plexus.util.DirectoryScanner;

import java.io.File;
import java.util.Collections;
import java.util.List;

public class IncludesFinder {

    private final File baseDir;

    private final List<String> patterns;

    public IncludesFinder(final File baseDir, final List<String> patterns) {
        if (patterns == null || patterns.isEmpty()) {
            throw new IllegalArgumentException("Patterns to search must be defined !");
        }
        this.baseDir = baseDir;
        this.patterns = patterns;
    }

    public List<String> findIncludes() {
        getLogger().info("Looking for includes in " + baseDir + "...");

        final DirectoryScanner scanner = new DirectoryScanner();
        scanner.setCaseSensitive(false);
        scanner.setBasedir(baseDir);
        scanner.setIncludes(patterns.toArray(new String[patterns.size()]));
        scanner.scan();

        final List<String> result = asList(scanner.getIncludedFiles());
        Collections.sort(result);
        return result;
    }

}