Skip to content

Commit

Permalink
SDK-367: Add support to passing a custom spa-build-config.json file
Browse files Browse the repository at this point in the history
  • Loading branch information
wikumChamith committed Dec 3, 2024
1 parent ad96c4f commit 5c5fb1f
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,9 @@ public class BuildDistro extends AbstractTask {
@Parameter(property = "appShellVersion")
private String appShellVersion;

@Parameter(property = "spaConfigFile")
private String spaConfigFile;

@Override
public void executeTask() throws MojoExecutionException, MojoFailureException {
File buildDirectory = getBuildDirectory();
Expand Down Expand Up @@ -165,7 +168,7 @@ else if (StringUtils.isNotBlank(distro)) {
case REFAPP_3X_PROMPT:
artifact = wizard.promptForRefApp3xArtifact(versionsHelper);
}
distribution = builder.buildFromArtifact(artifact);
distribution = builder.buildFromArtifact(artifact, spaConfigFile);
}

if (distribution == null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,9 @@ public class Setup extends AbstractServerTask {
@Parameter(property = "reuseNodeCache")
public Boolean overrideReuseNodeCache;

@Parameter(property = "spaConfigFile")
public String spaConfigFile;

private ServerHelper serverHelper;

public Setup() {
Expand Down Expand Up @@ -239,10 +242,11 @@ private DistroProperties resolveDistroProperties(Server server) throws MojoExecu

if (REFAPP_3X_PROMPT.equals(choice)) {
Artifact artifact = wizard.promptForRefApp3xArtifact(versionsHelper);
Distribution distribution = builder.buildFromArtifact(artifact);
return distribution.getEffectiveProperties();
Distribution distribution = builder.buildFromArtifact(artifact, spaConfigFile);
return distribution.getEffectiveProperties();
}


// If here, it is because custom distribution was chosen and the choice reflects the Maven coordinates
Distribution distribution = distroHelper.resolveDistributionForStringSpecifier(choice, versionsHelper);
return distribution.getEffectiveProperties();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Objects;
import java.util.Properties;

Expand Down Expand Up @@ -47,7 +50,7 @@ public Distribution buildFromFile(File propertiesFile) throws MojoExecutionExcep
/**
* Build from a distro properties file bundled in a zip or jar in Maven with the given artifact coordinates
*/
public Distribution buildFromArtifact(Artifact artifact) throws MojoExecutionException {
public Distribution buildFromArtifact(Artifact artifact, String spaConfigFile) throws MojoExecutionException {
mavenEnvironment.getWizard().showMessage("Building distribution from artifact: " + artifact);
Distribution distribution = new Distribution();
artifact = DistroHelper.normalizeArtifact(artifact, mavenEnvironment.getVersionsHelper());
Expand Down Expand Up @@ -92,11 +95,15 @@ public Distribution buildFromArtifact(Artifact artifact) throws MojoExecutionExc
// Special handling for referenceapplication 3.x, which does not define everything needed in the published distro properties file
if (REFAPP_3X_GROUP_ID.equals(artifact.getGroupId()) && REFAPP_3X_ARTIFACT_ID.equals(artifact.getArtifactId())) {
mavenEnvironment.getWizard().showMessage("This is a 3.x refapp distribution");
populateRefApp3xProperties(distribution, properties);
populateRefApp3xProperties(distribution, properties, spaConfigFile);
}
return populateDistributionFromProperties(distribution, properties);
}

public Distribution buildFromArtifact(Artifact artifact) throws MojoExecutionException {
return buildFromArtifact(artifact, null);
}

public void populateRefApp2xProperties(Distribution distribution, Properties properties) {
// Some refapp versions (eg. 2.13.0) include atlas version 2.2.6, which is not published in Maven. Adjust this.
if ("2.2.6".equals(properties.getProperty("omod.atlas"))) {
Expand All @@ -110,7 +117,7 @@ public void populateRefApp2xProperties(Distribution distribution, Properties pro
* This encapsulates these and applies them only for distributions that match the 3.x refapp Maven coordinates
* Ideally this would not be needed
*/
protected void populateRefApp3xProperties(Distribution distribution, Properties properties) throws MojoExecutionException {
protected void populateRefApp3xProperties(Distribution distribution, Properties properties, String spaConfigFile) throws MojoExecutionException {

String distroArtifactId = distribution.getArtifact().getArtifactId();
String distroGroupId = distribution.getArtifact().getGroupId();
Expand All @@ -137,7 +144,14 @@ protected void populateRefApp3xProperties(Distribution distribution, Properties
// Add spa properties if they are not included explicitly
if (includedProperties.getSpaProperties().isEmpty()) {
Properties frontendProperties;
if (new Version(distroVersion).higher(new Version("3.0.0-beta.16"))) {
if (spaConfigFile != null) {
try {
frontendProperties = PropertiesUtils.getFrontendPropertiesFromJson(Files.newInputStream(Paths.get(spaConfigFile)));
} catch (IOException e) {
throw new RuntimeException(e);
}
}
else if (new Version(distroVersion).higher(new Version("3.0.0-beta.16"))) {
com.github.zafarkhaja.semver.Version v = com.github.zafarkhaja.semver.Version.parse(distroVersion);
String frontendArtifactId = v.satisfies(">=3.0.0") ? "distro-emr-frontend" : "referenceapplication-frontend";
Artifact frontendArtifact = new Artifact(frontendArtifactId, distroVersion, distroGroupId, "zip");
Expand Down Expand Up @@ -169,6 +183,10 @@ protected void populateRefApp3xProperties(Distribution distribution, Properties
}
}

protected void populateRefApp3xProperties(Distribution distribution, Properties properties) throws MojoExecutionException {
populateRefApp3xProperties(distribution, properties, null);
}

/**
* Consistently populate the common properties of the distribution from the given properties
* This includes handling parent distributions and building a set of effective properties based on
Expand Down

0 comments on commit 5c5fb1f

Please sign in to comment.