46 lines
1.1 KiB
Go
46 lines
1.1 KiB
Go
package forgepb
|
|
|
|
import (
|
|
sync "sync"
|
|
"time"
|
|
|
|
"go.wit.com/lib/protobuf/gitpb"
|
|
"go.wit.com/lib/protobuf/zoopb"
|
|
)
|
|
|
|
// maybe an interface someday?
|
|
type Forge struct {
|
|
// one-time initialized data
|
|
initOnce sync.Once
|
|
initErr error // init error, if any
|
|
goSrc string // the path to go/src
|
|
goWork bool // means the user is currently using a go.work file
|
|
Config *ForgeConfigs // config repos for readonly, private, etc
|
|
Repos *gitpb.Repos // the repo protobufs
|
|
Machine *zoopb.Machine // things for virtigo to track vm's
|
|
configSave bool // if you need to save the config because things changed
|
|
hasFullScan bool // track last scan so it can be throttled
|
|
fullscan time.Time // time of the last scan so it can be throttled
|
|
}
|
|
|
|
func (f *Forge) GetGoSrc() string {
|
|
return f.goSrc
|
|
}
|
|
|
|
func (f *Forge) IsGoWork() bool {
|
|
return f.goWork
|
|
}
|
|
|
|
func (f *Forge) HasFullScan() bool {
|
|
return f.Repos.HasFullScan
|
|
}
|
|
|
|
func (f *Forge) FullScanRan() {
|
|
f.fullscan = time.Now()
|
|
}
|
|
|
|
func (f *Forge) FullScanAge() time.Duration {
|
|
fs := f.Repos.FullScan.AsTime()
|
|
return time.Since(fs)
|
|
}
|