package com.coffeelint.cli; import com.coffeelint.config.CoffeeLintConfigFileType; import com.intellij.openapi.util.SystemInfo; import com.intellij.util.Function; import com.intellij.util.containers.ContainerUtil; import com.wix.nodejs.NodeFinder; import com.wix.utils.FileUtils; import org.jetbrains.annotations.NotNull; import java.io.File; import java.io.FilenameFilter; import java.util.*; public final class CoffeeLintFinder { public static final String COFFEE_LINT_BASE_NAME = SystemInfo.isWindows ? "coffeelint.cmd" : "coffeelint"; private CoffeeLintFinder() { } @NotNull public static List<File> searchForCoffeeLintExe(File projectRoot) { return NodeFinder.searchAllScopesForBin(projectRoot, COFFEE_LINT_BASE_NAME); } /** * find possible coffeelint rc files * * @param projectRoot * @return */ public static List<String> searchForConfigFiles(final File projectRoot) { FilenameFilter filter = new FilenameFilter() { @Override public boolean accept(File file, String name) { return name.equals(CoffeeLintConfigFileType.COFFEE_LINT_CONFIG); } }; // return Arrays.asList(files); List<String> files = FileUtils.recursiveVisitor(projectRoot, filter); return ContainerUtil.map(files, new Function<String, String>() { public String fun(String curFile) { return FileUtils.makeRelative(projectRoot, new File(curFile)); } }); } }