Skip to content

Commit

Permalink
PluginVerifier doesn't honor gradle offline mode. #1820
Browse files Browse the repository at this point in the history
  • Loading branch information
hsz committed Nov 29, 2024
1 parent abfad2a commit 5a33c4f
Show file tree
Hide file tree
Showing 7 changed files with 34 additions and 7 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
- Exclude `kotlin-stdlib` and `kotlinx-coroutines` transitive dependencies in various variants from IntelliJ Platform dependencies. JetBrains/intellij-platform-gradle-plugin#1817
- Can't find `performanceTesting.jar` when building against Android Studio 242+. JetBrains/intellij-platform-gradle-plugin#1738
- Custom `runIde` task do not find the right runtime, if `useInstaller` is `false`. JetBrains/intellij-platform-gradle-plugin#1827
- PluginVerifier doesn't honor gradle offline mode. JetBrains/intellij-platform-gradle-plugin#1820

## [2.1.0]

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import org.gradle.api.initialization.resolve.RulesMode
import org.gradle.api.model.ObjectFactory
import org.gradle.api.provider.Provider
import org.gradle.api.provider.ProviderFactory
import org.gradle.api.resources.ResourceHandler
import org.gradle.internal.os.OperatingSystem
import org.gradle.kotlin.dsl.*
import org.jetbrains.intellij.platform.gradle.*
Expand Down Expand Up @@ -60,6 +61,7 @@ class IntelliJPlatformDependenciesHelper(
private val layout: ProjectLayout,
private val objects: ObjectFactory,
private val providers: ProviderFactory,
private val resources: ResourceHandler,
private val rootProjectDirectory: Path,
private val metadataRulesModeProvider: Provider<RulesMode>,
) {
Expand Down Expand Up @@ -591,6 +593,8 @@ class IntelliJPlatformDependenciesHelper(
providers.of(ProductReleasesValueSource::class.java) {
parameters.jetbrainsIdesUrl = providers[GradleProperties.ProductsReleasesJetBrainsIdesUrl]
parameters.androidStudioUrl = providers[GradleProperties.ProductsReleasesAndroidStudioUrl]
parameters.jetbrainsIdes = parameters.jetbrainsIdesUrl.map { resources.resolveUrl(it) }
parameters.androidStudio = parameters.androidStudioUrl.map { resources.resolveUrl(it) }

parameters(configure)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ abstract class IntelliJPlatformBasePlugin : Plugin<Project> {
}

val dependenciesHelper = with(project) {
IntelliJPlatformDependenciesHelper(configurations, dependencies, layout, objects, providers, rootProjectPath, project.settings.dependencyResolutionManagement.rulesMode)
IntelliJPlatformDependenciesHelper(configurations, dependencies, layout, objects, providers, resources, rootProjectPath, project.settings.dependencyResolutionManagement.rulesMode)
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -188,7 +188,7 @@ abstract class IntelliJPlatformModulePlugin : Plugin<Project> {

// TODO: share with Base plugin?
val dependenciesHelper = with(project) {
IntelliJPlatformDependenciesHelper(configurations, dependencies, layout, objects, providers, rootProjectPath, project.settings.dependencyResolutionManagement.rulesMode)
IntelliJPlatformDependenciesHelper(configurations, dependencies, layout, objects, providers, resources, rootProjectPath, project.settings.dependencyResolutionManagement.rulesMode)
}

IntelliJPlatformTestingExtension.register(project, dependenciesHelper, target = project)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ package org.jetbrains.intellij.platform.gradle.providers

import kotlinx.serialization.Serializable
import nl.adaptivity.xmlutil.serialization.XmlSerialName
import org.gradle.api.file.RegularFileProperty
import org.gradle.api.provider.ListProperty
import org.gradle.api.provider.Property
import org.gradle.api.provider.ValueSource
Expand All @@ -22,8 +23,8 @@ import org.jetbrains.intellij.platform.gradle.tasks.VerifyPluginTask
import org.jetbrains.intellij.platform.gradle.toIntelliJPlatformType
import org.jetbrains.intellij.platform.gradle.utils.Logger
import org.jetbrains.intellij.platform.gradle.utils.Version
import org.jetbrains.intellij.platform.gradle.utils.asPath
import org.jetbrains.intellij.platform.gradle.utils.toVersion
import java.net.URL

/**
* Provides a complete list of binary IntelliJ Platform product releases matching the given [FilterParameters] criteria.
Expand All @@ -38,6 +39,20 @@ import java.net.URL
abstract class ProductReleasesValueSource : ValueSource<List<String>, ProductReleasesValueSource.Parameters> {

interface Parameters : FilterParameters {
/**
* A file containing the XML with all available JetBrains IDEs releases.
*
* @see jetbrainsIdesUrl
*/
val jetbrainsIdes: RegularFileProperty

/**
* A file containing the XML with all available Android Studio releases.
*
* @see androidStudioUrl
*/
val androidStudio: RegularFileProperty

/**
* The URL to the resource containing the XML with all JetBrains IDEs releases.
*
Expand Down Expand Up @@ -88,8 +103,8 @@ abstract class ProductReleasesValueSource : ValueSource<List<String>, ProductRel
override fun obtain() = with(parameters) {
val jetbrainsIdesReleases = jetbrainsIdesUrl.orNull
?.also { log.info("Reading JetBrains IDEs releases from: $it") }
?.let { URL(it).readText() }
?.let { decode<JetBrainsIdesReleases>(it) }
?.let { jetbrainsIdes.orNull }
?.let { decode<JetBrainsIdesReleases>(it.asPath) }
?.let {
sequence {
it.products.forEach { product ->
Expand Down Expand Up @@ -126,8 +141,8 @@ abstract class ProductReleasesValueSource : ValueSource<List<String>, ProductRel

val androidStudioReleases = androidStudioUrl.orNull
?.also { log.info("Reading Android Studio releases from: $it") }
?.let { URL(it).readText() }
?.let { decode<AndroidStudioReleases>(it) }
?.let { androidStudio.orNull }
?.let { decode<AndroidStudioReleases>(it.asPath) }
?.items
?.mapNotNull { item ->
val channel = runCatching { Channel.valueOf(item.channel.uppercase()) }.getOrNull() ?: return@mapNotNull null
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import org.jetbrains.intellij.platform.gradle.models.ProductRelease
import org.jetbrains.intellij.platform.gradle.providers.ProductReleasesValueSource
import org.jetbrains.intellij.platform.gradle.toIntelliJPlatformType
import org.jetbrains.intellij.platform.gradle.utils.extensionProvider
import org.jetbrains.intellij.platform.gradle.utils.resolveUrl

/**
* Prints the list of binary product releases that, by default, match the currently selected IntelliJ Platform along
Expand Down Expand Up @@ -56,6 +57,8 @@ abstract class PrintProductsReleasesTask : DefaultTask(), ProductReleasesValueSo
project.providers.of(ProductReleasesValueSource::class.java) {
parameters.jetbrainsIdesUrl = project.providers[GradleProperties.ProductsReleasesJetBrainsIdesUrl]
parameters.androidStudioUrl = project.providers[GradleProperties.ProductsReleasesAndroidStudioUrl]
parameters.jetbrainsIdes = parameters.jetbrainsIdesUrl.map { project.resources.resolveUrl(it) }
parameters.androidStudio = parameters.androidStudioUrl.map { project.resources.resolveUrl(it) }

parameters.sinceBuild = this@registerTask.sinceBuild
parameters.untilBuild = this@registerTask.untilBuild
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import org.gradle.api.internal.GradleInternal
import org.gradle.api.plugins.PluginManager
import org.gradle.api.provider.Property
import org.gradle.api.provider.Provider
import org.gradle.api.resources.ResourceHandler
import org.gradle.kotlin.dsl.the
import org.jetbrains.intellij.platform.gradle.Constants
import org.jetbrains.intellij.platform.gradle.Constants.Configurations
Expand Down Expand Up @@ -136,3 +137,6 @@ val Project.extensionProvider

internal val PluginManager.isModule
get() = hasPlugin(Plugins.MODULE) && !hasPlugin(Plugin.ID)

// TODO: migrate to `project.resources.binary` whenever it's available. Ref: https://github.com/gradle/gradle/issues/25237
internal fun ResourceHandler.resolveUrl(url: String) = text.fromUri(url).asFile("UTF-8")

0 comments on commit 5a33c4f

Please sign in to comment.