5d0926b91ad71408c1d73b3718342672e5d69c22

Author
TheEdgeOfRage <git@theedgeofrage.com>
Committer
TheEdgeOfRage <git@theedgeofrage.com>
Date

Message

config: move content path options into shared Config

Diff

 1diff --git a/cmd/jp/main.go b/cmd/jp/main.go
 2index 1b4bb2271a5ceb72e6fd205420deb0abdd20fc66..f2b292ea93ac9b4dd5fd2eb40c86f07893253223 100644
 3--- a/cmd/jp/main.go
 4+++ b/cmd/jp/main.go
 5@@ -67,17 +67,11 @@ func parseOpts[T any](name string, args []string) *T {
 6 	return nil
 7 }
 8 
 9-type runOptions struct {
10-	config.Config
11-	MapPath  string `long:"map" env:"JP_MAP_PATH" default:"assets/maps/city.json" description:"path to the city map JSON"`
12-	Personas string `long:"persona-dir" env:"JP_PERSONA_DIR" default:"assets/personas" description:"directory of persona JSON files"`
13-}
14-
15 func runCmd(args []string) {
16-	opts := parseOpts[runOptions]("run", args)
17-	cfg := opts.Config
18+	opts := parseOpts[config.Config]("run", args)
19+	cfg := *opts
20 
21-	data, err := os.ReadFile(opts.MapPath)
22+	data, err := os.ReadFile(cfg.MapPath)
23 	if err != nil {
24 		fatalf("read map: %v", err)
25 	}
26@@ -85,7 +79,7 @@ func runCmd(args []string) {
27 	if err != nil {
28 		fatalf("load map: %v", err)
29 	}
30-	personas, err := persona.LoadDir(opts.Personas)
31+	personas, err := persona.LoadDir(cfg.Personas)
32 	if err != nil {
33 		fatalf("load personas: %v", err)
34 	}
35diff --git a/internal/config/config.go b/internal/config/config.go
36index be3225dcbf9ed198b975c6e43d26c8610045f872..c0027bb55b90914609c6644edb11b5ec7eed6a53 100644
37--- a/internal/config/config.go
38+++ b/internal/config/config.go
39@@ -12,4 +12,7 @@ type Config struct {
40 	STTURL        string `long:"stt-url" env:"JP_STT_URL" default:"http://127.0.0.1:8178/inference" description:"Whisper inference URL"`
41 	STTLanguage   string `long:"stt-language" env:"JP_STT_LANGUAGE" default:"auto" description:"Optional Whisper request language"`
42 	RecordCommand string `long:"record-command" default:"arecord" description:"Recorder command for 16kHz mono S16_LE WAV capture"`
43+
44+	MapPath  string `long:"map" env:"JP_MAP_PATH" default:"assets/maps/city.json" description:"path to the city map JSON"`
45+	Personas string `long:"persona-dir" env:"JP_PERSONA_DIR" default:"assets/personas" description:"directory of persona JSON files"`
46 }