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
66import org.gradle.kotlin.dsl.property
77import org.gradle.util.GradleVersion
88
9-
9+ /* *
10+ * Provides a parsed view of package.json
11+ */
1012open class PackageJsonExtension (project : Project ) {
13+
14+ /* *
15+ * Raw JsonNode returned by Jackson, this may be removed in a future release
16+ */
1117 val node = project.objects.property<JsonNode >()
1218
1319 init {
@@ -29,14 +35,25 @@ open class PackageJsonExtension(project: Project) {
2935
3036 val private = project.provider { node.get().get(" private" ).asBoolean() }
3137
38+ /* *
39+ * Get the text value of a given field
40+ */
3241 fun get (name : String ): String {
3342 return node.get().get(name).asText()
3443 }
3544
45+ /* *
46+ * Get the boolean value of a given field
47+ */
3648 fun getBoolean (name : String ): Boolean {
3749 return node.get().get(name).asBoolean()
3850 }
3951
52+ /* *
53+ * Get the text value of a field containing nested objects
54+ *
55+ * e.g. <pre>{ "outer": { "inner": "nested } }</pre>
56+ */
4057 fun get (vararg name : String ): String {
4158 return name.fold(node.get()) { acc, next -> acc.get(next) }.asText()
4259 }
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