Packager.java
package esa.bscs.pds4.packager.cli;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.Options;
@SuppressWarnings("java:S1192")
class Packager {
private Packager() {
// Non-instantiable class
}
protected static Options getOptions() {
final Option input = Option.builder("i")
.longOpt("input")
.argName("directory path")
.desc("Directory that contains the PDS4 products to package")
.hasArg(true)
.required(false)
.build();
final Option output = Option.builder("o")
.longOpt("output")
.argName("directory path")
.desc("Directory where the delivery package will be generated")
.hasArg(true)
.required(false)
.build();
final Option definition = Option.builder("d")
.longOpt("dictionary-stack-id")
.argName("dictionary stack id")
.desc("Validate products using this dictionary stack id")
.hasArg(true)
.required(false)
.build();
final Option local = Option.builder("l")
.longOpt("local")
.hasArg(false)
.build();
final Option recursive = Option.builder("r")
.longOpt("recursive")
.hasArg(false)
.build();
final Option skipValidation = Option.builder("s")
.longOpt("skip-validation")
.hasArg(false)
.build();
final Option verbose = Option.builder("V")
.longOpt("verbose")
.hasArg(false)
.build();
final Option help = Option.builder("h")
.longOpt("help")
.hasArg(false)
.build();
final Option version = Option.builder("v")
.longOpt("version")
.hasArg(false)
.build();
final Options options = new Options();
options.addOption(input);
options.addOption(output);
options.addOption(definition);
options.addOption(local);
options.addOption(recursive);
options.addOption(skipValidation);
options.addOption(verbose);
options.addOption(help);
options.addOption(version);
return options;
}
protected static String version() throws IOException {
final Properties packagerProperties = new Properties();
final Properties packagerClassifierProperties = new Properties();
final Properties packagerValidateProperties = new Properties();
final Properties validateProperties = new Properties();
final Properties validateDataProperties = new Properties();
final InputStream packagerPropertiesInputStream = ClassLoader.getSystemClassLoader().getResourceAsStream("META-INF/maven/esa.bscs.pds4/pds4-packager/pom.properties");
final InputStream packagerClassifierPropertiesInputStream = ClassLoader.getSystemClassLoader().getResourceAsStream("META-INF/maven/esa.bscs.pds4/pds4-packager-classifiers/pom.properties");
final InputStream packagerValidatePropertiesInputStream = ClassLoader.getSystemClassLoader().getResourceAsStream("META-INF/maven/esa.bscs.pds4/pds4-validate/pom.properties");
final InputStream validatePropertiesInputStream = ClassLoader.getSystemResourceAsStream("META-INF/maven/gov.nasa.pds/validate/pom.properties");
final InputStream validateDataPropertiesInputStream = ClassLoader.getSystemClassLoader().getResourceAsStream("META-INF/maven/esa.bscs.pds4-tools.packager/pds4-validate-data/pom.properties");
if(packagerPropertiesInputStream != null) {
packagerProperties.load(packagerPropertiesInputStream);
}
if(packagerClassifierPropertiesInputStream != null) {
packagerClassifierProperties.load(packagerClassifierPropertiesInputStream);
}
if(packagerValidatePropertiesInputStream != null) {
packagerValidateProperties.load(packagerValidatePropertiesInputStream);
}
if(validatePropertiesInputStream != null) {
validateProperties.load(validatePropertiesInputStream);
}
if(validateDataPropertiesInputStream != null) {
validateDataProperties.load(validateDataPropertiesInputStream);
}
return System.getProperty("app.name") + " modules:"
+ " " + "PDS4 packager:" + " " + packagerProperties.getOrDefault("version", "N/A") + " -"
+ " " + "PDS4 classifiers:" + " " + packagerClassifierProperties.getOrDefault("version", "N/A") + " -"
+ " " + "PDS4 validate:" + " " + packagerValidateProperties.getOrDefault("version", "N/A") + " -"
+ " " + "PDS4 dictionary bundle:" + " " + validateDataProperties.getOrDefault("version", "N/A") + " -"
+ " " + "NASA validate:" + " " + validateProperties.getOrDefault("version", "N/A");
}
}