refactor(build): fix debug builds and groups to collection tasks

This commit is contained in:
Harsh Shandilya 2023-09-21 13:22:34 +05:30
parent 19412cc963
commit b0ffbcd07d
2 changed files with 46 additions and 28 deletions

View File

@ -1,5 +1,5 @@
/*
* Copyright © 2022 Harsh Shandilya.
* Copyright © 2022-2023 Harsh Shandilya.
* Use of this source code is governed by an MIT-style
* license that can be found in the LICENSE file or at
* https://opensource.org/licenses/MIT.
@ -12,6 +12,7 @@ import java.nio.file.Files
import java.nio.file.Path
import java.nio.file.Paths
import java.nio.file.StandardCopyOption
import kotlin.io.path.createDirectory
import org.gradle.api.DefaultTask
import org.gradle.api.file.DirectoryProperty
import org.gradle.api.file.RegularFileProperty
@ -21,6 +22,7 @@ import org.gradle.api.tasks.Input
import org.gradle.api.tasks.InputFile
import org.gradle.api.tasks.InputFiles
import org.gradle.api.tasks.Internal
import org.gradle.api.tasks.Optional
import org.gradle.api.tasks.OutputDirectory
import org.gradle.api.tasks.PathSensitive
import org.gradle.api.tasks.PathSensitivity
@ -33,6 +35,7 @@ abstract class CollectApksTask : DefaultTask() {
@get:InputFile
@get:PathSensitive(PathSensitivity.NONE)
@get:Optional
abstract val mappingFile: RegularFileProperty
@get:Input abstract val variantName: Property<String>
@ -41,27 +44,30 @@ abstract class CollectApksTask : DefaultTask() {
@get:OutputDirectory abstract val outputDirectory: DirectoryProperty
override fun getGroup(): String {
return "artifact collection"
}
@TaskAction
fun run() {
val outputDir = outputDirectory.asFile.get()
val outputDirStream =
Files.walk(outputDir.toPath()).sorted(Comparator.reverseOrder()).map(Path::toFile)
outputDirStream.forEach(File::delete)
outputDirStream.close()
outputDir.mkdirs()
val outputDir = outputDirectory.asFile.get().toPath()
Files.walk(outputDir).sorted(Comparator.reverseOrder()).map(Path::toFile).forEach(File::delete)
outputDir.createDirectory()
val builtArtifacts =
builtArtifactsLoader.get().load(apkFolder.get()) ?: error("Cannot load APKs")
builtArtifacts.elements.forEach { artifact ->
Files.copy(
Paths.get(artifact.outputFile),
outputDir.resolve("Claw-${variantName.get()}-${artifact.versionName}.apk").toPath(),
outputDir.resolve("Claw-${variantName.get()}-${artifact.versionName}.apk"),
StandardCopyOption.REPLACE_EXISTING,
)
}
mappingFile.orNull?.apply {
Files.copy(
asFile.toPath(),
outputDir.resolve("mapping.txt"),
StandardCopyOption.REPLACE_EXISTING,
)
}
Files.copy(
mappingFile.get().asFile.toPath(),
outputDir.resolve("mapping.txt").toPath(),
StandardCopyOption.REPLACE_EXISTING,
)
}
}

View File

@ -1,5 +1,5 @@
/*
* Copyright © 2022 Harsh Shandilya.
* Copyright © 2022-2023 Harsh Shandilya.
* Use of this source code is governed by an MIT-style
* license that can be found in the LICENSE file or at
* https://opensource.org/licenses/MIT.
@ -10,19 +10,28 @@ import java.io.File
import java.nio.file.Files
import java.nio.file.Path
import java.nio.file.StandardCopyOption
import kotlin.io.path.createDirectory
import org.gradle.api.DefaultTask
import org.gradle.api.file.DirectoryProperty
import org.gradle.api.file.RegularFileProperty
import org.gradle.api.provider.Property
import org.gradle.api.tasks.Input
import org.gradle.api.tasks.InputFile
import org.gradle.api.tasks.Optional
import org.gradle.api.tasks.OutputDirectory
import org.gradle.api.tasks.PathSensitive
import org.gradle.api.tasks.PathSensitivity
import org.gradle.api.tasks.TaskAction
abstract class CollectBundleTask : DefaultTask() {
@get:InputFile abstract val bundleFile: RegularFileProperty
@get:InputFile
@get:PathSensitive(PathSensitivity.NONE)
abstract val bundleFile: RegularFileProperty
@get:InputFile abstract val mappingFile: RegularFileProperty
@get:InputFile
@get:PathSensitive(PathSensitivity.NONE)
@get:Optional
abstract val mappingFile: RegularFileProperty
@get:Input abstract val variantName: Property<String>
@ -30,23 +39,26 @@ abstract class CollectBundleTask : DefaultTask() {
@get:OutputDirectory abstract val outputDirectory: DirectoryProperty
override fun getGroup(): String {
return "artifact collection"
}
@TaskAction
fun taskAction() {
val outputDir = outputDirectory.asFile.get()
val outputDirStream =
Files.walk(outputDir.toPath()).sorted(Comparator.reverseOrder()).map(Path::toFile)
outputDirStream.forEach(File::delete)
outputDirStream.close()
outputDir.mkdirs()
val outputDir = outputDirectory.asFile.get().toPath()
Files.walk(outputDir).sorted(Comparator.reverseOrder()).map(Path::toFile).forEach(File::delete)
outputDir.createDirectory()
Files.copy(
bundleFile.get().asFile.toPath(),
outputDir.resolve("Claw-${variantName.get()}-${versionName.get()}.aab").toPath(),
StandardCopyOption.REPLACE_EXISTING,
)
Files.copy(
mappingFile.get().asFile.toPath(),
outputDir.resolve("mapping.txt").toPath(),
outputDir.resolve("Claw-${variantName.get()}-${versionName.get()}.aab"),
StandardCopyOption.REPLACE_EXISTING,
)
mappingFile.orNull?.apply {
Files.copy(
asFile.toPath(),
outputDir.resolve("mapping.txt"),
StandardCopyOption.REPLACE_EXISTING,
)
}
}
}