Use lazy copy for annotations

This commit is contained in:
Nikola Jokic
2026-07-23 17:26:18 +02:00
parent ac2864816d
commit ab1c70d8e3
8 changed files with 364 additions and 170 deletions
+14 -4
View File
@@ -16,21 +16,31 @@ func FilterLabels(labels map[string]string, filter string) map[string]string {
type once[T client.Object] struct {
value T
fn func(T) *T
fn func() T
done bool
}
func (o *once[T]) Do(f func() T) T {
func newOnce[T client.Object](fn func() T) *once[T] {
return &once[T]{
fn: fn,
}
}
func (o *once[T]) Do() T {
if !o.done {
o.value = f()
o.value = o.fn()
o.done = true
}
return o.value
}
func (o *once[T]) Get() T {
if !o.done {
if !o.Called() {
panic("not done")
}
return o.value
}
func (o *once[T]) Called() bool {
return o.done
}