Settings Operations APIs

Some of the tools that are available on ConfigurationPhaseOperations are also available in the settings.gradle(.kts) files. They are:

When writing a settings plugin you can get access to them by

Usage as a plugin (recommended)
import org.ysb33r.grolifant.api.core.plugins.GrolifantSettingsPlugin (1)
import org.ysb33r.grolifant.api.core.settings.SettingsOperations

class MyPlugin implements Plugin<Settings> {
  void apply(Settings settings) {
    settings.plugin.apply(GrolifantSettingsPlugin) (2)

    final cpo = SettingsOperations.from(settings) (3)
  }
}
1 Required import
2 Install the core plugin.
3 How to get operations that can be used by settings.

Information about host operating system

You can get hold of this from settings

final os = SettingsOperations.from(settings).currentOS() (1)
1 See OperatingSystem for more details.

Manipulating the plugin classpath

You can get access to the plugin classpath for each project from a settings plugin via pluginClasspath().configure.

final grolifantOps = SettingsOperations.from(settings) (1)
final osa = grolifantOps.providerTools().named(OperatingSystemFamily, grolifantOps.currentOs().operatingSystemAttributeValue) (2)
grolifantOps.pluginClasspath().configure { (3)
    attributes.attribute( OperatingSystemFamily.OPERATING_SYSTEM_ATTRIBUTE, osa) (4)
}
1 Obtain an instance of ref:project-artifacts:attachment$-grolifant5-core/groovydoc/org/ysb33r/grolifant5/api/core/settings/SettingsOperations.html[SettingsOperations].
2 Create needed objects outside, because isolate projects might prevent them from being created inside the closure.
3 Obtain the configuration for buildscript.configurations.named('classpath') via pluginClasspath() and then pass a configurating Action or Closure. This applies it to every Project before evaluation starts.
4 Example of adding an attribute.