Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
604 changes: 274 additions & 330 deletions attribution.txt

Large diffs are not rendered by default.

22 changes: 8 additions & 14 deletions cli/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
<sonar.cpd.exclusions>**/picocli/**/*.*</sonar.cpd.exclusions>

<!-- PICOCLI VERSION -->
<picocli.version>4.5.2</picocli.version>
<picocli.version>4.6.1</picocli.version>

</properties>

Expand All @@ -46,14 +46,8 @@

<!-- THIRD-PARTY RUNTIME DEPENDENCIES -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.fusesource.jansi</groupId>
<artifactId>jansi</artifactId>
<version>1.17.1</version>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-nop</artifactId>
<scope>runtime</scope>
</dependency>

Expand Down Expand Up @@ -228,9 +222,9 @@
<type>jar</type>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${logback.version}</version>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>${slf4j.version}</version>
</dependency>
</dependencies>
</plugin>
Expand Down Expand Up @@ -371,16 +365,16 @@
<rules>
<bannedDependencies>
<includes combine.children="append">
<include>ch.qos.logback:*:*:*:*</include>
<include>com.fasterxml.jackson.core:*:*:*:*</include>
<include>com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:*:*</include>
<include>com.jayway.jsonpath:json-path:*:*:*</include>
<include>net.minidev:accessors-smart:*:*:*</include>
<include>net.minidev:json-smart:*:*:*</include>
<include>org.apache.maven:maven-model:*:*:*</include>
<include>org.codehaus.plexus:plexus-utils:*:*:*</include>
<include>org.fusesource.jansi:jansi:*:*:*</include>
<include>org.ow2.asm:asm:*:*:*</include>
<include>org.slf4j:slf4j-api:*:*:*</include>
<include>org.slf4j:slf4j-nop:*:*:*</include>
<include>org.yaml:snakeyaml:*:*:*</include>
</includes>
</bannedDependencies>
Expand Down
6 changes: 5 additions & 1 deletion cli/scripts/update-picocli.sh
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,11 @@ set -e
#########################################################################

# Retrieve Latest Version
VERSION=$(curl -sI https://github.com/remkop/picocli/releases/latest | grep -i location | awk -F"/" '{ printf "%s", $NF }' | tr -d 'v' | tr -d '\r\n')
VERSION=$(curl -sI https://github.com/remkop/picocli/releases/latest | grep -i location: | awk -F"/" '{ printf "%s", $NF }' | tr -d 'v' | tr -d '\r\n')

# Global Variables
DIR="$( cd "$( dirname "$( dirname "${BASH_SOURCE[0]}" )")" && pwd )"
ROOT_DIR="$( cd "$( dirname "$( dirname "$( dirname "${BASH_SOURCE[0]}" )")")" && pwd )"
BASE_URL="https://raw.githubusercontent.com/remkop/picocli"
LICENSE_URL="$BASE_URL/v$VERSION/LICENSE"
LICENSE_FILE_PATH="$DIR/src/main/resources/META-INF/licenses/picocli.txt"
Expand All @@ -32,6 +33,9 @@ sed -i 's/public\sclass\sCommandLine/@SuppressWarnings({"rawtypes", "deprecation
# Replace the version in pom.xml file for plugin references
sed -i "s/<picocli.version>[-[:alnum:]./]\{1,\}<\/picocli.version>/<picocli.version>$VERSION<\/picocli.version>/" "$DIR/pom.xml"

# Replace the version in attribution.txt file
sed -i "s/Package: info.picocli:[-[:alnum:]./]\{1,\}/Package: info.picocli:$VERSION/" "$ROOT_DIR/attribution.txt"

# Remove TODOs so not highlighted in editor
sed -i 's/TODO/TIDO/g' "$SOURCE_FILE_PATH"

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import com.optum.sourcehawk.core.data.RemoteRef;
import com.optum.sourcehawk.core.repository.BitbucketRepositoryFileReader;
import com.optum.sourcehawk.core.repository.RepositoryFileReader;
import lombok.extern.slf4j.Slf4j;
import lombok.val;
import picocli.CommandLine;

Expand All @@ -19,7 +18,6 @@
*
* @author Brian Wyka
*/
@Slf4j
@CommandLine.Command(
name = "bitbucket",
aliases = "bb",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ static class Exec {
@CommandLine.Option(
names = {"-f", "--output-format"},
description = "Output Format, valid values: ${COMPLETION-CANDIDATES}",
defaultValue = "CONSOLE",
defaultValue = "TEXT",
showDefaultValue = CommandLine.Help.Visibility.ALWAYS
)
OutputFormat outputFormat;
Expand Down
2 changes: 0 additions & 2 deletions cli/src/main/java/com/optum/sourcehawk/cli/FixCommand.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
import com.optum.sourcehawk.exec.fix.FixExecutor;
import com.optum.sourcehawk.exec.fix.FixResultFactory;
import com.optum.sourcehawk.exec.fix.FixResultLogger;
import lombok.extern.slf4j.Slf4j;
import lombok.val;
import picocli.CommandLine;

Expand All @@ -18,7 +17,6 @@
*
* @author Brian Wyka
*/
@Slf4j
@CommandLine.Command(
name = "fix",
aliases = { "correct", "resolve" },
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,10 @@

import com.optum.sourcehawk.core.constants.SourcehawkConstants;
import com.optum.sourcehawk.core.result.FlattenConfigResult;
import com.optum.sourcehawk.core.utils.StringUtils;
import com.optum.sourcehawk.core.utils.Try;
import com.optum.sourcehawk.exec.ExecLoggers;
import com.optum.sourcehawk.exec.Console;
import com.optum.sourcehawk.exec.config.FlattenConfigExecutor;
import com.optum.sourcehawk.exec.config.FlattenConfigResultLogger;
import lombok.extern.slf4j.Slf4j;
import lombok.val;
import picocli.CommandLine;

Expand All @@ -20,7 +18,6 @@
*
* @author Christian Oestreich
*/
@Slf4j
@CommandLine.Command(
name = "flatten-config",
aliases = {"fc", "flatten"},
Expand Down Expand Up @@ -60,12 +57,9 @@ public static void main(final String... args) {
*/
public Integer call() {
val configurationFileLocation = getConfigurationFileLocation();
if (StringUtils.isBlankOrEmpty(configurationFileLocation)) {
return CommandLine.ExitCode.SOFTWARE;
}
val flattenConfigResult = execute(configurationFileLocation);
if (flattenConfigResult.isError()) {
ExecLoggers.CONSOLE_RAW.info(flattenConfigResult.getMessage());
Console.Err.log(flattenConfigResult.getMessage());
return CommandLine.ExitCode.SOFTWARE;
}
FlattenConfigResultLogger.log(flattenConfigResult, outputPath);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import com.optum.sourcehawk.core.data.RemoteRef;
import com.optum.sourcehawk.core.repository.GithubRepositoryFileReader;
import com.optum.sourcehawk.core.repository.RepositoryFileReader;
import lombok.extern.slf4j.Slf4j;
import lombok.val;
import picocli.CommandLine;

Expand All @@ -19,7 +18,6 @@
*
* @author Brian Wyka
*/
@Slf4j
@CommandLine.Command(
name = "github",
aliases = "gh",
Expand Down
2 changes: 0 additions & 2 deletions cli/src/main/java/com/optum/sourcehawk/cli/ScanCommand.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
import com.optum.sourcehawk.exec.scan.ScanExecutor;
import com.optum.sourcehawk.exec.scan.ScanResultFactory;
import com.optum.sourcehawk.exec.scan.ScanResultLogger;
import lombok.extern.slf4j.Slf4j;
import lombok.val;
import picocli.CommandLine;

Expand All @@ -18,7 +17,6 @@
*
* @author Brian Wyka
*/
@Slf4j
@CommandLine.Command(
name = "scan",
aliases = { "flyover", "survey" },
Expand Down
12 changes: 11 additions & 1 deletion cli/src/main/java/com/optum/sourcehawk/cli/Sourcehawk.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,10 @@
aliases = "shawk",
description = "Watch over your source like a hawk",
mixinStandardHelpOptions = true,
headerHeading = "@|fg(magenta) >_ S O U R C E H A W K|@",
synopsisHeading = "%n",
commandListHeading ="%nCommands:%n",
footer = "Copyright (c) 2020 Optum",
versionProvider = Sourcehawk.VersionProvider.class,
subcommands = {
CommandLine.HelpCommand.class,
Expand All @@ -36,7 +40,13 @@ public class Sourcehawk {
* @param args the command line args
*/
public static void main(final String[] args) {
val status = new CommandLine(new Sourcehawk()).execute(args);
val defaultColorScheme = CommandLine.Help.defaultColorScheme(CommandLine.Help.Ansi.AUTO);
val colorScheme = new CommandLine.Help.ColorScheme.Builder(defaultColorScheme)
.commands(CommandLine.Help.Ansi.Style.bold, CommandLine.Help.Ansi.Style.fg_cyan)
.build();
val status = new CommandLine(new Sourcehawk())
.setColorScheme(colorScheme)
.execute(args);
Runtime.getRuntime().halt(status);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
import com.optum.sourcehawk.core.utils.StringUtils;
import com.optum.sourcehawk.enforcer.file.FileEnforcer;
import com.optum.sourcehawk.exec.ConfigurationReader;
import com.optum.sourcehawk.exec.ExecLoggers;
import com.optum.sourcehawk.exec.Console;
import lombok.val;
import picocli.CommandLine;

Expand Down Expand Up @@ -77,34 +77,34 @@ public Integer call() {
if (Files.exists(childConfigFilePath)) {
sourcehawkConfiguration = ConfigurationReader.parseConfiguration(childConfigFilePath);
} else {
ExecLoggers.CONSOLE_RAW.error("Configuration file is a directory and does not contain {} file", SourcehawkConstants.DEFAULT_CONFIG_FILE_NAME);
Console.Err.log("Configuration file is a directory and does not contain %s file", SourcehawkConstants.DEFAULT_CONFIG_FILE_NAME);
return CommandLine.ExitCode.USAGE;
}
} else if (Files.exists(configFilePath)) {
sourcehawkConfiguration = ConfigurationReader.parseConfiguration(configFilePath);
} else {
ExecLoggers.CONSOLE_RAW.error("Configuration not provided through stdin or via file path");
Console.Err.log("Configuration not provided through stdin or via file path");
return CommandLine.ExitCode.USAGE;
}
} catch (final PropertyBindingException e) {
val context = String.format("at line %d, column %d", e.getLocation().getLineNr(), e.getLocation().getColumnNr());
ExecLoggers.CONSOLE_RAW.error("* {}", deriveErrorMessage(context, e));
Console.Err.log("* %s", deriveErrorMessage(context, e));
return CommandLine.ExitCode.SOFTWARE;
} catch (final Exception e) {
ExecLoggers.CONSOLE_RAW.error("* {}", deriveErrorMessage("unknown", e));
Console.Err.log("* %s", deriveErrorMessage("unknown", e));
return CommandLine.ExitCode.SOFTWARE;
}
if (CollectionUtils.isEmpty(sourcehawkConfiguration.getConfigLocations()) && CollectionUtils.isEmpty(sourcehawkConfiguration.getFileProtocols())) {
ExecLoggers.CONSOLE_RAW.warn("There are no remote configurations or file protocols in your config file, scans may produce no results");
Console.Out.log("There are no remote configurations or file protocols in your config file, scans may produce no results");
}
val fileEnforcerErrors = compileFileEnforcerErrors(sourcehawkConfiguration.getFileProtocols());
if (fileEnforcerErrors.isEmpty()) {
ExecLoggers.CONSOLE_RAW.info("Congratulations, you have created a valid configuration file");
Console.Out.log("Congratulations, you have created a valid configuration file");
return CommandLine.ExitCode.OK;
}
fileEnforcerErrors.stream()
.map(fileEnforcerError -> String.format("* %s", fileEnforcerError))
.forEach(ExecLoggers.CONSOLE_RAW::error);
.forEach(Console.Err::log);
return CommandLine.ExitCode.SOFTWARE;
}

Expand Down
Loading