package me.eater.hefbrug.dsl.context.impl import me.eater.hefbrug.definition.impl.PackageDefinition import me.eater.hefbrug.dsl.context.DefinitionContext import me.eater.hefbrug.dsl.context.Emitter import me.eater.hefbrug.dsl.context.EmitterContext import me.eater.hefbrug.state.ExistenceStatus import me.eater.hefbrug.state.impl.PackageState class PackageContext(definition: PackageDefinition) : DefinitionContext(definition), Emitter by EmitterContext() { val id: String get() = state.id fun upgrade(upgrade: Boolean) { state.upgrade = upgrade } var ensure by proxy(state::status) val upgraded: Unit get() { state.upgrade = true } val held: Unit get() { state.upgrade = false } val installed: Unit get() { state.status = ExistenceStatus.Present } val absent: Unit get() { state.status = ExistenceStatus.Absent } var name: String by proxy(state::name) }