override fun apply()

in plugins/src/main/java/com/google/gradle/plugins/ChangelogPlugin.kt [71:128]


  override fun apply(project: Project) {
    with(project) {
      val extension =
        extensions.create<ChangelogPluginExtension>("changelog").apply { commonConfiguration() }

      val releasedApiFile = apiPlugin.exportFile.orElseIfNotExists(apiPlugin.apiFile)
      val newApiFile = tasks.named("buildApi").regularOutputFile

      val findChanges =
        tasks.register<FindChangesTask>("findChanges") {
          old.set(releasedApiFile)
          new.set(newApiFile)
          outputFile.set(tempFile("changes"))
        }

      val fileChanges = findChanges.regularOutputFile

      tasks.register<MakeChangeTask>("makeChange") {
        val changeMessage = provideProperty<String>("changeMessage")
        val changeName = provideProperty<String>("changeName")
          .orElse(RandomWordsGenerator.generateString())
        val changeOutput = extension.outputDirectory.childFile("${changeName.get()}.json")

        changesFile.set(fileChanges)
        message.set(changeMessage)
        outputFile.set(changeOutput)
      }

      tasks.register<WarnVersionBumpTask>("warnVersionBump") {
        if (export.isPresent) {
          export.set(apiPlugin.exportFile)
        }
        changesFile.set(fileChanges)
      }

      tasks.register<WarnAboutApiChangesTask>("warnAboutApiChanges") {
        changesFile.set(fileChanges)
        outputFile.set(extension.apiChangesFile)
      }

      val changelogFiles =
        extension.outputDirectory.map { it.asFile.listFilesOrdered { it.extension == "json" } }

      tasks.register<Delete>("deleteChangeFiles") {
        group = "cleanup"

        delete(changelogFiles)
      }

      tasks.register<MakeReleaseNotesTask>("makeReleaseNotes") {
        onlyIf("No changelog files found") { changelogFiles.get().isNotEmpty() }

        changeFiles.set(changelogFiles)
        version.set(project.moduleVersion)
        outputFile.set(extension.releaseNotesFile)
      }
    }
  }