show-rss/src/cmd/main.go

29 lines
500 B
Go

package cmd
import (
"context"
"fmt"
"show-rss/src/pool"
)
func Main(ctx context.Context) error {
ctx, can := context.WithCancel(ctx)
defer can()
foos := map[string]func() error{
"server": func() error { return server(ctx) },
"cron": func() error { return cron(ctx) },
}
p := pool.New(len(foos))
defer p.Wait(ctx)
for k, foo := range foos {
foo := foo
if err := p.Go(ctx, k, foo); err != nil {
return fmt.Errorf("failed to go %s: %v", k, err)
}
}
return p.Wait(ctx)
}