49 lines
1.1 KiB
Go
49 lines
1.1 KiB
Go
package main
|
|
|
|
import (
|
|
"backea/internal/backup/config"
|
|
"backea/internal/backup/core"
|
|
"backea/internal/backup/strategy"
|
|
"context"
|
|
"flag"
|
|
"log"
|
|
"strings"
|
|
|
|
"github.com/joho/godotenv"
|
|
)
|
|
|
|
func main() {
|
|
configPath := flag.String("config", "config.yml", "Path to config file")
|
|
serviceFlag := flag.String("service", "", "Service to backup (format: group or group.index)")
|
|
flag.Parse()
|
|
|
|
if err := godotenv.Load(); err != nil {
|
|
log.Printf("Warning: Error loading .env file: %v", err)
|
|
}
|
|
|
|
// Parse service name and index
|
|
var serviceName, serviceIndex string
|
|
if *serviceFlag != "" {
|
|
parts := strings.SplitN(*serviceFlag, ".", 2)
|
|
serviceName = parts[0]
|
|
if len(parts) > 1 {
|
|
serviceIndex = parts[1]
|
|
}
|
|
}
|
|
|
|
cfg, err := config.LoadConfig(*configPath)
|
|
if err != nil {
|
|
log.Fatalf("Failed to load configuration: %v", err)
|
|
}
|
|
|
|
factory, _ := strategy.NewFactory(*configPath)
|
|
|
|
executor := core.NewExecutor(cfg, *factory)
|
|
|
|
// Perform backups
|
|
ctx := context.Background()
|
|
if err := executor.PerformBackups(ctx, serviceName, serviceIndex); err != nil {
|
|
log.Fatalf("Backup failed: %v", err)
|
|
}
|
|
}
|