- PostgreSQL and MySQL support - Interactive TUI with fixed menu navigation - Line-by-line progress display - CPU-aware parallel processing - Cross-platform build support - Configuration settings menu - Silent mode for TUI operations
50 lines
984 B
Go
50 lines
984 B
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"log/slog"
|
|
"os"
|
|
"os/signal"
|
|
"syscall"
|
|
|
|
"dbbackup/cmd"
|
|
"dbbackup/internal/config"
|
|
"dbbackup/internal/logger"
|
|
)
|
|
|
|
// Build information (set by ldflags)
|
|
var (
|
|
version = "dev"
|
|
buildTime = "unknown"
|
|
gitCommit = "unknown"
|
|
)
|
|
|
|
func main() {
|
|
// Create context that cancels on interrupt
|
|
ctx, cancel := signal.NotifyContext(context.Background(), os.Interrupt, syscall.SIGTERM)
|
|
defer cancel()
|
|
|
|
// Initialize configuration
|
|
cfg := config.New()
|
|
|
|
// Set version information
|
|
cfg.Version = version
|
|
cfg.BuildTime = buildTime
|
|
cfg.GitCommit = gitCommit
|
|
|
|
// Optimize CPU settings if auto-detect is enabled
|
|
if cfg.AutoDetectCores {
|
|
if err := cfg.OptimizeForCPU(); err != nil {
|
|
slog.Warn("CPU optimization failed", "error", err)
|
|
}
|
|
}
|
|
|
|
// Initialize logger
|
|
log := logger.New(cfg.LogLevel, cfg.LogFormat)
|
|
|
|
// Execute command
|
|
if err := cmd.Execute(ctx, cfg, log); err != nil {
|
|
log.Error("Application failed", "error", err)
|
|
os.Exit(1)
|
|
}
|
|
} |