From 9fbd9207e3bca0a3039d78af6b4852f7a1917c6d Mon Sep 17 00:00:00 2001 From: PhatPhuckDave Date: Wed, 1 Oct 2025 13:44:04 +0200 Subject: [PATCH] Implement simple file moving --- main.go | 35 ++++++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) diff --git a/main.go b/main.go index 1932167..89bb131 100644 --- a/main.go +++ b/main.go @@ -3,6 +3,8 @@ package main import ( "flag" "fmt" + "os" + "path/filepath" "regexp" "time" @@ -54,13 +56,40 @@ func main() { files := flag.Args() for _, file := range files { - logger.Info("processing file: %s", file) + filelog := logger.Default.WithPrefix(fmt.Sprintf("file=%q", file)) + filelog.Info("processing file") date, err := parseDate(file, parsers) if err != nil { - logger.Error("error parsing date: %s", err) + filelog.Error("error parsing date: %s", err) continue } - logger.Info("date: %s", date) + filelog.Info("date: %s", date) + + datedir := fmt.Sprintf("%04d-%02d-%02d", date.Year(), date.Month(), date.Day()) + dest := filepath.Join(datedir, file) + filelog.Info("dest: %s", dest) + err = os.MkdirAll(datedir, 0755) + if err != nil { + filelog.Error("error creating directory: %s", err) + continue + } + // Make sure file doesn't exist + destfile, err := os.Stat(dest) + if err == nil { + filelog.Info("dest file already exists: %s", destfile.Name()) + continue + } else { + if !os.IsNotExist(err) { + filelog.Error("error checking dest file: %s", err) + continue + } + } + err = os.Rename(file, dest) + if err != nil { + filelog.Error("error renaming file: %s", err) + continue + } + filelog.Info("moved to %q", dest) } }