Project Initialisation

added Project files
This commit is contained in:
2026-05-03 21:26:10 +02:00
commit dcafc1e7c1
12 changed files with 2029 additions and 0 deletions

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

@@ -0,0 +1,110 @@
package config
import (
"os"
"path/filepath"
"pulsegate-gui/internal/models"
"gopkg.in/yaml.v3"
)
func DefaultPath() string {
configDir, err := os.UserConfigDir()
if err != nil {
home, _ := os.UserHomeDir()
return filepath.Join(home, ".config", "pulsegate", "config.yaml")
}
return filepath.Join(configDir, "pulsegate", "config.yaml")
}
func EnsureExists(path string) error {
if _, err := os.Stat(path); err == nil {
return nil
}
if err := os.MkdirAll(filepath.Dir(path), 0700); err != nil {
return err
}
cfg := models.AppConfig{
Settings: models.Settings{
Theme: "neon-green",
Terminal: models.TerminalSettings{
Term: "xterm-256color",
EnableKittyFix: true,
},
},
Servers: []models.Server{
{
Name: "Example Server",
Host: "10.0.0.10",
User: "root",
Port: 22,
Group: "Homelab",
Auth: "key",
Key: "~/.ssh/id_ed25519",
KittyFix: true,
},
},
QuickCommands: []models.QuickCommand{
{Name: "Disk Usage", Command: "df -h"},
{Name: "RAM Usage", Command: "free -h"},
{Name: "Uptime", Command: "uptime"},
},
}
return Save(path, cfg)
}
func Load(path string) (models.AppConfig, error) {
var cfg models.AppConfig
data, err := os.ReadFile(path)
if err != nil {
return cfg, err
}
if err := yaml.Unmarshal(data, &cfg); err != nil {
return cfg, err
}
normalize(&cfg)
return cfg, nil
}
func Save(path string, cfg models.AppConfig) error {
normalize(&cfg)
data, err := yaml.Marshal(&cfg)
if err != nil {
return err
}
if err := os.MkdirAll(filepath.Dir(path), 0700); err != nil {
return err
}
return os.WriteFile(path, data, 0600)
}
func normalize(cfg *models.AppConfig) {
if cfg.Settings.Theme == "" {
cfg.Settings.Theme = "neon-green"
}
if cfg.Settings.Terminal.Term == "" {
cfg.Settings.Terminal.Term = "xterm-256color"
}
for i := range cfg.Servers {
if cfg.Servers[i].Port == 0 {
cfg.Servers[i].Port = 22
}
if cfg.Servers[i].Auth == "" {
cfg.Servers[i].Auth = "key"
}
}
}