diff options
| author | Jeff Carr <[email protected]> | 2024-11-15 17:38:24 -0600 |
|---|---|---|
| committer | Jeff Carr <[email protected]> | 2024-11-15 17:38:24 -0600 |
| commit | d6e04824652f1a0b97c0b243eeb25ceefba0c98d (patch) | |
| tree | 7a534e1443144c2e9f6c1e32290abe4538190a14 /packages.go | |
| parent | 5ef3669e7d35d6b281e2c4b5972fa9958c30f74c (diff) | |
enforce unique names
Signed-off-by: Jeff Carr <[email protected]>
Diffstat (limited to 'packages.go')
| -rw-r--r-- | packages.go | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/packages.go b/packages.go index 1436c45..aeee7ea 100644 --- a/packages.go +++ b/packages.go @@ -70,12 +70,33 @@ func (r *Packages) SortByName() *PackageIterator { return iterator } -// should this be a pointer? what really happens here? -func (r *Packages) Append(newP *Package) { +// enforces no duplicate package names +func (r *Packages) Append(newP *Package) bool { lock.Lock() defer lock.Unlock() + for _, p := range r.Packages { + if p.Name == newP.Name { + return false + } + } + r.Packages = append(r.Packages, newP) + return true +} + +// find a package by name +func (r *Packages) FindByName(name string) *Package { + lock.Lock() + defer lock.Unlock() + + for _, p := range r.Packages { + if p.Name == name { + return p + } + } + + return nil } type ByName []*Package |
