initial commit
This commit is contained in:
26
cmd/config.go
Normal file
26
cmd/config.go
Normal file
@ -0,0 +1,26 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
gocron_server "github.com/strnophix/gocron-server/pkg"
|
||||
)
|
||||
|
||||
type ServerConfig struct {
|
||||
Host string `toml:"host"`
|
||||
}
|
||||
|
||||
type UnitConfig struct {
|
||||
Name string `toml:"name"`
|
||||
Command string `toml:"command"`
|
||||
Cron string `toml:"cron"`
|
||||
}
|
||||
|
||||
func (u *UnitConfig) ToSchedulerUnit() *gocron_server.SchedulerUnit {
|
||||
cmd := gocron_server.NewUnitExecCmd(u.Command)
|
||||
unit := gocron_server.NewSchedulerUnit(u.Name, u.Cron, cmd)
|
||||
return unit
|
||||
}
|
||||
|
||||
type Config struct {
|
||||
Server ServerConfig `toml:"server"`
|
||||
Unit []UnitConfig `toml:"unit"`
|
||||
}
|
56
cmd/main.go
Normal file
56
cmd/main.go
Normal file
@ -0,0 +1,56 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"log"
|
||||
"net"
|
||||
"os"
|
||||
|
||||
"github.com/BurntSushi/toml"
|
||||
gocron_server "github.com/strnophix/gocron-server/pkg"
|
||||
pb "github.com/strnophix/gocron-server/pkg/proto"
|
||||
"google.golang.org/grpc"
|
||||
"google.golang.org/grpc/reflection"
|
||||
)
|
||||
|
||||
func main() {
|
||||
log.SetFlags(log.LstdFlags | log.Lshortfile)
|
||||
|
||||
if len(os.Args) < 2 {
|
||||
log.Fatalln("Expected a gocron-server config as the first argument.")
|
||||
}
|
||||
|
||||
cfgPath := os.Args[1]
|
||||
cfg := Config{}
|
||||
_, err := toml.DecodeFile(cfgPath, &cfg)
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
|
||||
l, err := net.Listen("tcp", cfg.Server.Host)
|
||||
if err != nil {
|
||||
log.Fatalf("Failed to start server on %s: %v", cfg.Server.Host, err)
|
||||
}
|
||||
|
||||
log.Printf("gocron-server is running on %s\n", cfg.Server.Host)
|
||||
|
||||
gs := grpc.NewServer()
|
||||
|
||||
s := gocron_server.NewSchedulerService()
|
||||
defer s.Shutdown()
|
||||
|
||||
for _, unitCfg := range cfg.Unit {
|
||||
unit := unitCfg.ToSchedulerUnit()
|
||||
err = s.AddUnit(unit)
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
log.Printf("Succesfully added unit %s\n", unit.Name)
|
||||
}
|
||||
|
||||
pb.RegisterSchedulerServer(gs, s)
|
||||
reflection.Register(gs)
|
||||
|
||||
if err := gs.Serve(l); err != nil {
|
||||
log.Fatalf("Failed to serve: %v", err)
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user