@@ -3,10 +3,11 @@ package com.cognifide.gradle.aem.instance
33import com.cognifide.gradle.aem.AemConfig
44import com.cognifide.gradle.aem.AemException
55import com.cognifide.gradle.aem.AemInstancePlugin
6- import com.cognifide.gradle.aem.internal.file.FileOperations
76import com.cognifide.gradle.aem.internal.Formats
7+ import com.cognifide.gradle.aem.internal.Patterns
88import com.cognifide.gradle.aem.internal.ProgressLogger
99import com.cognifide.gradle.aem.internal.PropertyParser
10+ import com.cognifide.gradle.aem.internal.file.FileOperations
1011import org.apache.commons.io.FileUtils
1112import org.gradle.api.Project
1213import org.gradle.api.logging.Logger
@@ -19,6 +20,13 @@ class LocalHandle(val project: Project, val sync: InstanceSync) {
1920
2021 companion object {
2122 val JAR_STATIC_FILES_PATH = " static/"
23+
24+ val JAR_NAME_PATTERNS = listOf (
25+ " *aem-quickstart*.jar" ,
26+ " *cq-quickstart*.jar" ,
27+ " *quickstart*.jar" ,
28+ " *.jar"
29+ )
2230 }
2331
2432 class Script (val wrapper : File , val bin : File , val command : List <String >) {
@@ -34,9 +42,7 @@ class LocalHandle(val project: Project, val sync: InstanceSync) {
3442
3543 val dir = File (" ${config.instancesPath} /${instance.name} " )
3644
37- val jar: File by lazy {
38- FileOperations .find(dir, listOf (" cq-quickstart*.jar" )) ? : File (dir, " cq-quickstart.jar" )
39- }
45+ val jar = File (dir, " aem-quickstart.jar" )
4046
4147 val lock = File (dir, " local-handle.lock" )
4248
@@ -58,14 +64,13 @@ class LocalHandle(val project: Project, val sync: InstanceSync) {
5864 }
5965 }
6066
61- fun create (files : List <File >) {
67+ fun create (resolvedFiles : List <File >) {
6268 cleanDir(true )
6369
6470 logger.info(" Creating instance at path '${dir.absolutePath} '" )
6571
66- logger.info(" Copying resolved instance files: ${files.map { it.absolutePath }} " )
67- GFileUtils .mkdirs(dir)
68- files.forEach { FileUtils .copyFileToDirectory(it, dir) }
72+ logger.info(" Copying resolved instance files: $resolvedFiles " )
73+ copyFiles(resolvedFiles)
6974
7075 logger.info(" Validating instance files" )
7176 validateFiles()
@@ -97,13 +102,32 @@ class LocalHandle(val project: Project, val sync: InstanceSync) {
97102 logger.info(" Created instance with success" )
98103 }
99104
100- fun validateFiles () {
105+ private fun copyFiles (resolvedFiles : List <File >) {
106+ GFileUtils .mkdirs(dir)
107+ val files = resolvedFiles.map {
108+ FileUtils .copyFileToDirectory(it, dir)
109+ File (dir, it.name)
110+ }
111+ findJar(files)?.let { FileUtils .moveFile(it, jar) }
112+ }
113+
114+ private fun findJar (files : List <File >): File ? {
115+ JAR_NAME_PATTERNS .forEach { pattern ->
116+ files.asSequence()
117+ .filter { Patterns .wildcard(it.name, pattern) }
118+ .forEach { return it }
119+ }
120+
121+ return null
122+ }
123+
124+ private fun validateFiles () {
101125 if (! jar.exists()) {
102126 throw AemException (" Instance JAR file not found at path: ${jar.absolutePath} . Is instance JAR URL configured?" )
103127 }
104128
105129 if (! license.exists()) {
106- throw AemException (" License file not found at path: ${license.absolutePath} . Is instance license URL configured?" )
130+ throw AemException (" License file not found at path: ${license.absolutePath} . Is instance license URL configured?" )
107131 }
108132 }
109133
@@ -117,6 +141,7 @@ class LocalHandle(val project: Project, val sync: InstanceSync) {
117141 // Ensure that 'logs' directory exists
118142 GFileUtils .mkdirs(File (staticDir, " logs" ))
119143 }
144+
120145 private fun extractStaticFiles () {
121146 val progressLogger = ProgressLogger (project, " Extracting static files from JAR '${jar.absolutePath} ' to directory: $staticDir " )
122147 progressLogger.started()
0 commit comments