blob: 923e1eb1deccecbd5d44e6142b4e1164f8930732 [file] [log] [blame]
#!/usr/bin/env groovy
@Grab("org.apache.sling:org.apache.sling.feature:1.2.10")
@Grab("org.apache.johnzon:johnzon-core:1.2.3")
@Grab("org.apache.sling:org.apache.sling.commons.johnzon:1.2.2")
@Grab("org.apache.felix:org.apache.felix.cm.json:1.0.2")
@Grab("org.osgi:org.osgi.util.function:1.0.0")
@Grab("org.apache.felix:org.apache.felix.converter:1.0.14")
@Grab("org.apache.sling:org.apache.sling.feature.diff:0.0.6")
@Grab("org.osgi:osgi.core:6.0.0")
import org.apache.sling.feature.ArtifactId
import org.apache.sling.feature.Feature
import org.apache.sling.feature.diff.DiffRequest
import java.io.FileReader
import java.io.PrintWriter
import java.io.Reader
import static org.apache.sling.feature.io.json.FeatureJSONReader.read
import static org.apache.sling.feature.diff.FeatureDiff.compareFeatures
import static org.apache.sling.feature.io.json.FeatureJSONWriter.write
Feature loadFeature(String jsonFile, String classifierSuffix) {
println "Loading feature from '${jsonFile}'"
File file = new File(jsonFile)
Feature feature = null
try(Reader reader = new FileReader(file)) {
feature = read(reader, null)
println "Loaded feature: ${feature}"
}
ArtifactId newArtifactId = feature.getId().changeClassifier("${feature.getId().getClassifier()}_${classifierSuffix}")
feature = feature.copy(newArtifactId)
return feature
}
if (args.length != 2) {
println 'Usage ./compare.groovy feature-a.json feature-b.json'
System.exit(1)
}
Feature featureA = loadFeature(args[0], 'a')
Feature featureB = loadFeature(args[1], 'b')
DiffRequest diffRequest = new DiffRequest()
.setPrevious(featureA)
.setCurrent(featureB)
Feature featureDiff = compareFeatures(diffRequest)
String mvnPath = featureDiff.getId().toMvnPath()
mvnPath = mvnPath.substring(mvnPath.lastIndexOf('/') + 1)
println "Writing to: ${mvnPath}"
try(Writer writer = new FileWriter(new File(mvnPath))) {
write(writer, featureDiff)
}