(Feat): Initial Commit, Termdoku

This commit is contained in:
2025-11-25 21:09:27 +00:00
commit f6933958e2
40 changed files with 5755 additions and 0 deletions

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

@@ -0,0 +1,68 @@
package config
import (
"errors"
"io/fs"
"os"
"path/filepath"
"gopkg.in/yaml.v3"
)
type Config struct {
Theme string `yaml:"theme"`
AutoCheck bool `yaml:"autoCheck"`
TimerEnabled bool `yaml:"timerEnabled"`
Bindings map[string][]string `yaml:"bindings"`
}
func Default() Config {
return Config{
Theme: "dark",
AutoCheck: true,
TimerEnabled: true,
Bindings: map[string][]string{},
}
}
func path() (string, error) {
h, err := os.UserHomeDir()
if err != nil {
return "", err
}
return filepath.Join(h, ".termdoku", "config.yaml"), nil
}
func Load() (Config, error) {
cfg := Default()
p, err := path()
if err != nil {
return cfg, err
}
b, err := os.ReadFile(p)
if err != nil {
if errors.Is(err, fs.ErrNotExist) {
return cfg, nil
}
return cfg, err
}
if err := yaml.Unmarshal(b, &cfg); err != nil {
return cfg, err
}
return cfg, nil
}
func Save(cfg Config) error {
p, err := path()
if err != nil {
return err
}
if err := os.MkdirAll(filepath.Dir(p), 0o755); err != nil {
return err
}
data, err := yaml.Marshal(cfg)
if err != nil {
return err
}
return os.WriteFile(p, data, 0o644)
}