-
Notifications
You must be signed in to change notification settings - Fork 24.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Export
GenerateCodegenArtifactTask
to its own task.
Summary: This is the last task from the Codegen Plugin that is exported to its own Task file and converted to Kotlin. Changelog: [Internal] [Changed] - Export `GenerateCodegenArtifactTask` to its own task. Reviewed By: ShikaSD Differential Revision: D31054781 fbshipit-source-id: 6787065b497570fb312310e3d9f4120f0629f374
- Loading branch information
1 parent
b494ae0
commit d314d1f
Showing
4 changed files
with
96 additions
and
97 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
76 changes: 76 additions & 0 deletions
76
...ve-gradle-plugin/src/main/kotlin/com/facebook/react/tasks/GenerateCodegenArtifactsTask.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,76 @@ | ||
/* | ||
* Copyright (c) Facebook, Inc. and its affiliates. | ||
* | ||
* This source code is licensed under the MIT license found in the | ||
* LICENSE file in the root directory of this source tree. | ||
*/ | ||
|
||
package com.facebook.react.tasks | ||
|
||
import com.facebook.react.codegen.generator.JavaGenerator | ||
import com.facebook.react.utils.windowsAwareYarn | ||
import org.gradle.api.GradleException | ||
import org.gradle.api.file.Directory | ||
import org.gradle.api.file.DirectoryProperty | ||
import org.gradle.api.file.RegularFile | ||
import org.gradle.api.provider.ListProperty | ||
import org.gradle.api.provider.Property | ||
import org.gradle.api.provider.Provider | ||
import org.gradle.api.tasks.* | ||
|
||
abstract class GenerateCodegenArtifactsTask : Exec() { | ||
|
||
@get:Internal abstract val reactRoot: DirectoryProperty | ||
|
||
@get:Internal abstract val jsRootDir: DirectoryProperty | ||
|
||
@get:Internal abstract val codegenDir: DirectoryProperty | ||
|
||
@get:Internal abstract val generatedSrcDir: DirectoryProperty | ||
|
||
@get:Input abstract val nodeExecutableAndArgs: ListProperty<String> | ||
|
||
@get:Input abstract val useJavaGenerator: Property<Boolean> | ||
|
||
@get:Input abstract val codegenJavaPackageName: Property<String> | ||
|
||
@get:Input abstract val libraryName: Property<String> | ||
|
||
@get:InputFile | ||
val combineJsToSchemaCli: Provider<RegularFile> = | ||
codegenDir.file("lib/cli/combine/combine-js-to-schema-cli.js") | ||
|
||
@get:InputFile | ||
val generatedSchemaFile: Provider<RegularFile> = generatedSrcDir.file("schema.json") | ||
|
||
@get:OutputDirectory val generatedJavaFiles: Provider<Directory> = generatedSrcDir.dir("java") | ||
|
||
@get:OutputDirectory val generatedJniFiles: Provider<Directory> = generatedSrcDir.dir("jni") | ||
|
||
override fun exec() { | ||
commandLine( | ||
windowsAwareYarn( | ||
*nodeExecutableAndArgs.get().toTypedArray(), | ||
reactRoot.file("scripts/generate-specs-cli.js").get().asFile.absolutePath, | ||
"android", | ||
generatedSchemaFile.get().asFile.absolutePath, | ||
generatedSrcDir.get().asFile.absolutePath, | ||
libraryName.get(), | ||
codegenJavaPackageName.get())) | ||
super.exec() | ||
|
||
if (useJavaGenerator.getOrElse(false)) { | ||
// Use Java-based generator implementation to produce the source files, | ||
// instead of using the JS-based generator. | ||
try { | ||
JavaGenerator( | ||
generatedSchemaFile.get().asFile, | ||
codegenJavaPackageName.get(), | ||
generatedSrcDir.get().asFile) | ||
.build() | ||
} catch (e: Exception) { | ||
throw GradleException("Failed to generate Java from schema.", e) | ||
} | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters