This is an automated email from the ASF dual-hosted git repository. rombert pushed a commit to branch issue/SLING-11922 in repository https://gitbox.apache.org/repos/asf/sling-project-archetype.git
commit 7e8822f96db4ca7c6d7f483cee104157ae6bec12 Author: Robert Munteanu <[email protected]> AuthorDate: Wed Jul 12 17:12:38 2023 +0300 SLING-11922 - Create a fully expanded feature model when generating the archetype WIP --- .../META-INF/archetype-post-generate.groovy | 36 ++++++++++++++++++ .../META-INF/maven/archetype-metadata.xml | 13 +++++-- .../resources/archetype-resources/launcher/pom.xml | 43 ++++------------------ .../resources/projects/all/archetype.properties | 3 +- .../projects/allDeleted/archetype.properties | 3 +- .../projects/allMerged/archetype.properties | 3 +- .../resources/projects/notAll/archetype.properties | 3 +- .../projects/notAllDeleted/archetype.properties | 3 +- .../projects/notAllMerged/archetype.properties | 3 +- 9 files changed, 64 insertions(+), 46 deletions(-) diff --git a/src/main/resources/META-INF/archetype-post-generate.groovy b/src/main/resources/META-INF/archetype-post-generate.groovy index e8d3975..6340a5d 100644 --- a/src/main/resources/META-INF/archetype-post-generate.groovy +++ b/src/main/resources/META-INF/archetype-post-generate.groovy @@ -16,6 +16,8 @@ */ import java.util.regex.Pattern +import java.util.zip.ZipFile + import org.apache.commons.io.FileUtils def rootDir = new File(request.getOutputDirectory() + "/" + request.getArtifactId()) @@ -40,6 +42,7 @@ def readmeNotAll = new File(rootDir, "README.NotAll.md") def optionAll = request.getProperties().get("optionAll") def optionExample = request.getProperties().get("optionExample") +def starterRef = request.getProperties().get("slingStarterBaseRef") // helper methods @@ -53,6 +56,37 @@ def removeModule(pomFile, moduleName) { } } +def downloadStarter(rootDir, ref) { + def url = new URL("https://github.com/apache/sling-org-apache-sling-starter/archive/" + ref + ".zip") + println("Downloading Sling Starter from ${url}") + def localFile = new File(rootDir, "sling-starter.zip") + localFile << url.getBytes() + def starterZip = new ZipFile(localFile) + def launcherDir = new File(rootDir, "launcher") + starterZip.entries().each { entry -> + println "Extracting ${entry.name}" + if ( entry.name.startsWith("sling-org-apache-sling-starter-master/src/main/features/") ) { + // remove first segment from entry.name + def entryName = entry.name.substring(entry.name.indexOf("/") + 1) + // ignore samples which are not needed (or a security risk) + if ( entryName.endsWith("htl_repl.json") || entryName.endsWith("starter.json") || entryName.contains("slingshot") ) { + return + } + // ignore test content + if ( entryName.contains("test") ) { + return + } + + def targetFile = new File(launcherDir, entryName) + if(entry.isDirectory()) { + targetFile.mkdirs() + } else { + targetFile << starterZip.getInputStream(entry) + } + } + } +} + // Either remove the tag lines or the line plus the content in between // forAll = true: removes all content between @startForNotAll@ and @endForNotAll@ // forAll = false: emoves all content between @startForAll@ and @endForAll@ @@ -138,3 +172,5 @@ if(optionExample == "m") { } removeModule(rootPom, "ui.apps.example") } + +downloadStarter(rootDir, starterRef) \ No newline at end of file diff --git a/src/main/resources/META-INF/maven/archetype-metadata.xml b/src/main/resources/META-INF/maven/archetype-metadata.xml index ef08d1b..ac35ef8 100644 --- a/src/main/resources/META-INF/maven/archetype-metadata.xml +++ b/src/main/resources/META-INF/maven/archetype-metadata.xml @@ -17,11 +17,12 @@ specific language governing permissions and limitations under the License. --> + <archetype-descriptor - xsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0 http://maven.apache.org/xsd/archetype-descriptor-1.0.0.xsd" - name="sling-project-archetype" - xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns="https://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.1.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="https://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.1.0 http://maven.apache.org/xsd/archetype-descriptor-1.1.0.xsd" + name="sling-project-archetype" > <requiredProperties> <!-- <requiredProperty key="version">--> @@ -90,6 +91,10 @@ <!-- <defaultValue>s</defaultValue>--> <validationRegex>^(s|m|d)$</validationRegex> </requiredProperty> + <!-- Git reference from the Sling Starter project use to bootstrap the launcher --> + <requiredProperty key="slingStarterBaseRef"> + <defaultValue>master</defaultValue> + </requiredProperty> </requiredProperties> <fileSets> <fileSet encoding="UTF-8"> diff --git a/src/main/resources/archetype-resources/launcher/pom.xml b/src/main/resources/archetype-resources/launcher/pom.xml index 5d1c0f5..fa24edd 100644 --- a/src/main/resources/archetype-resources/launcher/pom.xml +++ b/src/main/resources/archetype-resources/launcher/pom.xml @@ -29,6 +29,11 @@ This is a Module which contains a sample feature model build, built on top of the Sling Starter and adding this project's artifacts. </description> + + <properties> + <!-- TODO - read from starter pom --> + <asm.version>9.5</asm.version> + </properties> <build> <plugins> <plugin> @@ -37,47 +42,13 @@ <extensions>true</extensions> <configuration> + <!-- TODO - read from starter pom --> + <replacePropertyVariables>asm.version,jackrabbit.version,groovy.version,oak.version,slf4j.version,composum.nodes.version,jackson.version</replacePropertyVariables> <skipAddFeatureDependencies>true</skipAddFeatureDependencies> - <framework> - <groupId>org.apache.felix</groupId> - <artifactId>org.apache.felix.framework</artifactId> - <version>\${org.apache.felix.framework.version}</version> - </framework> - - <!-- - Prepares a feature model aggregate that takes the following features from - the Sling Starter: - - nosample_base - the base Sling Starter - - oak_persistence_sns - SegmentNodeStore persistence for Oak - - composum - The Composum Nodes administration tool - - Notably missing are the slingshot and starter samples - --> <aggregates> <aggregate> <classifier>app</classifier> <filesInclude>*.json</filesInclude> - <includeArtifact> - <groupId>org.apache.sling</groupId> - <artifactId>org.apache.sling.starter</artifactId> - <classifier>nosample_base</classifier> - <version>\${sling.starter.version}</version> - <type>slingosgifeature</type> - </includeArtifact> - <includeArtifact> - <groupId>org.apache.sling</groupId> - <artifactId>org.apache.sling.starter</artifactId> - <classifier>oak_persistence_sns</classifier> - <version>\${sling.starter.version}</version> - <type>slingosgifeature</type> - </includeArtifact> - <includeArtifact> - <groupId>org.apache.sling</groupId> - <artifactId>org.apache.sling.starter</artifactId> - <classifier>composum</classifier> - <version>\${sling.starter.version}</version> - <type>slingosgifeature</type> - </includeArtifact> </aggregate> </aggregates> <scans> diff --git a/src/test/resources/projects/all/archetype.properties b/src/test/resources/projects/all/archetype.properties index 31b7c30..45b5ee3 100644 --- a/src/test/resources/projects/all/archetype.properties +++ b/src/test/resources/projects/all/archetype.properties @@ -32,4 +32,5 @@ slingModelSubPackage=testModelAllSep slingHostName=localhost slingPort=8080 optionAll=y -optionExample=s \ No newline at end of file +optionExample=s +slingStarterBaseRef=master \ No newline at end of file diff --git a/src/test/resources/projects/allDeleted/archetype.properties b/src/test/resources/projects/allDeleted/archetype.properties index 9b2e2e7..e4336e4 100644 --- a/src/test/resources/projects/allDeleted/archetype.properties +++ b/src/test/resources/projects/allDeleted/archetype.properties @@ -32,4 +32,5 @@ slingModelSubPackage=testModelAllDel slingHostName=localhost slingPort=8080 optionAll=y -optionExample=d \ No newline at end of file +optionExample=d +slingStarterBaseRef=master \ No newline at end of file diff --git a/src/test/resources/projects/allMerged/archetype.properties b/src/test/resources/projects/allMerged/archetype.properties index 3d0baaa..8e64754 100644 --- a/src/test/resources/projects/allMerged/archetype.properties +++ b/src/test/resources/projects/allMerged/archetype.properties @@ -32,4 +32,5 @@ slingModelSubPackage=testModelAllMer slingHostName=localhost slingPort=8080 optionAll=y -optionExample=m \ No newline at end of file +optionExample=m +slingStarterBaseRef=master \ No newline at end of file diff --git a/src/test/resources/projects/notAll/archetype.properties b/src/test/resources/projects/notAll/archetype.properties index 9c18001..eac0c30 100644 --- a/src/test/resources/projects/notAll/archetype.properties +++ b/src/test/resources/projects/notAll/archetype.properties @@ -32,4 +32,5 @@ slingModelSubPackage=testModelUISep slingHostName=localhost slingPort=8080 optionAll=n -optionExample=s \ No newline at end of file +optionExample=s +slingStarterBaseRef=master \ No newline at end of file diff --git a/src/test/resources/projects/notAllDeleted/archetype.properties b/src/test/resources/projects/notAllDeleted/archetype.properties index 84b0362..98f0c5d 100644 --- a/src/test/resources/projects/notAllDeleted/archetype.properties +++ b/src/test/resources/projects/notAllDeleted/archetype.properties @@ -32,4 +32,5 @@ slingModelSubPackage=testModelUIDel slingHostName=localhost slingPort=8080 optionAll=n -optionExample=d \ No newline at end of file +optionExample=d +slingStarterBaseRef=master \ No newline at end of file diff --git a/src/test/resources/projects/notAllMerged/archetype.properties b/src/test/resources/projects/notAllMerged/archetype.properties index 878671e..fc7ae64 100644 --- a/src/test/resources/projects/notAllMerged/archetype.properties +++ b/src/test/resources/projects/notAllMerged/archetype.properties @@ -32,4 +32,5 @@ slingModelSubPackage=testModelUIMer slingHostName=localhost slingPort=8080 optionAll=n -optionExample=m \ No newline at end of file +optionExample=m +slingStarterBaseRef=master \ No newline at end of file
