Add odidere command
This commit is contained in:
83
cmd/odidere/main.go
Normal file
83
cmd/odidere/main.go
Normal file
@@ -0,0 +1,83 @@
|
|||||||
|
// Command odidere serves the odidere voice assistant API.
|
||||||
|
// It provides STT, LLM, and TTS orchestration via HTTP endpoints.
|
||||||
|
// See package service for the main orchestration logic and package
|
||||||
|
// config for configuration options.
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"flag"
|
||||||
|
"log/slog"
|
||||||
|
"os"
|
||||||
|
"runtime/debug"
|
||||||
|
|
||||||
|
"github.com/chimerical-llc/odidere/internal/config"
|
||||||
|
"github.com/chimerical-llc/odidere/internal/service"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
var cfgPath = flag.String(
|
||||||
|
"c", "", "path to configuration file (required)",
|
||||||
|
)
|
||||||
|
flag.Parse()
|
||||||
|
|
||||||
|
var log = slog.New(slog.NewTextHandler(
|
||||||
|
os.Stderr,
|
||||||
|
&slog.HandlerOptions{
|
||||||
|
AddSource: true,
|
||||||
|
Level: slog.LevelDebug,
|
||||||
|
},
|
||||||
|
))
|
||||||
|
if *cfgPath == "" {
|
||||||
|
log.Error("missing config path")
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Log build info.
|
||||||
|
bi, ok := debug.ReadBuildInfo()
|
||||||
|
if ok {
|
||||||
|
var commit, time string
|
||||||
|
for _, s := range bi.Settings {
|
||||||
|
switch s.Key {
|
||||||
|
case "vcs.revision":
|
||||||
|
commit = s.Value
|
||||||
|
case "vcs.time":
|
||||||
|
time = s.Value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
log.Debug(
|
||||||
|
"odidered",
|
||||||
|
slog.Group(
|
||||||
|
"build",
|
||||||
|
slog.String("commit", commit),
|
||||||
|
slog.String("time", time),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
cfg, err := config.Load(*cfgPath)
|
||||||
|
if err != nil {
|
||||||
|
log.Error(
|
||||||
|
"failed to load config",
|
||||||
|
slog.Any("error", err),
|
||||||
|
)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
svc, err := service.New(cfg, log)
|
||||||
|
if err != nil {
|
||||||
|
log.Error(
|
||||||
|
"failed to create service",
|
||||||
|
slog.Any("error", err),
|
||||||
|
)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := svc.Run(context.Background()); err != nil {
|
||||||
|
log.Error(
|
||||||
|
"failed to run",
|
||||||
|
slog.Any("error", err),
|
||||||
|
)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user