You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by pa...@apache.org on 2017/09/18 12:32:51 UTC
svn commit: r1808691 -
/sling/whiteboard/cziegeler/feature-applicationbuilder/src/main/java/org/apache/sling/feature/applicationbuilder/impl/Main.java
Author: pauls
Date: Mon Sep 18 12:32:51 2017
New Revision: 1808691
URL: http://svn.apache.org/viewvc?rev=1808691&view=rev
Log:
Allow several directories and feature files to be given
Modified:
sling/whiteboard/cziegeler/feature-applicationbuilder/src/main/java/org/apache/sling/feature/applicationbuilder/impl/Main.java
Modified: sling/whiteboard/cziegeler/feature-applicationbuilder/src/main/java/org/apache/sling/feature/applicationbuilder/impl/Main.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/cziegeler/feature-applicationbuilder/src/main/java/org/apache/sling/feature/applicationbuilder/impl/Main.java?rev=1808691&r1=1808690&r2=1808691&view=diff
==============================================================================
--- sling/whiteboard/cziegeler/feature-applicationbuilder/src/main/java/org/apache/sling/feature/applicationbuilder/impl/Main.java (original)
+++ sling/whiteboard/cziegeler/feature-applicationbuilder/src/main/java/org/apache/sling/feature/applicationbuilder/impl/Main.java Mon Sep 18 12:32:51 2017
@@ -27,6 +27,8 @@ import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.CommandLineParser;
@@ -58,7 +60,9 @@ public class Main {
private static String output;
- private static String input;
+ private static String filesInput;
+
+ private static String dirsInput;
private static String repoUrls;
@@ -73,7 +77,8 @@ public class Main {
final Option repoOption = Option.builder("u").hasArg().argName("Set repository url")
.desc("repository url").required().build();
- final Option modelOption = new Option("f", true, "Set feature files/directories");
+ final Option filesOption = new Option("f", true, "Set feature files (comma separated)");
+ final Option dirsOption = new Option("d", true, "Set feature file dirs (comma separated)");
final Option propsOption = new Option("p", true, "sling.properties file");
@@ -82,7 +87,8 @@ public class Main {
final Options options = new Options();
options.addOption(repoOption);
- options.addOption(modelOption);
+ options.addOption(filesOption);
+ options.addOption(dirsOption);
options.addOption(outputOption);
options.addOption(propsOption);
@@ -93,8 +99,11 @@ public class Main {
if ( cl.hasOption(repoOption.getOpt()) ) {
repoUrls = cl.getOptionValue(repoOption.getOpt());
}
- if ( cl.hasOption(modelOption.getOpt()) ) {
- input = cl.getOptionValue(modelOption.getOpt());
+ if ( cl.hasOption(filesOption.getOpt()) ) {
+ filesInput = cl.getOptionValue(filesOption.getOpt());
+ }
+ if ( cl.hasOption(dirsOption.getOpt()) ) {
+ dirsInput = cl.getOptionValue(dirsOption.getOpt());
}
if ( cl.hasOption(outputOption.getOpt()) ) {
output = cl.getOptionValue(outputOption.getOpt());
@@ -106,8 +115,8 @@ public class Main {
LOGGER.error("Unable to parse command line: {}", pe.getMessage(), pe);
System.exit(1);
}
- if ( input == null ) {
- LOGGER.error("Required argument missing: model file or directory");
+ if ( filesInput == null && dirsInput == null) {
+ LOGGER.error("Required argument missing: model files or directory");
System.exit(1);
}
}
@@ -145,30 +154,32 @@ public class Main {
if ( repoUrls != null ) {
amConfig.setRepositoryUrls(repoUrls.split(","));
}
+
final ArtifactManager am = getArtifactManager();
- final File f = new File(input);
- final List<File> files = new ArrayList<>();
- if ( f.isDirectory() ) {
- for(final File file : f.listFiles()) {
- if ( file.isFile() && !file.getName().startsWith(".") ) {
- files.add(file);
- }
- }
- if ( files.isEmpty() ) {
- LOGGER.error("No files found in {}", f);
- System.exit(1);
- }
- Collections.sort(files);
- } else {
- files.add(f);
- }
+ final String[] files =
+ Stream.concat(
+ Stream.of(filesInput != null ? filesInput.split(",") : new String[0])
+ .map(path -> new File(path))
+ .filter(File::isFile),
+ Stream.of(dirsInput != null ? dirsInput.split(",") : new String[0])
+ .map(path -> new File(path))
+ .filter(File::isDirectory)
+ .flatMap(dir ->
+ Stream.of(dir.listFiles())))
+ .filter(file -> !file.getName().startsWith("."))
+ .sorted()
+ .map(File::getAbsolutePath)
+ .toArray(String[]::new);
+
+ if (files.length == 0) {
+ LOGGER.error("No feature files found.");
+ System.exit(1);
+ }
try {
- writeApplication(FeatureUtil.assembleApplication(null, am, files.stream()
- .map(File::getAbsolutePath)
- .toArray(String[]::new)), output == null ? "application.json" : output);
+ writeApplication(FeatureUtil.assembleApplication(null, am, files), output == null ? "application.json" : output);
} catch ( final IOException ioe) {
LOGGER.error("Unable to read feature/application files " + ioe.getMessage(), ioe);