Inital commit: skeleton of runner logic
This commit is contained in:
@@ -0,0 +1,85 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"git.ohea.xyz/cursorius/runner/config"
|
||||
"github.com/op/go-logging"
|
||||
"nhooyr.io/websocket"
|
||||
"nhooyr.io/websocket/wsjson"
|
||||
"os"
|
||||
"time"
|
||||
)
|
||||
|
||||
var log = logging.MustGetLogger("cursorius-server")
|
||||
|
||||
type Register struct {
|
||||
Secret string
|
||||
Id string
|
||||
Tags []string
|
||||
}
|
||||
|
||||
type Job struct {
|
||||
URL *string
|
||||
Folder *string
|
||||
}
|
||||
|
||||
func main() {
|
||||
|
||||
var format = logging.MustStringFormatter(
|
||||
`%{color}%{time:15:04:05.000} %{level:.4s}:%{color:reset} %{message}`,
|
||||
)
|
||||
|
||||
backend := logging.NewLogBackend(os.Stderr, "", 0)
|
||||
backendFormatter := logging.NewBackendFormatter(backend, format)
|
||||
backendLeveled := logging.AddModuleLevel(backendFormatter)
|
||||
backendLeveled.SetLevel(logging.DEBUG, "")
|
||||
|
||||
logging.SetBackend(backendLeveled)
|
||||
|
||||
log.Info("Starting cursorius-runner")
|
||||
|
||||
configData, isNew, err := config.GetConfig()
|
||||
if err != nil {
|
||||
log.Fatalf("Could not get configuration: %v", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
if isNew {
|
||||
log.Infof("New config file created at %s, please update and relaunch", *configData.ConfigFile)
|
||||
os.Exit(0)
|
||||
}
|
||||
|
||||
registrationData := Register{
|
||||
Secret: configData.Config.Secret,
|
||||
Id: configData.Config.Id,
|
||||
Tags: configData.Config.Tags,
|
||||
}
|
||||
|
||||
connectString := fmt.Sprintf("ws://%v/runner", configData.Config.ServerUrl)
|
||||
|
||||
ctx, cancel := context.WithTimeout(context.Background(), time.Minute)
|
||||
defer cancel()
|
||||
|
||||
c, _, err := websocket.Dial(ctx, connectString, nil)
|
||||
if err != nil {
|
||||
log.Fatalf("Could not connect to server at \"%v\", %v", connectString, err)
|
||||
os.Exit(1)
|
||||
}
|
||||
defer c.Close(websocket.StatusInternalError, "the sky is falling")
|
||||
|
||||
err = wsjson.Write(ctx, c, registrationData)
|
||||
if err != nil {
|
||||
log.Fatalf("Could not send registration information to server: %v", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
for {
|
||||
var job Job
|
||||
err = wsjson.Read(ctx, c, &job)
|
||||
if err != nil {
|
||||
log.Fatalf("Could not receive from connection: %v", err)
|
||||
continue
|
||||
}
|
||||
log.Infof("Received job from server: %v", *job.URL)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user