InAppInfoCreateTask.kt 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. /*
  2. * Copyright (c) Milan Jurkulák 2024.
  3. * Contact:
  4. * e: mimoccc@gmail.com
  5. * e: mj@mjdev.org
  6. * w: https://mjdev.org
  7. */
  8. package org.mjdev.gradle.tasks
  9. import org.gradle.api.tasks.OutputDirectory
  10. import org.gradle.api.tasks.TaskAction
  11. import org.mjdev.gradle.extensions.applicationId
  12. import org.mjdev.gradle.extensions.createFile
  13. import org.mjdev.gradle.extensions.srcOutputDirectory
  14. import java.io.File
  15. import org.mjdev.gradle.base.BaseTask
  16. import org.mjdev.gradle.extensions.write
  17. import org.mjdev.gradle.extensions.registerSourceDirectory
  18. @Suppress("MemberVisibilityCanBePrivate")
  19. open class InAppInfoCreateTask : BaseTask() {
  20. @get:OutputDirectory
  21. val srcOutputDir: File
  22. get() = srcOutputDirectory
  23. init {
  24. group = "mjdev"
  25. description = "Create ApplicationInfo class"
  26. outputs.upToDateWhen { false }
  27. }
  28. @TaskAction
  29. fun taskAction() {
  30. registerSourceDirectory(srcOutputDir)
  31. createFile(
  32. name = "ApplicationInfo",
  33. packageName = project.applicationId
  34. ) {
  35. createClass(
  36. name = "ApplicationInfo"
  37. ) {
  38. createFnc(
  39. name = "getInfo",
  40. returnType = String::class
  41. ) {
  42. addStatement("return \"\"")
  43. }
  44. }
  45. }.write(srcOutputDir) {
  46. println("> Writing generated file: ${srcOutputDir}/${this.name}.kt")
  47. }
  48. }
  49. }