Skip to content

Commit

Permalink
Remove OciImageDefinition.Variant(Scope).Layers
Browse files Browse the repository at this point in the history
  • Loading branch information
SgtSilvio committed Feb 1, 2025
1 parent 1603109 commit 6172bee
Show file tree
Hide file tree
Showing 7 changed files with 58 additions and 105 deletions.
8 changes: 3 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,11 +61,9 @@ oci {
entryPoint = listOf("java", "-jar")
entryPoint.add(tasks.jar.flatMap { it.archiveFileName })
}
layers {
layer("jar") {
contents {
from(tasks.jar)
}
layer("jar") {
contents {
from(tasks.jar)
}
}
}
Expand Down
8 changes: 3 additions & 5 deletions examples/java-app-groovy-dsl/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -35,11 +35,9 @@ oci {
entryPoint = ["java", "-jar"]
entryPoint.add(tasks.named("jar").flatMap { it.archiveFileName })
}
layers {
layer("app") {
contents {
from(tasks.named("jar"))
}
layer("main") {
contents {
from(tasks.named("jar"))
}
}
}
Expand Down
8 changes: 3 additions & 5 deletions examples/java-app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -35,11 +35,9 @@ oci {
entryPoint = listOf("java", "-jar")
entryPoint.add(tasks.jar.flatMap { it.archiveFileName })
}
layers {
layer("app") {
contents {
from(tasks.jar)
}
layer("main") {
contents {
from(tasks.jar)
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,12 +54,10 @@ internal class PublishMetadataTest {
config {
entryPoint.set(listOf("java", "-jar", "app.jar"))
}
layers {
layer("jar") {
contents {
from(tasks.jar)
rename(".*", "app.jar")
}
layer("jar") {
contents {
from(tasks.jar)
rename(".*", "app.jar")
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,12 +65,10 @@ internal class TestProject(projectDir: File) {
config {
entryPoint.set(listOf("java", "-jar", "app.jar"))
}
layers {
layer("jar") {
contents {
from(tasks.jar)
rename(".*", "app.jar")
}
layer("jar") {
contents {
from(tasks.jar)
rename(".*", "app.jar")
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,13 @@ interface OciImageDefinition : Named, CapabilityFactories {
interface Variant {
val dependencies: Dependencies
val config: Config
val layers: Layers
val layers: NamedDomainObjectList<Layer>

fun dependencies(configuration: Action<in Dependencies>)

fun config(configuration: Action<in Config>)
fun layers(configuration: Action<in Layers>)

fun layer(name: String, configuration: Action<in Layer>)

interface Dependencies : DependencyConstraintFactories {
val runtime: OciImageDependencyCollector<Unit>
Expand All @@ -58,12 +60,6 @@ interface OciImageDefinition : Named, CapabilityFactories {
val manifestDescriptorAnnotations: MapProperty<String, String>
}

interface Layers {
val list: NamedDomainObjectList<Layer>

fun layer(name: String, configuration: Action<in Layer>)
}

interface Layer : Named {
val metadata: Metadata

Expand All @@ -84,17 +80,11 @@ interface OciImageDefinition : Named, CapabilityFactories {
}

interface VariantScope {
val layers: Layers
val layers: NamedDomainObjectList<Layer>

fun dependencies(configuration: Action<in Variant.Dependencies>)
fun config(configuration: Action<in Variant.Config>)
fun layers(configuration: Action<in Layers>)

interface Layers {
val list: NamedDomainObjectList<Layer>

fun layer(name: String, configuration: Action<in Layer>)
}
fun layer(name: String, configuration: Action<in Layer>)

interface Layer : Named {
fun metadata(configuration: Action<in Variant.Layer.Metadata>)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,7 @@ internal abstract class OciImageDefinitionImpl @Inject constructor(
abstract class Variant @Inject constructor(
private val imageDefinition: OciImageDefinitionImpl,
platformOptional: Optional<Platform>,
objectFactory: ObjectFactory,
private val objectFactory: ObjectFactory,
providerFactory: ProviderFactory,
configurationContainer: ConfigurationContainer,
taskContainer: TaskContainer,
Expand Down Expand Up @@ -238,8 +238,7 @@ internal abstract class OciImageDefinitionImpl @Inject constructor(
entryPoint.convention(null)
arguments.convention(null)
}
final override val layers =
objectFactory.newInstance<Layers>(imageDefinition.name, Optional.ofNullable(platform))
final override val layers = objectFactory.namedDomainObjectList(OciImageDefinition.Variant.Layer::class)

init {
configuration.dependencies.addAllLater(dependencies.runtime.dependencies)
Expand All @@ -252,7 +251,7 @@ internal abstract class OciImageDefinitionImpl @Inject constructor(
name.set(project.name)
classifier.set(metadataTask.flatMap { it.classifier })
extension.set("json")
}) + layers.list.mapNotNull { layer ->
}) + layers.mapNotNull { layer ->
(layer as Layer).getTask()?.let { layerTask ->
LazyPublishArtifact(objectFactory).apply {
file.set(layerTask.flatMap { it.file })
Expand Down Expand Up @@ -297,7 +296,7 @@ internal abstract class OciImageDefinitionImpl @Inject constructor(
private fun createLayerMetadataList(
objectFactory: ObjectFactory,
providerFactory: ProviderFactory,
): Provider<List<OciLayerMetadata>> = providerFactory.provider { layers.list }.flatMap { layers ->
): Provider<List<OciLayerMetadata>> = providerFactory.provider { layers }.flatMap { layers ->
val listProperty = objectFactory.listProperty<OciLayerMetadata>()
for (layer in layers) {
layer as Layer
Expand All @@ -312,8 +311,17 @@ internal abstract class OciImageDefinitionImpl @Inject constructor(
final override fun config(configuration: Action<in OciImageDefinition.Variant.Config>) =
configuration.execute(config)

final override fun layers(configuration: Action<in OciImageDefinition.Variant.Layers>) =
configuration.execute(layers)
final override fun layer(name: String, configuration: Action<in OciImageDefinition.Variant.Layer>) =
configuration.execute(layer(name))

fun layer(name: String): Layer {
var layer = layers.findByName(name) as Layer?
if (layer == null) {
layer = objectFactory.newInstance<Layer>(name, imageDefinition.name, Optional.ofNullable(platform))
layers.add(layer)
}
return layer
}

abstract class Dependencies @Inject constructor(
objectFactory: ObjectFactory,
Expand All @@ -323,28 +331,6 @@ internal abstract class OciImageDefinitionImpl @Inject constructor(
final override val runtime = objectFactory.newInstance<OciImageDependencyCollectorImpl.Default>()
}

abstract class Layers @Inject constructor(
private val imageDefName: String,
platform: Optional<Platform>,
private val objectFactory: ObjectFactory,
) : OciImageDefinition.Variant.Layers {

private val platform: Platform? = platform.orElse(null)
final override val list = objectFactory.namedDomainObjectList(OciImageDefinition.Variant.Layer::class)

final override fun layer(name: String, configuration: Action<in OciImageDefinition.Variant.Layer>) =
configuration.execute(layer(name))

fun layer(name: String): Layer {
var layer = list.findByName(name) as Layer?
if (layer == null) {
layer = objectFactory.newInstance<Layer>(name, imageDefName, Optional.ofNullable(platform))
list.add(layer)
}
return layer
}
}

abstract class Layer @Inject constructor(
private val name: String,
private val imageDefName: String,
Expand Down Expand Up @@ -454,46 +440,33 @@ internal abstract class OciImageDefinitionImpl @Inject constructor(

abstract class VariantScope @Inject constructor(
private val platformFilter: PlatformFilter,
imageDefName: String,
variants: DomainObjectSet<Variant>,
objectFactory: ObjectFactory,
private val imageDefName: String,
allVariants: DomainObjectSet<Variant>,
private val objectFactory: ObjectFactory,
) : OciImageDefinition.VariantScope {

private val filteredVariants = when (platformFilter) {
AllPlatformFilter -> variants
else -> variants.matching { variant -> platformFilter.matches(variant.platform) }
private val variants = when (platformFilter) {
AllPlatformFilter -> allVariants
else -> allVariants.matching { variant -> platformFilter.matches(variant.platform) }
}
final override val layers = objectFactory.newInstance<Layers>(platformFilter, imageDefName, filteredVariants)
final override val layers = objectFactory.namedDomainObjectList(OciImageDefinition.VariantScope.Layer::class)

final override fun dependencies(configuration: Action<in OciImageDefinition.Variant.Dependencies>) =
filteredVariants.configureEach { dependencies(configuration) }
variants.configureEach { dependencies(configuration) }

final override fun config(configuration: Action<in OciImageDefinition.Variant.Config>) =
filteredVariants.configureEach { config(configuration) }

final override fun layers(configuration: Action<in OciImageDefinition.VariantScope.Layers>) =
configuration.execute(layers)

abstract class Layers @Inject constructor(
private val platformFilter: PlatformFilter,
private val imageDefName: String,
private val variants: DomainObjectSet<Variant>,
private val objectFactory: ObjectFactory,
) : OciImageDefinition.VariantScope.Layers {
variants.configureEach { config(configuration) }

final override val list = objectFactory.namedDomainObjectList(OciImageDefinition.VariantScope.Layer::class)
final override fun layer(name: String, configuration: Action<in OciImageDefinition.VariantScope.Layer>) =
configuration.execute(layer(name))

final override fun layer(name: String, configuration: Action<in OciImageDefinition.VariantScope.Layer>) =
configuration.execute(layer(name))

fun layer(name: String): Layer {
var layer = list.findByName(name) as Layer?
if (layer == null) {
layer = objectFactory.newInstance<Layer>(name, platformFilter, imageDefName, variants)
list.add(layer)
}
return layer
fun layer(name: String): Layer {
var layer = layers.findByName(name) as Layer?
if (layer == null) {
layer = objectFactory.newInstance<Layer>(name, platformFilter, imageDefName, variants)
layers.add(layer)
}
return layer
}

abstract class Layer @Inject constructor(
Expand All @@ -511,7 +484,7 @@ internal abstract class OciImageDefinitionImpl @Inject constructor(
final override fun getName() = name

final override fun metadata(configuration: Action<in OciImageDefinition.Variant.Layer.Metadata>) =
variants.configureEach { layers.layer(name).metadata(configuration) }
variants.configureEach { layer(name).metadata(configuration) }

final override fun contents(configuration: Action<in OciCopySpec>) {
if (externalTask != null) {
Expand All @@ -524,14 +497,14 @@ internal abstract class OciImageDefinitionImpl @Inject constructor(
}
task.contents(configuration)
variants.configureEach {
layers.layer(name).contentsFromVariantScope(configuration, task)
layer(name).contentsFromVariantScope(configuration, task)
}
}

final override fun contents(task: TaskProvider<out OciLayerTask>) {
externalTask = if (task == this.task) null else task
variants.configureEach {
layers.layer(name).contents(task)
layer(name).contents(task)
}
}
}
Expand Down

0 comments on commit 6172bee

Please sign in to comment.