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
2 changes: 1 addition & 1 deletion bom/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
<parent>
<groupId>com.optum.sourcehawk</groupId>
<artifactId>sourcehawk</artifactId>
<version>0.4.0-SNAPSHOT</version>
<version>0.4.1-SNAPSHOT</version>
</parent>

<artifactId>sourcehawk-bom</artifactId>
Expand Down
2 changes: 1 addition & 1 deletion configuration/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
<parent>
<groupId>com.optum.sourcehawk</groupId>
<artifactId>sourcehawk</artifactId>
<version>0.4.0-SNAPSHOT</version>
<version>0.4.1-SNAPSHOT</version>
</parent>

<artifactId>sourcehawk-configuration</artifactId>
Expand Down
2 changes: 1 addition & 1 deletion core/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
<parent>
<groupId>com.optum.sourcehawk</groupId>
<artifactId>sourcehawk</artifactId>
<version>0.4.0-SNAPSHOT</version>
<version>0.4.1-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.optum.sourcehawk.core.scan;

import com.optum.sourcehawk.core.utils.StringUtils;
import lombok.Builder;
import lombok.NonNull;
import lombok.Value;
Expand Down Expand Up @@ -37,7 +38,7 @@ public class FlattenConfigResult implements Serializable {
@NonNull
@Builder.Default
@SuppressWarnings("squid:S1948") // Lombok generates private modifier
String formattedMessage = "Flatten successful";
String formattedMessage = "Flatten successful";


/**
Expand All @@ -55,7 +56,7 @@ public static FlattenConfigResult success(final byte[] content) {
* @return the flatten result
*/
public static FlattenConfigResult error(final String message) {
return new FlattenConfigResult(null, true, message);
return new FlattenConfigResult(null, true, StringUtils.defaultString(message, "No error message provided"));
}


Expand Down
2 changes: 1 addition & 1 deletion distributions/debian/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
<parent>
<groupId>com.optum.sourcehawk</groupId>
<artifactId>sourcehawk-dist</artifactId>
<version>0.4.0-SNAPSHOT</version>
<version>0.4.1-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>

Expand Down
2 changes: 1 addition & 1 deletion distributions/docker/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
<parent>
<groupId>com.optum.sourcehawk</groupId>
<artifactId>sourcehawk-dist</artifactId>
<version>0.4.0-SNAPSHOT</version>
<version>0.4.1-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>

Expand Down
2 changes: 1 addition & 1 deletion distributions/linux/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
<parent>
<groupId>com.optum.sourcehawk</groupId>
<artifactId>sourcehawk-dist</artifactId>
<version>0.4.0-SNAPSHOT</version>
<version>0.4.1-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>

Expand Down
2 changes: 1 addition & 1 deletion distributions/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
<parent>
<groupId>com.optum.sourcehawk</groupId>
<artifactId>sourcehawk</artifactId>
<version>0.4.0-SNAPSHOT</version>
<version>0.4.1-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>

Expand Down
2 changes: 1 addition & 1 deletion distributions/rpm/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
<parent>
<artifactId>sourcehawk-dist</artifactId>
<groupId>com.optum.sourcehawk</groupId>
<version>0.4.0-SNAPSHOT</version>
<version>0.4.1-SNAPSHOT</version>
</parent>

<artifactId>sourcehawk-dist-rpm</artifactId>
Expand Down
2 changes: 1 addition & 1 deletion enforcer/core/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
<parent>
<groupId>com.optum.sourcehawk</groupId>
<artifactId>sourcehawk-enforcer</artifactId>
<version>0.4.0-SNAPSHOT</version>
<version>0.4.1-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>

Expand Down
2 changes: 1 addition & 1 deletion enforcer/file/aot/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
<parent>
<groupId>com.optum.sourcehawk</groupId>
<artifactId>sourcehawk-enforcer-file</artifactId>
<version>0.4.0-SNAPSHOT</version>
<version>0.4.1-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>

Expand Down
2 changes: 1 addition & 1 deletion enforcer/file/common/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
<parent>
<groupId>com.optum.sourcehawk</groupId>
<artifactId>sourcehawk-enforcer-file</artifactId>
<version>0.4.0-SNAPSHOT</version>
<version>0.4.1-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>

Expand Down
2 changes: 1 addition & 1 deletion enforcer/file/core/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
<parent>
<groupId>com.optum.sourcehawk</groupId>
<artifactId>sourcehawk-enforcer-file</artifactId>
<version>0.4.0-SNAPSHOT</version>
<version>0.4.1-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>

Expand Down
2 changes: 1 addition & 1 deletion enforcer/file/docker/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
<parent>
<groupId>com.optum.sourcehawk</groupId>
<artifactId>sourcehawk-enforcer-file</artifactId>
<version>0.4.0-SNAPSHOT</version>
<version>0.4.1-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>

Expand Down
2 changes: 1 addition & 1 deletion enforcer/file/maven/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
<parent>
<groupId>com.optum.sourcehawk</groupId>
<artifactId>sourcehawk-enforcer-file</artifactId>
<version>0.4.0-SNAPSHOT</version>
<version>0.4.1-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>

Expand Down
2 changes: 1 addition & 1 deletion enforcer/file/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
<parent>
<groupId>com.optum.sourcehawk</groupId>
<artifactId>sourcehawk-enforcer</artifactId>
<version>0.4.0-SNAPSHOT</version>
<version>0.4.1-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>

Expand Down
2 changes: 1 addition & 1 deletion enforcer/file/registry/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
<parent>
<groupId>com.optum.sourcehawk</groupId>
<artifactId>sourcehawk-enforcer-file</artifactId>
<version>0.4.0-SNAPSHOT</version>
<version>0.4.1-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>

Expand Down
2 changes: 1 addition & 1 deletion enforcer/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
<parent>
<groupId>com.optum.sourcehawk</groupId>
<artifactId>sourcehawk</artifactId>
<version>0.4.0-SNAPSHOT</version>
<version>0.4.1-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>

Expand Down
2 changes: 1 addition & 1 deletion exec/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
<parent>
<groupId>com.optum.sourcehawk</groupId>
<artifactId>sourcehawk</artifactId>
<version>0.4.0-SNAPSHOT</version>
<version>0.4.1-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>

Expand Down
Original file line number Diff line number Diff line change
@@ -1,18 +1,13 @@
package com.optum.sourcehawk.exec;

import com.fasterxml.jackson.databind.ObjectWriter;
import com.optum.sourcehawk.configuration.SourcehawkConfiguration;
import com.optum.sourcehawk.core.constants.SourcehawkConstants;
import com.optum.sourcehawk.core.repository.LocalRepositoryFileWriter;
import com.optum.sourcehawk.core.scan.FlattenConfigResult;
import com.optum.sourcehawk.core.utils.StringUtils;
import lombok.extern.slf4j.Slf4j;
import lombok.val;
import picocli.CommandLine;

import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.concurrent.Callable;

/**
Expand All @@ -29,9 +24,6 @@
)
class FlattenConfigCommand implements Callable<Integer> {

private static final ObjectWriter WRITER_WITH_DEFAULT_PRETTY_PRINTER = Sourcehawk.YAML_FORMATTER.writerWithDefaultPrettyPrinter();
private static final String SOURCEHAWK_FLATTENED_YML = "sourcehawk-flattened.yml";

static final String COMMAND_NAME = "flatten-config";

@CommandLine.Option(
Expand Down Expand Up @@ -70,9 +62,7 @@ public Integer call() {
return CommandLine.ExitCode.SOFTWARE;
}
try {
flattenResult = ConfigurationReader.readConfiguration(Paths.get("."), configurationFileLocation)
.map(sourcehawkConfiguration -> executeFlatten(configurationFileLocation, sourcehawkConfiguration))
.orElseGet(() -> FlattenConfigResult.error(String.format("Configuration file %s not found or invalid", configurationFileLocation)));
flattenResult = FlattenConfigExecutor.flatten(configurationFileLocation);
} catch (final Exception e) {
flattenResult = FlattenConfigResult.error(e.getMessage());
}
Expand All @@ -82,7 +72,7 @@ public Integer call() {
return CommandLine.ExitCode.SOFTWARE;
}

outputResults(flattenResult, output);
FlattenConfigResultLogger.log(flattenResult, output);

return CommandLine.ExitCode.OK;
}
Expand All @@ -98,80 +88,4 @@ private String getConfigurationFileLocation() {
}
return configurationFileLocation;
}

/**
* Execute the flatten iterating over all configuration locations and aggregate the results
*
* @param configurationFileLocation the configuration location
* @param sourcehawkConfiguration the flattened configuration object
* @return the aggregated flatten result
*/
private static FlattenConfigResult executeFlatten(final String configurationFileLocation,
final SourcehawkConfiguration sourcehawkConfiguration) {
byte[] content;
try {
content = WRITER_WITH_DEFAULT_PRETTY_PRINTER.writeValueAsBytes(sourcehawkConfiguration);
} catch (IOException e) {
return handleException(configurationFileLocation, e);
}

return FlattenConfigResult.success(content);
}

/**
* Handle exceptions from Serialization
*
* @param configurationFileLocation the configuration location
* @param e the exception
* @return an error flatten result
*/
private static FlattenConfigResult handleException(final String configurationFileLocation, final IOException e) {
val message = String.format("Error flattening sourcehawk configuration at %s with error: %s", configurationFileLocation, e.getMessage());
return FlattenConfigResult.error(message);
}

/**
* Log the result of the flatten which will either output to a file or console based on params
*
* @param flattenResult the flatten result
* @param repositoryFilePath the repository file path
*/
void outputResults(final FlattenConfigResult flattenResult,
final Path repositoryFilePath) {
if (repositoryFilePath == null || StringUtils.isBlankOrEmpty(repositoryFilePath.toString())) {
handleDryRunOutput(flattenResult);
} else {
handleFileSystemOutput(flattenResult, repositoryFilePath);
}
}

/**
* Log the result of the flatten to the file system
*
* @param flattenResult the flatten result
* @param repositoryFilePath the repository file path
*/
private static void handleFileSystemOutput(final FlattenConfigResult flattenResult, final Path repositoryFilePath) {
try {
val writerPath = StringUtils.defaultString(repositoryFilePath.toString(), SOURCEHAWK_FLATTENED_YML);
LocalRepositoryFileWriter.writer().write(writerPath, flattenResult.getContent());
Sourcehawk.CONSOLE_RAW_LOGGER.info(flattenResult.getFormattedMessage());
Sourcehawk.CONSOLE_RAW_LOGGER.info("Output to {}", writerPath);
} catch (IOException e) {
Sourcehawk.CONSOLE_RAW_LOGGER.error("Could not flatten file due to {}", e.getMessage());
}
}

/**
* Log the result of the flatten to the console
*
* @param flattenResult the flatten result
*/
private static void handleDryRunOutput(final FlattenConfigResult flattenResult) {
if (flattenResult != null && flattenResult.getContent() != null) {
Sourcehawk.CONSOLE_RAW_LOGGER.info(new String(flattenResult.getContent()));
} else {
Sourcehawk.CONSOLE_RAW_LOGGER.error("No flattened file produced!");
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
package com.optum.sourcehawk.exec;

import com.fasterxml.jackson.databind.ObjectWriter;
import com.optum.sourcehawk.configuration.SourcehawkConfiguration;
import com.optum.sourcehawk.core.scan.FlattenConfigResult;
import com.optum.sourcehawk.core.utils.StringUtils;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import lombok.val;

import java.io.IOException;
import java.nio.file.Paths;

/**
* Entry point for executing Sourcehawk flatten command
*
* @author Christian Oestreich
*/
@Slf4j
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public final class FlattenConfigExecutor {

private static final ObjectWriter WRITER_WITH_DEFAULT_PRETTY_PRINTER = Sourcehawk.YAML_FORMATTER.writerWithDefaultPrettyPrinter();

/**
* Run the flatten config based on the provided configuration file location
*
* @param configurationFileLocation the sourcehawk configuration location
* @return the flatten config result
*/
public static FlattenConfigResult flatten(final String configurationFileLocation) {
if (StringUtils.isBlankOrEmpty(configurationFileLocation)) {
return FlattenConfigResult.error(String.format("Configuration file %s not found or invalid", configurationFileLocation));
}
return ConfigurationReader.readConfiguration(Paths.get("."), configurationFileLocation)
.map(sourcehawkConfiguration -> executeFlatten(configurationFileLocation, sourcehawkConfiguration))
.orElseGet(() -> FlattenConfigResult.error(String.format("Configuration file %s not found or invalid", configurationFileLocation)));
}

/**
* Execute the flatten iterating over all configuration locations and aggregate the results
*
* @param configurationFileLocation the configuration location
* @param sourcehawkConfiguration the flattened configuration object
* @return the aggregated flatten result
*/
private static FlattenConfigResult executeFlatten(final String configurationFileLocation,
final SourcehawkConfiguration sourcehawkConfiguration) {
byte[] content;
try {
content = WRITER_WITH_DEFAULT_PRETTY_PRINTER.writeValueAsBytes(sourcehawkConfiguration);
} catch (IOException e) {
return handleException(configurationFileLocation, e);
}

return FlattenConfigResult.success(content);
}

/**
* Handle exceptions from Serialization
*
* @param configurationFileLocation the configuration location
* @param e the exception
* @return an error flatten result
*/
private static FlattenConfigResult handleException(final String configurationFileLocation, final IOException e) {
val message = String.format("Error flattening sourcehawk configuration at %s with error: %s", configurationFileLocation, e.getMessage());
return FlattenConfigResult.error(message);
}
}
Loading