aboutsummaryrefslogtreecommitdiffstats
path: root/main.go
diff options
context:
space:
mode:
Diffstat (limited to 'main.go')
-rw-r--r--main.go28
1 files changed, 19 insertions, 9 deletions
diff --git a/main.go b/main.go
index 077aec2..570890d 100644
--- a/main.go
+++ b/main.go
@@ -12,37 +12,47 @@ import (
var (
hostDir = flag.String("host", "/host", "Host source directory (read-only)")
dataDir = flag.String("data", "/data", "Data destination directory")
- verbose = flag.Bool("verbose", false, "Enable verbose logging")
+ verbose = flag.Bool("verbose", false, "Enable verbose logging (shorthand for -log-level debug)")
+ logLevel = flag.String("log-level", "info", "Log level: debug, info, warn, error, none")
dryRun = flag.Bool("dry-run", false, "Preview what would be synced without copying")
)
func main() {
flag.Parse()
- log.SetFlags(log.LstdFlags | log.Lshortfile)
if *verbose {
- log.Println("sourcewatch starting...")
- log.Printf("host: %s, data: %s, dry-run: %v", *hostDir, *dataDir, *dryRun)
+ *logLevel = "debug"
}
+ level, err := ParseLogLevel(*logLevel)
+ if err != nil {
+ log.Fatal(err)
+ }
+ SetLogLevel(level)
+
+ log.SetFlags(0)
+ log.SetOutput(nil)
+
stack := NewGitignoreStack(*hostDir)
manifest, err := initialSync(*hostDir, *dataDir, stack, *dryRun)
if err != nil {
- log.Fatalf("initial sync failed: %v", err)
+ logErrorf("initial sync failed: %v", err)
+ os.Exit(1)
}
if *dryRun {
- log.Println("dry-run complete, exiting")
+ logInfo("dry-run complete, exiting")
return
}
- log.Println("watcher: ready, monitoring for changes ...")
+ logInfo("watcher: ready, monitoring for changes ...")
ctx, cancel := signal.NotifyContext(context.Background(), os.Interrupt, syscall.SIGTERM)
defer cancel()
- if err := watch(ctx, *hostDir, *dataDir, manifest, stack, *dryRun, *verbose); err != nil {
- log.Fatalf("watcher failed: %v", err)
+ if err := watch(ctx, *hostDir, *dataDir, manifest, stack, *dryRun); err != nil {
+ logErrorf("watcher failed: %v", err)
+ os.Exit(1)
}
}