Skip to content

Commit 03e12df

Browse files
authored
feat: API for nested settings reading (#290)
* feat: API for nested settings reading * docs: correct Kotlin example Co-authored-by: Michal Augustýn <[email protected]>
1 parent 5cafffe commit 03e12df

File tree

3 files changed

+26
-7
lines changed

3 files changed

+26
-7
lines changed

README.md

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -162,13 +162,13 @@ dockerCompose {
162162
```kotlin
163163
dockerCompose {
164164
// settings as usual
165-
createNested("myNested").apply {
165+
nested("myNested").apply {
166166
useComposeFiles = listOf("docker-compose-for-integration-tests.yml")
167167
isRequiredBy(project.tasks.named("myTask").get())
168168
}
169169
}
170-
```
171-
170+
```
171+
172172
</details>
173173

174174

@@ -177,12 +177,23 @@ dockerCompose {
177177
* Configuration of the nested settings defaults to the main `dockerCompose` settings (declared before the nested settings), except following properties: `projectName`, `startedServices`, `useComposeFiles`, `scale`, `captureContainersOutputToFile`, `captureContainersOutputToFiles`, `composeLogToFile`, `containerLogToDir`, `pushServices`
178178

179179
When exposing service info from `myNestedComposeUp` task into your task you should use following syntax:
180-
```
180+
```groovy
181181
test.doFirst {
182-
dockerCompose.myNested.exposeAsEnvironment(test)
182+
dockerCompose.myNested.exposeAsEnvironment(test)
183183
}
184184
```
185185

186+
<details>
187+
<summary>Kotlin</summary>
188+
189+
```kotlin
190+
test.doFirst {
191+
dockerCompose.nested("myNested").exposeAsEnvironment(project.tasks.named("test").get())
192+
}
193+
```
194+
195+
</details>
196+
186197
It's also possible to use this simplified syntax:
187198
```gradle
188199
dockerCompose {

src/main/groovy/com/avast/gradle/dockercompose/ComposeExtension.groovy

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,15 @@ class ComposeExtension extends ComposeSettings {
1111
private HashMap<String, ComposeSettings> settings = [:]
1212

1313
private ComposeSettings getOrCreateNested(String name) {
14-
settings.computeIfAbsent(name, { createNested(name) })
14+
settings.computeIfAbsent(name, { cloneAsNested(name) })
15+
}
16+
17+
ComposeSettings createNested(String name) {
18+
getOrCreateNested(name)
19+
}
20+
21+
ComposeSettings nested(String name) {
22+
getOrCreateNested(name)
1523
}
1624

1725
def propertyMissing(String name) {

src/main/groovy/com/avast/gradle/dockercompose/ComposeSettings.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ class ComposeSettings {
135135
"${fullPathMd5}_${project.name}"
136136
}
137137

138-
ComposeSettings createNested(String name) {
138+
protected ComposeSettings cloneAsNested(String name) {
139139
def r = new ComposeSettings(project, name, this.nestedName)
140140
r.buildBeforeUp = this.buildBeforeUp
141141
r.buildBeforePull = this.buildBeforePull

0 commit comments

Comments
 (0)