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"
}
}
}

34
internal/models/models.go Normal file
View File

@@ -0,0 +1,34 @@
package models
type TerminalSettings struct {
Term string `json:"term" yaml:"term"`
EnableKittyFix bool `json:"enable_kitty_fix" yaml:"enable_kitty_fix"`
}
type Settings struct {
Theme string `json:"theme" yaml:"theme"`
Terminal TerminalSettings `json:"terminal" yaml:"terminal"`
}
type Server struct {
Name string `json:"name" yaml:"name"`
Host string `json:"host" yaml:"host"`
User string `json:"user" yaml:"user"`
Port int `json:"port" yaml:"port"`
Group string `json:"group" yaml:"group"`
Auth string `json:"auth" yaml:"auth"`
Key string `json:"key" yaml:"key"`
PasswordID string `json:"password_id" yaml:"password_id"`
KittyFix bool `json:"kitty_fix" yaml:"kitty_fix"`
}
type QuickCommand struct {
Name string `json:"name" yaml:"name"`
Command string `json:"command" yaml:"command"`
}
type AppConfig struct {
Settings Settings `json:"settings" yaml:"settings"`
Servers []Server `json:"servers" yaml:"servers"`
QuickCommands []QuickCommand `json:"quick_commands" yaml:"quick_commands"`
}