mirror of
https://github.com/SquidDev-CC/CC-Tweaked
synced 2025-03-13 06:58:12 +00:00

This adds SPDX license headers to all source code files, following the REUSE[1] specification. This does not include any asset files (such as generated JSON files, or textures). While REUSE does support doing so with ".license" files, for now we define these licences using the .reuse/dep5 file. [1]: https://reuse.software/
69 lines
2.2 KiB
Kotlin
69 lines
2.2 KiB
Kotlin
// SPDX-FileCopyrightText: 2022 The CC: Tweaked Developers
|
|
//
|
|
// SPDX-License-Identifier: MPL-2.0
|
|
|
|
package cc.tweaked.gradle
|
|
|
|
import org.gradle.api.DefaultTask
|
|
import org.gradle.api.GradleException
|
|
import org.gradle.api.file.RegularFileProperty
|
|
import org.gradle.api.provider.Property
|
|
import org.gradle.api.tasks.*
|
|
import org.gradle.language.base.plugins.LifecycleBasePlugin
|
|
|
|
/**
|
|
* Checks the `changelog.md` and `whatsnew.md` files are well-formed.
|
|
*/
|
|
@CacheableTask
|
|
abstract class CheckChangelog : DefaultTask() {
|
|
init {
|
|
group = LifecycleBasePlugin.VERIFICATION_GROUP
|
|
description = "Verifies the changelog and whatsnew file are consistent."
|
|
}
|
|
|
|
@get:Input
|
|
abstract val version: Property<String>
|
|
|
|
@get:InputFile
|
|
@get:PathSensitive(PathSensitivity.NONE)
|
|
abstract val changelog: RegularFileProperty
|
|
|
|
@get:InputFile
|
|
@get:PathSensitive(PathSensitivity.NONE)
|
|
abstract val whatsNew: RegularFileProperty
|
|
|
|
@TaskAction
|
|
fun check() {
|
|
val version = version.get()
|
|
|
|
var ok = true
|
|
|
|
// Check we're targeting the current version
|
|
var whatsNew = whatsNew.get().asFile.readLines()
|
|
if (whatsNew[0] != "New features in CC: Tweaked $version") {
|
|
ok = false
|
|
logger.error("Expected `whatsnew.md' to target $version.")
|
|
}
|
|
|
|
// Check "read more" exists and trim it
|
|
val idx = whatsNew.indexOfFirst { it == "Type \"help changelog\" to see the full version history." }
|
|
if (idx == -1) {
|
|
ok = false
|
|
logger.error("Must mention the changelog in whatsnew.md")
|
|
} else {
|
|
whatsNew = whatsNew.slice(0 until idx)
|
|
}
|
|
|
|
// Check whatsnew and changelog match.
|
|
val expectedChangelog = sequenceOf("# ${whatsNew[0]}") + whatsNew.slice(1 until whatsNew.size).asSequence()
|
|
val changelog = changelog.get().asFile.readLines()
|
|
val mismatch = expectedChangelog.zip(changelog.asSequence()).filter { (a, b) -> a != b }.firstOrNull()
|
|
if (mismatch != null) {
|
|
ok = false
|
|
logger.error("whatsnew and changelog are not in sync")
|
|
}
|
|
|
|
if (!ok) throw GradleException("Could not check release")
|
|
}
|
|
}
|