File tree Expand file tree Collapse file tree 2 files changed +52
-1
lines changed
main/kotlin/com/github/gradle/node
test/groovy/com/github/gradle/node Expand file tree Collapse file tree 2 files changed +52
-1
lines changed Original file line number Diff line number Diff line change @@ -6,8 +6,14 @@ import org.gradle.api.Project
6
6
import org.gradle.kotlin.dsl.property
7
7
import org.gradle.util.GradleVersion
8
8
9
-
9
+ /* *
10
+ * Provides a parsed view of package.json
11
+ */
10
12
open class PackageJsonExtension (project : Project ) {
13
+
14
+ /* *
15
+ * Raw JsonNode returned by Jackson, this may be removed in a future release
16
+ */
11
17
val node = project.objects.property<JsonNode >()
12
18
13
19
init {
@@ -29,14 +35,25 @@ open class PackageJsonExtension(project: Project) {
29
35
30
36
val private = project.provider { node.get().get(" private" ).asBoolean() }
31
37
38
+ /* *
39
+ * Get the text value of a given field
40
+ */
32
41
fun get (name : String ): String {
33
42
return node.get().get(name).asText()
34
43
}
35
44
45
+ /* *
46
+ * Get the boolean value of a given field
47
+ */
36
48
fun getBoolean (name : String ): Boolean {
37
49
return node.get().get(name).asBoolean()
38
50
}
39
51
52
+ /* *
53
+ * Get the text value of a field containing nested objects
54
+ *
55
+ * e.g. <pre>{ "outer": { "inner": "nested } }</pre>
56
+ */
40
57
fun get (vararg name : String ): String {
41
58
return name.fold(node.get()) { acc, next -> acc.get(next) }.asText()
42
59
}
Original file line number Diff line number Diff line change
1
+ package com.github.gradle.node
2
+
3
+ import com.github.gradle.AbstractIntegTest
4
+ import com.github.gradle.RunWithMultipleGradleVersions
5
+ import org.gradle.testkit.runner.TaskOutcome
6
+ import org.junit.Assume
7
+
8
+ @RunWithMultipleGradleVersions
9
+ class PackageJsonExtension_integTest extends AbstractIntegTest {
10
+
11
+ def ' check standard attribute' () {
12
+ given :
13
+ Assume . assumeTrue(isConfigurationCacheEnabled())
14
+ copyResources(" fixtures/npm-env/" )
15
+ copyResources(" fixtures/env/" )
16
+ createFile(" build.gradle" ) << """
17
+ def nameProvider = project.extensions.getByName("${ PackageJsonExtension.NAME} ").name
18
+ tasks.register('printPackageJsonName') {
19
+ inputs.property('name', nameProvider)
20
+ doLast {
21
+ println nameProvider.get()
22
+ }
23
+ }
24
+ """
25
+
26
+ when :
27
+ def result1 = build(" :printPackageJsonName" )
28
+ def result2 = build(" :printPackageJsonName" )
29
+
30
+ then :
31
+ result1. task(" :printPackageJsonName" ). outcome == TaskOutcome . SUCCESS
32
+ result2. task(" :printPackageJsonName" ). outcome == TaskOutcome . SUCCESS
33
+ }
34
+ }
You can’t perform that action at this time.
0 commit comments