Skip to content

Commit

Permalink
O3-3439: Add exclusions to distro.properties
Browse files Browse the repository at this point in the history
  • Loading branch information
wikumChamith committed Aug 29, 2024
1 parent 8be79d8 commit c68e257
Show file tree
Hide file tree
Showing 5 changed files with 148 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package org.openmrs.maven.plugins;

import org.apache.maven.plugin.MojoExecutionException;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openmrs.maven.plugins.model.DistroProperties;
import org.openmrs.maven.plugins.utility.DistroHelper;

import java.io.File;

import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;

public class AddExclusionIntegrationTest extends AbstractSdkIntegrationTest {

private String distroFile;

private DistroProperties originalProperties;

@Before
public void setUp() {
distroFile = testDirectory + File.separator + "openmrs-distro.properties";
originalProperties = DistroHelper.getDistroPropertiesFromFile(new File(distroFile));
}

@Test
public void shouldAddExclusion() throws Exception {
DistroProperties distroProperties = DistroHelper.getDistroPropertiesFromFile(new File(distroFile));
assertNotNull(distroProperties);
assertFalse(distroProperties.getExclusions().contains("omod.uicommons"));

addTaskParam("distro", distroFile);
addTaskParam("property", "omod.uicommons");
executeTask("exclusion");

assertSuccess();

distroProperties = DistroHelper.getDistroPropertiesFromFile(new File(distroFile));
assertTrue(distroProperties.getExclusions().contains("omod.uicommons"));
}


@After
public void reset() throws MojoExecutionException {
originalProperties.saveTo(new File(distroFile).getParentFile());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
package org.openmrs.maven.plugins;

import org.apache.commons.lang.StringUtils;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;
import org.openmrs.maven.plugins.model.Artifact;
import org.openmrs.maven.plugins.model.DistroProperties;

import java.io.File;
import java.util.List;
import java.util.stream.Collectors;

@Mojo(name = "exclusion", requiresProject = false)
public class AddExclusion extends AbstractTask {

/**
* Path to the openmrs-distro.properties file to modify
*/
@Parameter(property = "distro")
private String distro;

/**
* Name of the property you want to exclude
*/
@Parameter(property = "property")
private String property;


@Override
public void executeTask() throws MojoExecutionException, MojoFailureException {
if (distro == null) {
File userDir = new File(System.getProperty("user.dir"));
File distroFile = new File(userDir, DistroProperties.DISTRO_FILE_NAME);
if (distroFile.exists()) {
distro = distroFile.getAbsolutePath();
} else {
throw new MojoFailureException("Please specify a distro file");
}
}

DistroProperties originalDistroProperties = null;

if (StringUtils.isNotBlank(distro)) {
originalDistroProperties = distroHelper.resolveDistroPropertiesForStringSpecifier(distro, versionsHelper);

}

if (originalDistroProperties == null) {
throw new MojoFailureException("Invalid distro file");
}

Artifact distroArtifact = originalDistroProperties.getParentArtifact();
if (StringUtils.isNotBlank(distroArtifact.getArtifactId()) && StringUtils.isNotBlank(distroArtifact.getGroupId()) && StringUtils.isNotBlank(distroArtifact.getVersion())) {
DistroProperties distroProperties = distroHelper.resolveParentArtifact(distroArtifact, new File(distro).getParentFile(), originalDistroProperties, null);
if (StringUtils.isBlank(property)) {
List<String> currentExclusions = distroProperties.getExclusions();
List<String> options = distroProperties.getPropertyNames().stream().filter(prop -> !currentExclusions.contains(prop)).collect(Collectors.toList());
property = wizard.promptForMissingValueWithOptions("Enter the property you want to exclude",
null, null, options);
} else {
if (!distroProperties.getPropertyNames().contains(property)) {
wizard.showWarning("The property is not included in the parent distro");
}
}

} else {
wizard.showWarning("This distro properties file does not contain a valid parent distro");
if (StringUtils.isBlank(property)) {
property = wizard.promptForValueIfMissing(null, "property to exclude");
if (StringUtils.isBlank(property)) {
throw new MojoFailureException("Invalid property name");
}
}
}
originalDistroProperties.addExclusion(property);
wizard.showMessage(property + " is added to exclusions");
originalDistroProperties.saveTo(new File(distro).getParentFile());
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -282,6 +282,16 @@ public void removeProperty(String property) throws MojoExecutionException {
properties.remove(property);
}

public void addExclusion(String exclusion) {
String exclusions = getParam("exclusions");
if (exclusions == null){
properties.setProperty("exclusions", exclusion);
return;
}

properties.setProperty("exclusions", exclusions + "," + exclusion);
}

private String getPlaceholderKey(String string){
int startIndex = string.indexOf("${")+2;
int endIndex = string.indexOf("}", startIndex);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -325,6 +325,11 @@ public void showError(String textToShow) {
writer.println("\n[ERROR]" + textToShow);
}

@Override
public void showWarning(String message) {
writer.println("\n[WARNING]" + message);
}

/**
* Prompt for a value if it not set, and default value is NOT set
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,8 @@ String promptForMissingValueWithOptions(String message, String value, String par

void showError(String message);

void showWarning(String message);

String promptForValueIfMissingWithDefault(String message, String value, String parameterName, String defValue)
throws MojoExecutionException;

Expand Down

0 comments on commit c68e257

Please sign in to comment.