@@ -16,12 +16,21 @@ abstract class InstallFirebaseToolsTask : DefaultTask() {
16
16
17
17
@get:OutputDirectory abstract val destDir: DirectoryProperty
18
18
19
+ @get:OutputFile abstract val firebaseExecutable: RegularFileProperty
20
+
19
21
@get:Inject abstract val execOperations: ExecOperations
20
22
23
+ fun initializeProperties (version : Provider <String >, destDir : Provider <Directory >) {
24
+ this .version.set(version)
25
+ this .destDir.set(destDir)
26
+ this .firebaseExecutable.set(destDir.map { it.dir(" node_modules" ).dir(" .bin" ).file(" firebase" ) })
27
+ }
28
+
21
29
@TaskAction
22
30
fun execute () {
23
31
val destDir: File = destDir.get().asFile
24
32
val version: String = version.get()
33
+ val firebaseExecutable: File = firebaseExecutable.get().asFile
25
34
26
35
val packageJsonFile = File (destDir, " package.json" )
27
36
logger.lifecycle(" Creating $packageJsonFile " )
@@ -40,26 +49,35 @@ abstract class InstallFirebaseToolsTask : DefaultTask() {
40
49
)
41
50
logger.lifecycle(" Running command in directory $workingDir : ${commandLine.joinToString(" " )} " )
42
51
}
52
+
53
+ execOperations.exec {
54
+ setCommandLine(firebaseExecutable.path, " --version" )
55
+ logger.lifecycle(
56
+ " Running command to verify successful installation: ${commandLine.joinToString(" " )} "
57
+ )
58
+ }
43
59
}
44
60
}
45
61
46
- val installFirebaseToolsTask = tasks.register<InstallFirebaseToolsTask >(" installFirebaseTools" ) {
47
- group = " Data Connect CI"
48
- description = " Install the firebase-tools npm package"
49
- destDir.set(layout.buildDirectory.dir(" firebase-tools" ))
50
- version.set(providers.requiredGradleProperty(" firebaseToolsVersion" ))
51
- }
62
+ val installFirebaseToolsTask =
63
+ tasks.register<InstallFirebaseToolsTask >(" installFirebaseTools" ) {
64
+ group = " Data Connect CI"
65
+ description = " Install the firebase-tools npm package"
66
+ initializeProperties(
67
+ version = providers.requiredGradleProperty(" firebaseToolsVersion" ),
68
+ destDir = layout.buildDirectory.dir(" firebase-tools" ),
69
+ )
70
+ }
52
71
53
72
fun ProviderFactory.requiredGradleProperty (propertyName : String ) =
54
73
gradleProperty(propertyName)
55
74
.orElse(
56
75
providers.provider<Nothing > {
57
76
throw RequiredPropertyMissing (
58
- " zzyzx=${project.property(propertyName)} Project property \" $propertyName \" was not set, " +
59
- " but is required. " +
60
- " Consider setting this project property by specifying " +
61
- " -P$propertyName =<value> on the Gradle command line, " +
62
- " or by setting the ORG_GRADLE_PROJECT_installFirebaseTools environment variable."
77
+ " Required project property \" $propertyName \" was not set; " +
78
+ " consider setting it " +
79
+ " by specifying -P$propertyName =<value> on the Gradle command line " +
80
+ " or by setting the environment variable ORG_GRADLE_PROJECT_$propertyName "
63
81
)
64
82
}
65
83
)
0 commit comments