Skip to content

Commit

Permalink
Review changes for mercedes-benz#1620
Browse files Browse the repository at this point in the history
- removed comment about SERVER
- using now Java 11
- using distribution temurin
- introduced an enum for main commands + generating now
  the help output
  • Loading branch information
de-jcup committed Sep 9, 2022
1 parent 122aa8d commit 291768b
Show file tree
Hide file tree
Showing 6 changed files with 187 additions and 16 deletions.
11 changes: 4 additions & 7 deletions .github/workflows/create-pds-tools-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,11 +38,11 @@ jobs:
# ----------------------
# Setup + Caching
# ----------------------
- name: Set up JDK 1.8
- name: Set up JDK 11
uses: actions/setup-java@v3
with:
java-version: 8
distribution: adopt
java-version: 11
distribution: temurin
cache: gradle

# ----------------------
Expand Down Expand Up @@ -117,10 +117,7 @@ jobs:
# -----------------------------------------
- name: Assert releasable
run: ./gradlew assertReleaseable
# ******************************************
# Now let's create a new SERVER release
# when server version is set
# ******************************************

- name: Create PDS-Tools release
id: create_pds_tools_release
if: github.event.inputs.pds-tools-version != ''
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
// SPDX-License-Identifier: MIT
package com.mercedesbenz.sechub.pds.tools;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;

import com.mercedesbenz.sechub.commons.model.ScanType;

public enum MainPDSToolsCLICommands implements PDSToolCLICommand {

/* @formatter:off */
HELP(PDSToolsCLiConstants.CMD_HELP, "Show this help output."),

GENERATE(PDSToolsCLiConstants.CMD_GENERATE,"Generate PDS test files.",

new PDSToolCLICommandArgument("secHubConfigFilePath","path to the sechub config file used to generate."),
new PDSToolCLICommandArgument("scanType","scan type - must be one of: "+generateScanTypeString()+"."),
new PDSToolCLICommandArgument("targetFolderPath","When not defined, a temp folder will be created and used.",true)

),
/* @formatter:on */

;

private static String generateScanTypeString() {
StringBuilder sb = new StringBuilder();

ScanType type;
for (Iterator<ScanType> it = PDSToolsCLiConstants.NO_REPORT_OR_UNKNOWN.iterator(); it.hasNext();) {
type = it.next();
sb.append(type.getId());
if (it.hasNext()) {
sb.append(", ");
}
}
return sb.toString();
}

private String description;
private List<PDSToolCLICommandArgument> arguments;
private String commandString;

private MainPDSToolsCLICommands(String commandString, String description, PDSToolCLICommandArgument... arguments) {
this.description = description;
this.commandString = commandString;
if (arguments == null || arguments.length == 0) {
this.arguments = new ArrayList<>();
} else {
this.arguments = Arrays.asList(arguments);
}
}

public String getCommandString() {
return commandString;
}

public List<PDSToolCLICommandArgument> getArguments() {
return arguments;
}

@Override
public String getDescription() {
return description;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
// SPDX-License-Identifier: MIT
package com.mercedesbenz.sechub.pds.tools;

import java.util.List;

public interface PDSToolCLICommand {

public String getCommandString();

public String getDescription();

public List<PDSToolCLICommandArgument> getArguments();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
// SPDX-License-Identifier: MIT
package com.mercedesbenz.sechub.pds.tools;

public class PDSToolCLICommandArgument {

private String name;
private String description;
private boolean optional;

public PDSToolCLICommandArgument(String name, String description) {
this(name, description, false);
}

public PDSToolCLICommandArgument(String name, String description, boolean optional) {
this.name = name;
this.description = description;
this.optional = optional;
}

public boolean isOptional() {
return optional;
}

public String getName() {
return name;
}

public String getDescription() {
return description;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,10 @@ void start(String... args) throws Exception {
String command = args[0];
switch (command) {

case "--help":
case PDSToolsCLiConstants.CMD_HELP:
showHelp();
exitHandler.exit(0);
case "--generate":
case PDSToolsCLiConstants.CMD_GENERATE:
PDSSolutionTestFilesGenerator generator = new PDSSolutionTestFilesGenerator();
generator.setOutputHandler(consoleHandler);

Expand Down Expand Up @@ -67,13 +67,42 @@ private void showHelpAndExit(String message, int exitCode) {
}

private void showHelp() {
consoleHandler.output("SecHub PDS tools CLI");
consoleHandler.output("--------------------");
consoleHandler.output("Usage:");
consoleHandler.output("--help ");
consoleHandler.output(" show this output");
consoleHandler.output("");
consoleHandler.output("--generate ${secHubConfigFilePath} ${scanType} [$targetFolderPath] ");
consoleHandler.output(" generate PDS test files for given config. Given scan type");
consoleHandler.output(" can be: codeScan, licenseScan, webScan etc. When no target folder");
consoleHandler.output(" is defined, a temp folder will be created and used");

for (PDSToolCLICommand cmd : MainPDSToolsCLICommands.values()) {
StringBuilder cmdSb = new StringBuilder();
cmdSb.append(cmd.getCommandString());
for (PDSToolCLICommandArgument argument : cmd.getArguments()) {
cmdSb.append(" ");
if (argument.isOptional()) {
cmdSb.append("[");
}
cmdSb.append("${");
cmdSb.append(argument.getName());
cmdSb.append("}");

if (argument.isOptional()) {
cmdSb.append("]");
}
}

consoleHandler.output(cmdSb.toString());
consoleHandler.output(" " + cmd.getDescription());

for (PDSToolCLICommandArgument argument : cmd.getArguments()) {
StringBuilder argSb = new StringBuilder();
argSb.append(" - ");
argSb.append(argument.getName());

if (argument.isOptional()) {
argSb.append(" (optional)");
}
consoleHandler.output(argSb.toString());
consoleHandler.output(" " + argument.getDescription());
}

}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
// SPDX-License-Identifier: MIT
package com.mercedesbenz.sechub.pds.tools;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import com.mercedesbenz.sechub.commons.model.ScanType;

public class PDSToolsCLiConstants {

public static final String CMD_HELP = "--help";
public static final String CMD_GENERATE = "--generate";

public static final List<ScanType> NO_REPORT_OR_UNKNOWN = Collections.unmodifiableList(createAcceptedScanTypes());

private static List<ScanType> createAcceptedScanTypes() {
List<ScanType> acceptedScanTypes = new ArrayList<>();

for (ScanType type : ScanType.values()) {
switch (type) {
case REPORT:
case UNKNOWN:
// we do not accept those types
continue;
default:
acceptedScanTypes.add(type);

}
}
return acceptedScanTypes;

}
}

0 comments on commit 291768b

Please sign in to comment.