From df5aaf07b51dad0fb2fd0a176c60f2025337eade Mon Sep 17 00:00:00 2001 From: Gautam Korlam Date: Fri, 27 Jan 2017 13:51:37 -0800 Subject: [PATCH] combine name exprs --- buckw | 8 +-- .../uber/okbuck/wrapper/BuckWrapperTask.java | 63 +++++++++++++------ 2 files changed, 48 insertions(+), 23 deletions(-) diff --git a/buckw b/buckw index 77b5a8f17..8951aa7d2 100755 --- a/buckw +++ b/buckw @@ -4,7 +4,7 @@ ## ## Buck wrapper script to invoke okbuck when needed, before running buck ## -## Created by OkBuck Gradle Plugin on : Fri Jan 27 01:29:40 PST 2017 +## Created by OkBuck Gradle Plugin on : Fri Jan 27 13:52:56 PST 2017 ## ######################################################################### @@ -74,8 +74,7 @@ getToClean ( ) { "expression": ["allof", ["type", "f"], ["anyof", - ["name", "BUCK"], - ["name", ".buckconfig.local"] + ["name", ["BUCK", ".buckconfig.local"]] ], ["not", ["dirname", ".okbuck"] @@ -97,8 +96,7 @@ getChanges ( ) { ["anyof", ["suffix", "sq"], ["suffix", "gradle"], - ["name", "gradle-wrapper.properties"], - ["name", "lint.xml"], + ["name", ["gradle-wrapper.properties", "lint.xml"]], ["match", "**/src/**/AndroidManifest.xml", "wholename"] ] ], diff --git a/buildSrc/src/main/java/com/uber/okbuck/wrapper/BuckWrapperTask.java b/buildSrc/src/main/java/com/uber/okbuck/wrapper/BuckWrapperTask.java index e5c2a0c08..532fcca3c 100644 --- a/buildSrc/src/main/java/com/uber/okbuck/wrapper/BuckWrapperTask.java +++ b/buildSrc/src/main/java/com/uber/okbuck/wrapper/BuckWrapperTask.java @@ -4,12 +4,16 @@ import com.uber.okbuck.core.util.FileUtil; import org.apache.commons.io.FilenameUtils; +import org.apache.commons.lang.StringUtils; import org.gradle.api.DefaultTask; import org.gradle.api.tasks.Input; import org.gradle.api.tasks.TaskAction; import java.io.File; +import java.util.ArrayList; +import java.util.Arrays; import java.util.Date; +import java.util.List; import java.util.Map; import java.util.Set; import java.util.stream.Collectors; @@ -62,28 +66,51 @@ void installWrapper() { } } - private static String watchmanExpr(String wildcardPattern) { - String simplifiedPattern = wildcardPattern; - if (wildcardPattern.startsWith("**/")) { - simplifiedPattern = wildcardPattern.replaceAll("\\*\\*/", ""); - } - String basename = FilenameUtils.getBaseName(simplifiedPattern); - String extension = FilenameUtils.getExtension(simplifiedPattern); - if (!simplifiedPattern.contains("/")) { - // simple file name with no path prefixes - if (basename.equals("*")) { // suffix - return " [\"suffix\", \"" + extension + "\"]"; - } else { // name - return " [\"name\", \"" + simplifiedPattern + "\"]"; + private static String toWatchmanMatchers(Set wildcardPatterns) { + List matches = new ArrayList<>(); + List suffixes = new ArrayList<>(); + List names = new ArrayList<>(); + + for (String wildcardPattern : wildcardPatterns) { + String simplifiedPattern = wildcardPattern; + if (wildcardPattern.startsWith("**/")) { + simplifiedPattern = wildcardPattern.replaceAll("\\*\\*/", ""); + } + String basename = FilenameUtils.getBaseName(simplifiedPattern); + String extension = FilenameUtils.getExtension(simplifiedPattern); + if (!simplifiedPattern.contains("/")) { + // simple file name with no path prefixes + if (basename.equals("*")) { // suffix + suffixes.add(extension); + } else { // name + names.add(simplifiedPattern); + } + } else { + matches.add(wildcardPattern); } } - return " [\"match\", \"" + wildcardPattern + "\", \"wholename\"]"; - } - private static String toWatchmanMatchers(Set wildcardPatterns) { - return wildcardPatterns + String match_exprs = matches + .parallelStream() + .map(match -> " [\"match\", \"" + match + "\", \"wholename\"]") + .collect(Collectors.joining(",\n")); + + String suffix_exprs = suffixes + .parallelStream() + .map(suffix -> " [\"suffix\", \"" + suffix + "\"]") + .collect(Collectors.joining(",\n")); + + String name_expr = names + .parallelStream() + .map(name -> "\"" + name + "\"") + .collect(Collectors.joining(", ")); + if (!name_expr.isEmpty()) { + name_expr = " [\"name\", [" + name_expr + "]]"; + } + + return Arrays.asList(suffix_exprs, name_expr, match_exprs) .parallelStream() - .map(BuckWrapperTask::watchmanExpr) + .filter(StringUtils::isNotEmpty) .collect(Collectors.joining(",\n")); } }