package hostbox import "strings" func retirementWithTimers(in RetirementInventory, timers []Artifact, requireInventory bool) (RetirementInventory, error) { in.Artifacts = append([]Artifact(nil), in.Artifacts...) for _, timer := range timers { found := false for _, retained := range in.Artifacts { if retained.Kind != ArtifactTimer || retained.Name != timer.Name { continue } row, registration, combined := strings.Cut(timer.RowID, "~") if !combined { row, registration = timer.RowID, timer.RowID } if retained.Root != timer.Root || retained.Owner != timer.Owner || retained.RowID != row || row != registration || timer.Dev != 0 || timer.Ino != 0 || timer.Type != 0 { return RetirementInventory{}, ErrTypedInventory } found = true } if !found { if requireInventory { return RetirementInventory{}, ErrTypedInventory } in.Artifacts = append(in.Artifacts, timer) } } return in, nil }