Check for offline mode before initializing submodules
This commit is contained in:
parent
cf4fcd8953
commit
cfcb6ad8ef
4 changed files with 33 additions and 3 deletions
|
@ -35,12 +35,17 @@ import io.papermc.paperweight.util.constants.*
|
|||
import java.io.File
|
||||
import org.gradle.api.Plugin
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.logging.Logging
|
||||
import org.gradle.api.tasks.Delete
|
||||
import org.gradle.api.tasks.TaskProvider
|
||||
import org.gradle.api.tasks.bundling.Zip
|
||||
import org.gradle.kotlin.dsl.*
|
||||
|
||||
class PaperweightCore : Plugin<Project> {
|
||||
companion object {
|
||||
private val logger = Logging.getLogger(PaperweightCore::class.java)
|
||||
}
|
||||
|
||||
override fun apply(target: Project) {
|
||||
checkJavaVersion()
|
||||
Git.checkForGit()
|
||||
|
@ -58,7 +63,7 @@ class PaperweightCore : Plugin<Project> {
|
|||
|
||||
// Make sure the submodules are initialized, since there are files there
|
||||
// which are required for configuration
|
||||
target.layout.initSubmodules()
|
||||
target.layout.maybeInitSubmodules(target.offlineMode(), logger)
|
||||
|
||||
target.configurations.create(PARAM_MAPPINGS_CONFIG)
|
||||
target.configurations.create(REMAPPER_CONFIG)
|
||||
|
|
|
@ -40,7 +40,9 @@ open class GeneralTasks(
|
|||
) : InitialTasks(project) {
|
||||
|
||||
// Configuration won't necessarily always run, so do it as the first task when it's needed as well
|
||||
val initSubmodules by tasks.registering<InitSubmodules>()
|
||||
val initSubmodules by tasks.registering<InitSubmodules> {
|
||||
offlineMode.set(project.offlineMode())
|
||||
}
|
||||
|
||||
val buildDataInfo: Provider<BuildDataInfo> = project.contents(extension.craftBukkit.buildDataInfo) {
|
||||
gson.fromJson(it)
|
||||
|
|
|
@ -26,17 +26,27 @@ import io.papermc.paperweight.util.*
|
|||
import javax.inject.Inject
|
||||
import org.gradle.api.DefaultTask
|
||||
import org.gradle.api.file.ProjectLayout
|
||||
import org.gradle.api.provider.Property
|
||||
import org.gradle.api.tasks.Input
|
||||
import org.gradle.api.tasks.TaskAction
|
||||
import org.gradle.api.tasks.UntrackedTask
|
||||
|
||||
@Suppress("LeakingThis")
|
||||
@UntrackedTask(because = "Git tracks the state")
|
||||
abstract class InitSubmodules : DefaultTask() {
|
||||
|
||||
@get:Inject
|
||||
abstract val layout: ProjectLayout
|
||||
|
||||
@get:Input
|
||||
abstract val offlineMode: Property<Boolean>
|
||||
|
||||
init {
|
||||
offlineMode.convention(false)
|
||||
}
|
||||
|
||||
@TaskAction
|
||||
fun run() {
|
||||
layout.initSubmodules()
|
||||
layout.maybeInitSubmodules(offlineMode.get(), logger)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -60,6 +60,7 @@ import org.gradle.api.file.RegularFile
|
|||
import org.gradle.api.file.RegularFileProperty
|
||||
import org.gradle.api.invocation.Gradle
|
||||
import org.gradle.api.logging.LogLevel
|
||||
import org.gradle.api.logging.Logger
|
||||
import org.gradle.api.plugins.JavaPluginExtension
|
||||
import org.gradle.api.provider.Property
|
||||
import org.gradle.api.provider.Provider
|
||||
|
@ -94,11 +95,23 @@ val ProjectLayout.cache: Path
|
|||
get() = projectDirectory.dir(".gradle/$CACHE_PATH").path
|
||||
|
||||
fun ProjectLayout.cacheDir(path: String) = projectDirectory.dir(".gradle/$CACHE_PATH").dir(path)
|
||||
|
||||
fun ProjectLayout.maybeInitSubmodules(offline: Boolean, logger: Logger) {
|
||||
if (offline) {
|
||||
Git.checkForGit()
|
||||
logger.lifecycle("Offline mode enabled, not initializing submodules. This may cause problems if submodules are not already initialized.")
|
||||
} else {
|
||||
initSubmodules()
|
||||
}
|
||||
}
|
||||
|
||||
fun ProjectLayout.initSubmodules() {
|
||||
Git.checkForGit()
|
||||
Git(projectDirectory.path)("submodule", "update", "--init").executeOut()
|
||||
}
|
||||
|
||||
fun Project.offlineMode(): Boolean = gradle.startParameter.isOffline
|
||||
|
||||
fun <T : FileSystemLocation> Provider<out T>.fileExists(project: Project): Provider<out T?> {
|
||||
return flatMap { project.provider { it.takeIf { f -> f.path.exists() } } }
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue