40 lines
752 B
Go
40 lines
752 B
Go
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
|
|
}
|
|
}
|
|
}
|