0.0.0.0 Initial commit, basic core functionality

This commit is contained in:
2025-01-08 15:41:41 -05:00
commit 049927d242
8 changed files with 352 additions and 0 deletions

77
examples/main.go Normal file
View File

@ -0,0 +1,77 @@
package main
import (
"fmt"
"os"
"path/filepath"
"time"
"github.com/LixenWraith/config"
)
type SMTPConfig struct {
Host string `toml:"host"`
Port string `toml:"port"`
FromAddr string `toml:"from_addr"`
AuthUser string `toml:"auth_user"`
AuthPass string `toml:"auth_pass"`
}
type ServerConfig struct {
Host string `toml:"host"`
Port int `toml:"port"`
ReadTimeout time.Duration `toml:"read_timeout"`
WriteTimeout time.Duration `toml:"write_timeout"`
MaxConns int `toml:"max_conns"`
}
type AppConfig struct {
SMTP SMTPConfig `toml:"smtp"`
Server ServerConfig `toml:"server"`
Debug bool `toml:"debug"`
}
func main() {
defaultConfig := AppConfig{
SMTP: SMTPConfig{
Host: "smtp.example.com",
Port: "587",
FromAddr: "noreply@example.com",
AuthUser: "admin",
AuthPass: "default123",
},
Server: ServerConfig{
Host: "localhost",
Port: 8080,
ReadTimeout: time.Second * 30,
WriteTimeout: time.Second * 30,
MaxConns: 1000,
},
Debug: true,
}
configPath := filepath.Join(".", "test.toml")
cfg := defaultConfig
// CLI argument usage example to override SMTP host and server port of existing and default config:
// ./main --smtp.host mail.example.com --server.port 9090
exists, err := config.Load(configPath, &cfg, os.Args[1:])
if err != nil {
fmt.Fprintf(os.Stderr, "Failed to load config: %v\n", err)
os.Exit(1)
}
if !exists {
if err := config.Save(configPath, &cfg); err != nil {
fmt.Fprintf(os.Stderr, "Failed to save default config: %v\n", err)
os.Exit(1)
}
fmt.Println("Created default config at:", configPath)
}
fmt.Printf("Running with config:\n")
fmt.Printf("Server: %s:%d\n", cfg.Server.Host, cfg.Server.Port)
fmt.Printf("SMTP: %s:%s\n", cfg.SMTP.Host, cfg.SMTP.Port)
fmt.Printf("Debug: %v\n", cfg.Debug)
}