15: Create --list-plugins option

This commit is contained in:
Bartłomiej Pluta
2019-04-17 13:43:13 +02:00
parent 9bdb1d07ed
commit 82dea2be17
3 changed files with 58 additions and 3 deletions

View File

@@ -1,14 +1,23 @@
package com.bartek.esa.cli.di;
import com.bartek.esa.cli.parser.CliArgsParser;
import com.bartek.esa.cli.printer.PluginPrinter;
import com.bartek.esa.core.archetype.Plugin;
import dagger.Module;
import dagger.Provides;
import java.util.Set;
@Module
public class CliModule {
@Provides
CliArgsParser cliArgsParser() {
return new CliArgsParser();
public CliArgsParser cliArgsParser(PluginPrinter pluginPrinter) {
return new CliArgsParser(pluginPrinter);
}
@Provides
public PluginPrinter pluginPrinter(Set<Plugin> plugins) {
return new PluginPrinter(plugins);
}
}

View File

@@ -1,6 +1,7 @@
package com.bartek.esa.cli.parser;
import com.bartek.esa.cli.model.CliArgsOptions;
import com.bartek.esa.cli.printer.PluginPrinter;
import com.bartek.esa.core.model.enumeration.Severity;
import org.apache.commons.cli.*;
@@ -21,9 +22,14 @@ public class CliArgsParser {
private static final String COLOR_OPT = "color";
private static final String SEVERITIES_OPT = "severities";
private static final String DEBUG_OPT = "debug";
private static final String LIST_PLUGINS_OPT = "list-plugins";
private final PluginPrinter pluginPrinter;
@Inject
public CliArgsParser() {}
public CliArgsParser(PluginPrinter pluginPrinter) {
this.pluginPrinter = pluginPrinter;
}
public CliArgsOptions parse(String[] args) {
try {
@@ -43,6 +49,12 @@ public class CliArgsParser {
return CliArgsOptions.empty();
}
if (command.hasOption(LIST_PLUGINS_OPT)) {
pluginPrinter.printPlugins();
return CliArgsOptions.empty();
}
boolean isNeitherAuditNorAnalysis = !command.hasOption(SRC_OPT) && !command.hasOption(APK_OPT);
if (isNeitherAuditNorAnalysis) {
printHelp();
@@ -75,6 +87,7 @@ public class CliArgsParser {
options.addOption(color());
options.addOption(severities());
options.addOption(debug());
options.addOption(listPlugins());
return options;
}
@@ -144,4 +157,11 @@ public class CliArgsParser {
.desc("enable debug mode")
.build();
}
private Option listPlugins() {
return Option.builder()
.longOpt(LIST_PLUGINS_OPT)
.desc("list available plugins")
.build();
}
}

View File

@@ -0,0 +1,26 @@
package com.bartek.esa.cli.printer;
import com.bartek.esa.core.archetype.Plugin;
import javax.inject.Inject;
import java.util.Set;
import static java.lang.String.format;
public class PluginPrinter {
private final Set<Plugin> plugins;
@Inject
public PluginPrinter(Set<Plugin> plugins) {
this.plugins = plugins;
}
public void printPlugins() {
System.out.println("List of available plugins");
System.out.println(format("%-33s | Fully qualified plugin code", "Simple plugin code"));
plugins.stream()
.map(Object::getClass)
.map(p -> format(" - %-30s | - %s", p.getSimpleName(), p.getCanonicalName()))
.forEach(System.out::println);
}
}