aboutsummaryrefslogtreecommitdiffstats
path: root/src/main
diff options
context:
space:
mode:
authorEvgeny Mandrikov <mandrikov@gmail.com>2011-12-19 10:06:23 +0000
committerEvgeny Mandrikov <mandrikov@gmail.com>2011-12-19 10:06:23 +0000
commit058098984bae5172dd98d4293da1073600644537 (patch)
treec184cc8afbff224a9487ce0160359889d43fbb3c /src/main
parent270bdf2df0a7d482dfd8f93dbda244da772992c6 (diff)
downloadsonar-scanner-cli-058098984bae5172dd98d4293da1073600644537.tar.gz
sonar-scanner-cli-058098984bae5172dd98d4293da1073600644537.zip
SONARPLUGINS-1376 Allow to use pattern like "lib/*.jar" for property "libraries"
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/org/sonar/runner/Launcher.java28
-rw-r--r--src/main/java/org/sonar/runner/Runner.java4
2 files changed, 28 insertions, 4 deletions
diff --git a/src/main/java/org/sonar/runner/Launcher.java b/src/main/java/org/sonar/runner/Launcher.java
index 7aabda7..ea6f9ce 100644
--- a/src/main/java/org/sonar/runner/Launcher.java
+++ b/src/main/java/org/sonar/runner/Launcher.java
@@ -21,6 +21,7 @@
package org.sonar.runner;
import java.io.File;
+import java.io.FileFilter;
import java.io.InputStream;
import java.util.Properties;
@@ -29,6 +30,9 @@ import ch.qos.logback.classic.joran.JoranConfigurator;
import ch.qos.logback.core.joran.spi.JoranException;
import org.apache.commons.configuration.*;
import org.apache.commons.io.IOUtils;
+import org.apache.commons.io.filefilter.AndFileFilter;
+import org.apache.commons.io.filefilter.FileFileFilter;
+import org.apache.commons.io.filefilter.WildcardFileFilter;
import org.apache.commons.lang.StringUtils;
import org.slf4j.LoggerFactory;
import org.sonar.api.utils.SonarException;
@@ -91,12 +95,32 @@ public class Launcher {
for (String dir : getList(properties, "binaries")) {
definition.addBinaryDir(dir);
}
- for (String file : getList(properties, "libraries")) {
- definition.addLibrary(file);
+ for (String pattern : getList(properties, "libraries")) {
+ for (File file : getLibraries(pattern)) {
+ definition.addLibrary(file.getAbsolutePath());
+ }
}
return definition;
}
+ /**
+ * Returns files matching specified pattern.
+ * Visibility has been relaxed to make code testable.
+ */
+ static File[] getLibraries(String pattern) {
+ final int i = Math.max(pattern.lastIndexOf('/'), pattern.lastIndexOf('\\'));
+ final String dir, filePattern;
+ if (i == -1) {
+ dir = ".";
+ filePattern = pattern;
+ } else {
+ dir = pattern.substring(0, i);
+ filePattern = pattern.substring(i + 1);
+ }
+ FileFilter fileFilter = new AndFileFilter(FileFileFilter.FILE, new WildcardFileFilter(filePattern));
+ return new File(dir).listFiles(fileFilter);
+ }
+
private String[] getList(Properties properties, String key) {
return StringUtils.split(properties.getProperty(key, ""), ',');
}
diff --git a/src/main/java/org/sonar/runner/Runner.java b/src/main/java/org/sonar/runner/Runner.java
index 64bb52f..a4d02b8 100644
--- a/src/main/java/org/sonar/runner/Runner.java
+++ b/src/main/java/org/sonar/runner/Runner.java
@@ -51,7 +51,7 @@ public final class Runner {
/**
* Array of prefixes of versions of Sonar without support of this runner.
*/
- private static final String[] unsupportedVersions = { "1", "2.0", "2.1", "2.2", "2.3", "2.4", "2.5" };
+ private static final String[] UNSUPPORTED_VERSIONS = { "1", "2.0", "2.1", "2.2", "2.3", "2.4", "2.5" };
/**
* Array of all mandatory properties required to execute runner.
@@ -151,7 +151,7 @@ public final class Runner {
}
static boolean isUnsupportedVersion(String version) {
- for (String unsupportedVersion : unsupportedVersions) {
+ for (String unsupportedVersion : UNSUPPORTED_VERSIONS) {
if (isVersion(version, unsupportedVersion)) {
return true;
}