package main import ( "log" "slices" "sync" "time" "src.opensuse.org/autogits/common" ) var WatchedRepos []string var mutex sync.Mutex var StatusUpdateCh chan *common.BuildResultList func WatchObsProject(obs common.ObsStatusFetcherWithState, ObsProject string) { old_state := "" mutex.Lock() if pos, found := slices.BinarySearch(WatchedRepos, ObsProject); found { mutex.Unlock() return } else { WatchedRepos = slices.Insert(WatchedRepos, pos, ObsProject) mutex.Unlock() } for { state, err := obs.BuildStatusWithState(ObsProject, old_state) if err != nil { log.Println(" *** Error fetching build for", ObsProject, err) time.Sleep(time.Minute) } else { old_state = state.State StatusUpdateCh <- state } } }