package com.scss.utils;
import com.intellij.execution.configurations.PathEnvironmentVariableUtil;
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.List;
import java.util.Set;
public final class ScssLintFinder {
public static final String SCSS_LINT_BASE_NAME = NodeFinder.getBinName("scss-lint");
public static final String SCSS_LINT_YML = "scss-lint.yml";
private ScssLintFinder() {
}
@NotNull
public static List<File> findAllScssLintExe() {
Set<File> exes = ContainerUtil.newLinkedHashSet();
// TODO looks like on windows it only searches system path and not user's
List<File> fromPath = PathEnvironmentVariableUtil.findAllExeFilesInPath(SCSS_LINT_BASE_NAME);
exes.addAll(fromPath);
return ContainerUtil.newArrayList(exes);
}
/**
* find possible scss-lint config files
* @param projectRoot project root
* @return a list of scss-lint config files
*/
public static List<String> searchForLintConfigFiles(final File projectRoot) {
FilenameFilter filter = new FilenameFilter() {
@Override
public boolean accept(File file, String name) {
return name.equals(SCSS_LINT_YML);
}
};
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));
}
});
}
}