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 configDir string // normally ~/.config/forge 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) GetConfigDir() string { return f.configDir } 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) }