Skip to content

Commit 007cbce

Browse files
authored
Merge pull request #34 from Cognifide/deploy-rule-task
Deploy rule task
2 parents 4100467 + 8648d5b commit 007cbce

7 files changed

Lines changed: 59 additions & 20 deletions

File tree

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ plugins {
66
}
77

88
group 'com.cognifide.gradle'
9-
version '1.3.3'
9+
version '1.3.4-SNAPSHOT'
1010
description = 'Gradle AEM Plugin'
1111
defaultTasks = ['clean', 'publishToMavenLocal']
1212

src/main/kotlin/com/cognifide/gradle/aem/AemConfig.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -203,10 +203,9 @@ data class AemConfig(
203203
* Initialize defaults that depends on concrete type of project.
204204
*/
205205
fun configure(task: DefaultTask) {
206-
// Default values
207206
val project = task.project
208207

209-
if (project.path == project.rootProject.path) {
208+
if (project == project.rootProject) {
210209
bundlePath = "/apps/${project.name}/install"
211210
} else {
212211
bundlePath = "/apps/${project.rootProject.name}/${project.name}/install"

src/main/kotlin/com/cognifide/gradle/aem/AemPlugin.kt

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import com.cognifide.gradle.aem.vlt.CheckoutTask
77
import com.cognifide.gradle.aem.vlt.CleanTask
88
import com.cognifide.gradle.aem.vlt.SyncTask
99
import com.cognifide.gradle.aem.vlt.VltTask
10+
import com.google.common.base.CaseFormat
1011
import org.gradle.api.DefaultTask
1112
import org.gradle.api.Plugin
1213
import org.gradle.api.Project
@@ -36,6 +37,10 @@ class AemPlugin : Plugin<Project> {
3637
val VLT_PATH = "META-INF/vault"
3738

3839
val JCR_ROOT = "jcr_root"
40+
41+
val DEPLOY_TASK_ROOT = "aemRootDeploy"
42+
43+
val DEPLOY_TASK_RULE = "Pattern: aem<ProjectPath>Deploy: Build CRX package and deploy it to AEM instance(s). Use preemptive '$DEPLOY_TASK_ROOT' for root project."
3944
}
4045

4146
override fun apply(project: Project) {
@@ -77,9 +82,11 @@ class AemPlugin : Plugin<Project> {
7782

7883
val assemble = project.tasks.getByName(LifecycleBasePlugin.ASSEMBLE_TASK_NAME)
7984
val check = project.tasks.getByName(LifecycleBasePlugin.CHECK_TASK_NAME)
85+
val build = project.tasks.getByName(LifecycleBasePlugin.BUILD_TASK_NAME)
8086

8187
assemble.mustRunAfter(clean)
8288
check.mustRunAfter(clean)
89+
build.dependsOn(compose)
8390

8491
compose.dependsOn(assemble, check)
8592
compose.mustRunAfter(clean)
@@ -102,6 +109,25 @@ class AemPlugin : Plugin<Project> {
102109
vltRaw.mustRunAfter(clean)
103110
vltCheckout.mustRunAfter(clean)
104111
vltSync.mustRunAfter(clean)
112+
113+
project.tasks.addRule(DEPLOY_TASK_RULE, { taskName ->
114+
val desiredTaskName = if (project == project.rootProject) {
115+
DEPLOY_TASK_ROOT
116+
} else {
117+
"aem${CaseFormat.LOWER_HYPHEN.to(CaseFormat.UPPER_CAMEL, project.path.replace(":", "-"))}Deploy"
118+
}
119+
120+
if (taskName == desiredTaskName) {
121+
if (project.tasks.findByName(taskName) != null) {
122+
project.logger.info("Deploy rule task '$taskName' already exists, so it will be not created.")
123+
} else {
124+
project.logger.info("Creating deploy rule task named '$taskName'.")
125+
126+
val task = project.tasks.create(taskName)
127+
task.dependsOn(build, deploy)
128+
}
129+
}
130+
})
105131
}
106132

107133
private fun setupConfigurations(project: Project) {
@@ -118,14 +144,14 @@ class AemPlugin : Plugin<Project> {
118144
}
119145

120146
private fun setupConfig(project: Project) {
121-
project.tasks.forEach {task ->
147+
project.tasks.forEach { task ->
122148
if (task is AemTask && task is DefaultTask) {
123149
task.config.configure(task)
124150
}
125151
}
126152

127153
project.afterEvaluate({
128-
project.tasks.forEach {task ->
154+
project.tasks.forEach { task ->
129155
if (task is AemTask && task is DefaultTask) {
130156
task.config.validate()
131157
task.config.attach(task)
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.cognifide.gradle.aem.internal
2+
3+
import org.apache.commons.io.FilenameUtils
4+
import org.apache.commons.io.IOCase
5+
6+
object Patterns {
7+
8+
fun wildcard(value: String, matcher: String): Boolean {
9+
return FilenameUtils.wildcardMatch(value, matcher, IOCase.INSENSITIVE)
10+
}
11+
12+
fun wildcardSensitive(value: String, matcher: String): Boolean {
13+
return FilenameUtils.wildcardMatch(value, matcher, IOCase.SENSITIVE)
14+
}
15+
16+
}

src/main/kotlin/com/cognifide/gradle/aem/internal/PropertyParser.kt

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@ import com.cognifide.gradle.aem.AemConfig
44
import com.cognifide.gradle.aem.AemException
55
import com.fasterxml.jackson.databind.util.ISO8601Utils
66
import groovy.text.SimpleTemplateEngine
7-
import org.apache.commons.io.FilenameUtils
8-
import org.apache.commons.io.IOCase
97
import org.apache.commons.lang3.text.StrSubstitutor
108
import org.gradle.api.Project
119
import java.text.SimpleDateFormat
@@ -19,9 +17,7 @@ class PropertyParser(val project: Project) {
1917
fun filter(value: String, propName: String, propDefault: String = FILTER_DEFAULT): Boolean {
2018
val filters = project.properties.getOrElse(propName, { propDefault }) as String
2119

22-
return filters.split(",").any { group ->
23-
FilenameUtils.wildcardMatch(value, group, IOCase.INSENSITIVE)
24-
}
20+
return filters.split(",").any { group -> Patterns.wildcard(value, group) }
2521
}
2622

2723
fun expand(source: String, properties: Map<String, Any> = mapOf()): String {

src/main/kotlin/com/cognifide/gradle/aem/pkg/ComposeTask.kt

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,23 +3,23 @@ package com.cognifide.gradle.aem.pkg
33
import com.cognifide.gradle.aem.AemConfig
44
import com.cognifide.gradle.aem.AemPlugin
55
import com.cognifide.gradle.aem.AemTask
6+
import com.cognifide.gradle.aem.internal.Patterns
67
import com.cognifide.gradle.aem.internal.PropertyParser
7-
import com.fasterxml.jackson.databind.util.ISO8601Utils
88
import org.apache.commons.io.FileUtils
9-
import org.apache.commons.io.FilenameUtils
10-
import org.apache.commons.io.IOCase
119
import org.apache.commons.io.IOUtils
1210
import org.gradle.api.Project
1311
import org.gradle.api.file.DuplicatesStrategy
14-
import org.gradle.api.tasks.*
12+
import org.gradle.api.tasks.Input
13+
import org.gradle.api.tasks.Internal
14+
import org.gradle.api.tasks.OutputDirectory
15+
import org.gradle.api.tasks.TaskAction
1516
import org.gradle.api.tasks.bundling.Zip
1617
import org.jsoup.Jsoup
1718
import org.jsoup.parser.Parser
1819
import org.reflections.Reflections
1920
import org.reflections.scanners.ResourcesScanner
2021
import java.io.File
2122
import java.io.FileOutputStream
22-
import java.text.SimpleDateFormat
2323

2424
open class ComposeTask : Zip(), AemTask {
2525

@@ -113,7 +113,7 @@ open class ComposeTask : Zip(), AemTask {
113113
}
114114

115115
private fun expandVaultFiles() {
116-
val files = vaultDir.listFiles { _, name -> config.vaultFilesExpanded.any { FilenameUtils.wildcardMatch(name, it, IOCase.INSENSITIVE) } } ?: return
116+
val files = vaultDir.listFiles { _, name -> config.vaultFilesExpanded.any { Patterns.wildcard(name, it) } } ?: return
117117

118118
for (file in files) {
119119
val expandedContent = try {
@@ -171,9 +171,9 @@ open class ComposeTask : Zip(), AemTask {
171171

172172
fun includeProjects(pathFilter: String) {
173173
project.gradle.afterProject { subproject ->
174-
if (subproject.path != project.path
174+
if (subproject != project
175175
&& subproject.plugins.hasPlugin(AemPlugin.ID)
176-
&& (pathFilter.isNullOrBlank() || FilenameUtils.wildcardMatch(subproject.path, pathFilter, IOCase.INSENSITIVE))) {
176+
&& (pathFilter.isNullOrBlank() || Patterns.wildcard(subproject.path, pathFilter))) {
177177
includeProject(subproject)
178178
}
179179
}
@@ -230,7 +230,7 @@ open class ComposeTask : Zip(), AemTask {
230230

231231
dependProject(project, config.dependContentTaskNames(project))
232232

233-
if (this.project.path != project.path && !config.vaultFilterPath.isNullOrBlank()) {
233+
if (this.project != project && !config.vaultFilterPath.isNullOrBlank()) {
234234
vaultFilters.add(File(config.vaultFilterPath))
235235
}
236236

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<workspaceFilter version="1.0">
3-
${filterRoots}
3+
4+
${filterRoots}
5+
46
</workspaceFilter>

0 commit comments

Comments
 (0)