refactor: rename WORKDIR to ROOT, export env vars in debug.sh, enhance logging, and adjust path handling for clarity and robustness

This commit is contained in:
2025-08-07 11:32:56 +02:00
parent 159461183c
commit e18202568e
2 changed files with 32 additions and 18 deletions

45
main.go
View File

@@ -14,7 +14,7 @@ import (
)
type Config struct {
WorkDir string
Root string
Patterns []string
ScanInterval time.Duration
}
@@ -69,9 +69,9 @@ func loadConfig() Config {
// but it is safe to call to honor standard logger flags if provided.
logger.InitFlag()
workdir := filepath.ToSlash(strings.TrimSpace(getenv("WORKDIR", "/tmp")))
root := filepath.ToSlash(strings.TrimSpace(getenv("ROOT", "/tmp")))
if pfx := strings.TrimSpace(getenv("PATH_PREFIX", "")); pfx != "" {
workdir = filepath.ToSlash(filepath.Join(workdir, pfx))
root = filepath.ToSlash(filepath.Join(root, pfx))
}
// Patterns from FORBIDDEN (comma-separated). Relative to WorkDir.
@@ -88,13 +88,13 @@ func loadConfig() Config {
interval := time.Duration(parseDurationMS(getenv("SCAN_INTERVAL", "60s"))) * time.Millisecond
logger.Info("Config:")
logger.Info(" WORKDIR: %s", workdir)
logger.Info(" ROOT: %s", root)
logger.Info(" PATH_PREFIX: %s", getenv("PATH_PREFIX", ""))
logger.Info(" FORBIDDEN: %v", patterns)
logger.Info(" SCAN_INTERVAL(ms): %d", interval.Milliseconds())
return Config{
WorkDir: workdir,
Root: root,
Patterns: patterns,
ScanInterval: interval,
}
@@ -102,50 +102,59 @@ func loadConfig() Config {
func deleteMatches(cfg Config) {
log := logger.Default.WithPrefix("deleteMatches")
log.Debug("Starting deleteMatches operation.")
log.Trace("Config: %+v", cfg)
if cfg.WorkDir == "" {
log.Error("WorkDir is empty")
if cfg.Root == "" {
log.Error("Root is empty")
return
}
if _, err := os.Stat(cfg.WorkDir); err != nil {
log.Error("WorkDir not accessible %s: %v", cfg.WorkDir, err)
if _, err := os.Stat(cfg.Root); err != nil {
log.Error("Root not accessible %s: %v", cfg.Root, err)
return
}
for _, pat := range cfg.Patterns {
patlog := log.WithPrefix(pat)
patlog.Debug("Processing pattern")
if pat == "" {
continue
}
matches, err := doublestar.Glob(os.DirFS(cfg.WorkDir), pat)
matches, err := doublestar.Glob(os.DirFS(cfg.Root), pat)
if err != nil {
log.Error("glob %q: %v", pat, err)
patlog.Error("glob %q: %v", pat, err)
continue
}
if len(matches) == 0 {
log.Debug("No matches for pattern %q", pat)
patlog.Debug("No matches for pattern")
continue
}
patlog.Trace("Found matches for pattern %q: %v", pat, matches)
for _, rel := range matches {
full := filepath.Clean(filepath.Join(cfg.WorkDir, rel))
itemlog := patlog.WithPrefix(rel)
itemlog.Debug("Processing matched item")
full := filepath.Clean(filepath.Join(cfg.Root, rel))
info, err := os.Stat(full)
if err != nil {
log.Warning("stat %s: %v", full, err)
itemlog.Warning("stat %s: %v", full, err)
continue
}
if info.IsDir() {
log.Info("Removing directory %s", full)
itemlog.Info("Removing directory %s", full)
} else {
log.Info("Removing file %s", full)
itemlog.Info("Removing file %s", full)
}
itemlog.Trace("Attempting to remove: %s", full)
if err := os.RemoveAll(full); err != nil {
log.Error("remove %s: %v", full, err)
itemlog.Error("remove %s: %v", full, err)
continue
}
itemlog.Debug("Successfully removed")
}
}
log.Debug("Finished deleteMatches operation.")
}
func doRun(cfg Config) {