This commit is contained in:
every_holiday
2026-06-22 22:29:10 +09:00
parent 072e819b0b
commit cbd8911c25
18 changed files with 621 additions and 40 deletions

58
internal/config/config.go Normal file
View File

@@ -0,0 +1,58 @@
package config
import (
"bufio"
"os"
"strconv"
"strings"
)
type Config struct {
OSC OSCConfig
}
type OSCConfig struct {
Host string
Port int
}
func Load(path string) (*Config, error) {
cfg := &Config{OSC: OSCConfig{Host: "127.0.0.1", Port: 9001}}
file, err := os.Open(path)
if err != nil {
return cfg, nil
}
defer file.Close()
var section string
scanner := bufio.NewScanner(file)
for scanner.Scan() {
line := strings.TrimSpace(scanner.Text())
if line == "" || strings.HasPrefix(line, "#") {
continue
}
if strings.HasPrefix(line, "[") && strings.HasSuffix(line, "]") {
section = strings.Trim(line, "[]")
continue
}
parts := strings.SplitN(line, "=", 2)
if len(parts) != 2 {
continue
}
key := strings.TrimSpace(parts[0])
val := strings.TrimSpace(parts[1])
val = strings.Trim(val, "\"'")
if section == "osc" {
switch key {
case "host":
cfg.OSC.Host = val
case "port":
if n, err := strconv.Atoi(val); err == nil {
cfg.OSC.Port = n
}
}
}
}
return cfg, scanner.Err()
}

View File

@@ -0,0 +1,33 @@
package config
import (
"os"
"path/filepath"
"testing"
)
func TestLoadDefaultsWhenMissing(t *testing.T) {
cfg, err := Load("does-not-exist.toml")
if err != nil {
t.Fatalf("Load returned error: %v", err)
}
if cfg.OSC.Host != "127.0.0.1" || cfg.OSC.Port != 9001 {
t.Fatalf("unexpected defaults: %+v", cfg.OSC)
}
}
func TestLoadOSCValues(t *testing.T) {
dir := t.TempDir()
path := filepath.Join(dir, "config.toml")
if err := os.WriteFile(path, []byte("[osc]\nhost = \"0.0.0.0\"\nport = 9002\n"), 0o600); err != nil {
t.Fatalf("WriteFile: %v", err)
}
cfg, err := Load(path)
if err != nil {
t.Fatalf("Load returned error: %v", err)
}
if cfg.OSC.Host != "0.0.0.0" || cfg.OSC.Port != 9002 {
t.Fatalf("unexpected values: %+v", cfg.OSC)
}
}