-
Notifications
You must be signed in to change notification settings - Fork 105
Expand file tree
/
Copy pathmodules.gradle
More file actions
109 lines (100 loc) · 3.58 KB
/
Copy pathmodules.gradle
File metadata and controls
109 lines (100 loc) · 3.58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
/*
* Copyright (C) 2007-2022 Crafter Software Corporation. All Rights Reserved.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as published by
* the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
ext.allModules = ["groovy-sandbox", "script-security-plugin", "commons",
"core", "search", "profile", "engine", "deployer", "studio-ui",
"studio", "social", "cli", "js-sdk"]
ext.buildModules = ["groovy-sandbox", "script-security-plugin", "commons",
"core", "search", "profile", "engine", "deployer", "studio-ui", "studio",
"social", "cli"]
ext.deployModules = ["groovy-sandbox", "script-security-plugin", "commons",
"core", "search", "profile", "profile-admin", "engine", "deployer", "studio-ui", "studio",
"social", "social-admin", "cli"]
ext.deployToMavenModules = ["groovy-sandbox", "script-security-plugin", "commons",
"core", "search", "profile", "engine", "deployer", "studio",
"social", "cli"]
// Modules named on the command line (e.g. engine:build, :studio:deploy).
ext.getExplicitlyRequestedModules = { ->
def modules = []
gradle.startParameter.taskNames.each { taskName ->
def name = taskName.startsWith(':') ? taskName.substring(1) : taskName
// Unqualified tasks (build, deploy) are not module-scoped
if (!name.contains(':')) {
return
}
def projectPath = name.substring(0, name.lastIndexOf(':'))
def topLevel = projectPath.contains(':')
? projectPath.substring(0, projectPath.indexOf(':'))
: projectPath
if (allModules.contains(topLevel) && !modules.contains(topLevel)) {
modules << topLevel
}
}
return modules
}
ext.getAllModules = { ->
def result = getExplicitlyRequestedModules()
if (result != null && result.size() > 0) {
return result
}
return allModules
}
ext.getBuildModules = { ->
def result = getExplicitlyRequestedModules()
if (result != null && result.size() > 0) {
return result
}
return buildModules
}
ext.getDeployModules = { ->
def result = getExplicitlyRequestedModules()
if (result != null && result.size() > 0) {
return result
}
return deployModules
}
ext.getDeployToMavenModules = { ->
def result = getExplicitlyRequestedModules()
if (result != null && result.size() > 0) {
return result
}
return deployToMavenModules
}
// Skip tests unless explicitly requested (e.g. ./gradlew test or :studio:test).
// Only the requested projects' Test tasks stay enabled — so
// `./gradlew studio:test engine:build` runs studio tests but not engine's.
gradle.taskGraph.whenReady { graph ->
def taskNames = gradle.startParameter.taskNames
// Unqualified `test` selects every project's test via task name matching.
if (taskNames.any { it == 'test' }) {
return
}
def requestedTestProjects = taskNames.findAll { it == ':test' || it.endsWith(':test') }
.collect { name ->
if (name == ':test') {
return rootProject.path
}
def projectPath = name.substring(0, name.length() - ':test'.length())
if (!projectPath.startsWith(':')) {
projectPath = ':'+ projectPath
}
projectPath
}.toSet()
graph.allTasks.findAll { it instanceof Test }.each { task ->
if (!requestedTestProjects.contains(task.project.path)) {
task.enabled = false
}
}
}