58 lines
1.1 KiB
Go
58 lines
1.1 KiB
Go
package gitpb
|
|
|
|
// this is becoming a standard format
|
|
// todo: autogenerate this from the .proto file?
|
|
|
|
import (
|
|
"time"
|
|
)
|
|
|
|
func (repo *Repo) DeleteGoDepByHash(hash string) *GoDep {
|
|
refslock.Lock()
|
|
defer refslock.Unlock()
|
|
|
|
for i, _ := range repo.GoDeps {
|
|
if repo.GoDeps[i].Hash == hash {
|
|
repo.GoDeps[i] = repo.GoDeps[len(repo.GoDeps)-1]
|
|
repo.GoDeps = repo.GoDeps[:len(repo.GoDeps)-1]
|
|
return nil
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// enforces no duplicate package names
|
|
func (repo *Repo) AppendGoDep(newP *GoDep) bool {
|
|
refslock.Lock()
|
|
defer refslock.Unlock()
|
|
|
|
for _, p := range repo.GoDeps {
|
|
if p.GoPath == newP.GoPath {
|
|
return false
|
|
}
|
|
}
|
|
|
|
repo.GoDeps = append(repo.GoDeps, newP)
|
|
return true
|
|
}
|
|
|
|
// returns time.Duration since last scan of go.sum & go.mod
|
|
func (repo *Repo) AgeGoDep() time.Duration {
|
|
t := time.Since(repo.LastGoDep.AsTime())
|
|
return t
|
|
}
|
|
|
|
// find a dependancy by the go path
|
|
func (repo *Repo) FindGoDepByPath(gopath string) *GoDep {
|
|
refslock.RLock()
|
|
defer refslock.RUnlock()
|
|
|
|
for _, p := range repo.GoDeps {
|
|
if p.GoPath == gopath {
|
|
return p
|
|
}
|
|
}
|
|
|
|
return nil
|
|
}
|