Skip to content

Commit 9585a5b

Browse files
committed
chore: fix gitignore
1 parent f522623 commit 9585a5b

2 files changed

Lines changed: 96 additions & 3 deletions

File tree

.gitignore

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,7 @@ Thumbs.db
3636
# Build artifacts
3737
build/
3838
dist/
39-
dns-sync
40-
dns-sync.exe
41-
dns-sync-*
39+
*.exe
4240

4341
# Configuration files with sensitive data
4442
config.local.yaml
@@ -87,6 +85,7 @@ charts/*/requirements.lock
8785

8886
# Local development
8987
local/
88+
bin/
9089
dev/
9190

9291
# Backup files

cmd/dns-sync/main.go

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
package main
2+
3+
import (
4+
"context"
5+
"flag"
6+
"fmt"
7+
"log"
8+
"os"
9+
"os/signal"
10+
"syscall"
11+
12+
"github.com/flanksource/dns-sync/config"
13+
"github.com/flanksource/dns-sync/sync"
14+
)
15+
16+
var (
17+
version = "dev"
18+
commit = "unknown"
19+
date = "unknown"
20+
)
21+
22+
func main() {
23+
var configFile = flag.String("config", "config.yaml", "Configuration file path")
24+
var logLevel = flag.String("log-level", "info", "Log level (debug, info, warn, error)")
25+
var showVersion = flag.Bool("version", false, "Show version information")
26+
var dryRun = flag.Bool("dry-run", false, "Enable dry run mode (no changes made)")
27+
var once = flag.Bool("once", false, "Run synchronization once and exit")
28+
flag.Parse()
29+
30+
if *showVersion {
31+
fmt.Printf("dns-sync version %s (commit: %s, built: %s)\n", version, commit, date)
32+
os.Exit(0)
33+
}
34+
35+
// Load configuration
36+
cfg, err := config.Load(*configFile)
37+
if err != nil {
38+
log.Fatalf("Failed to load configuration: %v", err)
39+
}
40+
if dryRun != nil {
41+
cfg.Sync.DryRun = *dryRun
42+
}
43+
44+
// Setup logging
45+
setupLogging(*logLevel)
46+
47+
// Initialize synchronizer
48+
syncer := sync.NewSynchronizer(*cfg)
49+
50+
// Start the synchronizer
51+
log.Println("Starting DNS synchronizer...")
52+
if once != nil && *once {
53+
if err, _ := syncer.Once(context.Background()); err != nil {
54+
log.Fatalf("Synchronizer failed: %v", err)
55+
}
56+
} else {
57+
// Setup graceful shutdown
58+
ctx, cancel := context.WithCancel(context.Background())
59+
defer cancel()
60+
61+
// Handle OS signals
62+
sigCh := make(chan os.Signal, 1)
63+
signal.Notify(sigCh, syscall.SIGINT, syscall.SIGTERM)
64+
65+
go func() {
66+
sig := <-sigCh
67+
log.Printf("Received signal %v, shutting down gracefully...", sig)
68+
cancel()
69+
}()
70+
if err := syncer.Start(ctx); err != nil {
71+
log.Fatalf("Synchronizer failed: %v", err)
72+
}
73+
log.Println("DNS synchronizer stopped")
74+
}
75+
76+
}
77+
78+
func setupLogging(level string) {
79+
// Configure logging based on level
80+
log.SetFlags(log.LstdFlags | log.Lshortfile)
81+
82+
switch level {
83+
case "debug":
84+
// Enable debug logging
85+
case "info":
86+
// Default info logging
87+
case "warn":
88+
// Warning and above
89+
case "error":
90+
// Error only
91+
default:
92+
log.Printf("Unknown log level: %s, using info", level)
93+
}
94+
}

0 commit comments

Comments
 (0)