grim/peacock

remove an uncessary debuging log output
draft
2018-05-27, Gary Kramlich
94a9a8ebb14c
remove an uncessary debuging log output
package main
import (
"fmt"
"os"
"os/signal"
"runtime/debug"
"sync"
"syscall"
"github.com/aphistic/gomol"
"github.com/jinzhu/gorm"
"bitbucket.org/rw_grim/peacock/config"
"bitbucket.org/rw_grim/peacock/db"
"bitbucket.org/rw_grim/peacock/logging"
"bitbucket.org/rw_grim/peacock/patreon"
"bitbucket.org/rw_grim/peacock/server"
"bitbucket.org/rw_grim/peacock/service"
)
func setupServices(db *gorm.DB) error {
cfg := config.Get()
services := map[string]service.Service{
"patreon": &patreon.Patreon{},
}
serviceRes := make(chan error)
setupRes := make(chan error)
wg := sync.WaitGroup{}
// results processor
go func(serviceRes, setupRes chan error) {
var serviceErr error
for err := range serviceRes {
if err != nil {
gomol.Warnf("error: %s", err)
if serviceErr == nil {
serviceErr = err
}
}
}
setupRes <- serviceErr
close(setupRes)
}(serviceRes, setupRes)
// initialize all the services at once
for name, service := range services {
wg.Add(1)
go func(res chan error) {
defer wg.Done()
gomol.Infof("initializing service %s", name)
res <- service.Initialize(db, cfg)
}(serviceRes)
}
// wait for the initializers to finish
wg.Wait()
// close the overall initialization result channel
close(serviceRes)
return <-setupRes
}
func gomain() int {
err := logging.Start()
if err != nil {
fmt.Printf("error: %s\n", err)
return 1
}
defer logging.Stop()
// setup the database
db := db.Get()
defer db.Close()
// setup our services
err = setupServices(db)
if err != nil {
fmt.Printf("error: %s\n", err)
return 1
}
// setup a signal channel
signalChan := make(chan os.Signal, 1)
signal.Notify(signalChan, syscall.SIGINT, syscall.SIGTERM)
// setup the error channel
errChan := make(chan error, 10)
// run the api
go func() {
srv := server.New(errChan)
defer srv.Stop()
srv.Start()
}()
for {
select {
case err := <-errChan:
if err != nil {
gomol.Fatalf("error: %s", err)
return 1
}
case s := <-signalChan:
gomol.Warnf("Captured %v. Exiting...", s)
return 0
}
}
}
func main() {
exitCode := 0
defer func() {
if r := recover(); r != nil {
fmt.Printf("panic: %s\n%s\n", r, debug.Stack())
}
os.Exit(exitCode)
}()
exitCode = gomain()
}