Skip to content

Commit

Permalink
combine name exprs
Browse files Browse the repository at this point in the history
  • Loading branch information
Gautam Korlam committed Jan 27, 2017
1 parent f950c9e commit df5aaf0
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 23 deletions.
8 changes: 3 additions & 5 deletions buckw
Original file line number Diff line number Diff line change
Expand Up @@ -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
##
#########################################################################

Expand Down Expand Up @@ -74,8 +74,7 @@ getToClean ( ) {
"expression": ["allof",
["type", "f"],
["anyof",
["name", "BUCK"],
["name", ".buckconfig.local"]
["name", ["BUCK", ".buckconfig.local"]]
],
["not",
["dirname", ".okbuck"]
Expand All @@ -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"]
]
],
Expand Down
63 changes: 45 additions & 18 deletions buildSrc/src/main/java/com/uber/okbuck/wrapper/BuckWrapperTask.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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<String> wildcardPatterns) {
List<String> matches = new ArrayList<>();
List<String> suffixes = new ArrayList<>();
List<String> 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<String> 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"));
}
}

0 comments on commit df5aaf0

Please sign in to comment.