initial commit

This commit is contained in:
2022-02-04 20:23:04 +01:00
parent 0c44f26522
commit 2b614f6bd3
21 changed files with 1236 additions and 1 deletions

26
cmd/config.go Normal file
View 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
View 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)
}
}