summaryrefslogtreecommitdiff
path: root/packages.go
diff options
context:
space:
mode:
Diffstat (limited to 'packages.go')
-rw-r--r--packages.go25
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