X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=cleanup.go;h=61f028f2d56dc6d600a1146ff1ac7d640f5cef56;hb=fa0728d6bc790672982ba006961077371d2b552d;hp=f75788aae270780f69df8b567fad0c40ab5df6fb;hpb=edb601644735972fac3efcdc27849b5b9b1f5fb7;p=goredo.git diff --git a/cleanup.go b/cleanup.go index f75788a..61f028f 100644 --- a/cleanup.go +++ b/cleanup.go @@ -1,5 +1,5 @@ /* -goredo -- redo implementation on pure Go +goredo -- djb's redo implementation on pure Go Copyright (C) 2020-2021 Sergey Matveev This program is free software: you can redistribute it and/or modify @@ -18,6 +18,7 @@ along with this program. If not, see . package main import ( + "flag" "fmt" "io" "log" @@ -33,6 +34,10 @@ const ( CleanupTmp = "tmp" ) +var ( + DryRun = flag.Bool("dry-run", false, "do no delete files during cleanup, just show them") +) + func redoDirClean(root, what string) error { root, err := filepath.Abs(root) if err != nil { @@ -57,15 +62,19 @@ func redoDirClean(root, what string) error { case CleanupLog: if strings.HasSuffix(fi.Name(), LogSuffix) { fmt.Println(pth) - if err = os.Remove(pth); err != nil { - return err + if !*DryRun { + if err = os.Remove(pth); err != nil { + return err + } } } case CleanupTmp: if strings.HasPrefix(fi.Name(), TmpPrefix) { fmt.Println(pth) - if err = os.Remove(pth); err != nil { - return err + if !*DryRun { + if err = os.Remove(pth); err != nil { + return err + } } } default: @@ -101,7 +110,9 @@ func cleanupWalker(root, what string) error { if fi.Name() == RedoDir { if what == CleanupFull { fmt.Println(pthRel) - err = os.RemoveAll(pth) + if !*DryRun { + err = os.RemoveAll(pth) + } } else { err = redoDirClean(pth, what) } @@ -116,8 +127,10 @@ func cleanupWalker(root, what string) error { if (what == CleanupTmp || what == CleanupFull) && strings.HasPrefix(fi.Name(), TmpPrefix) { fmt.Println(pthRel) - if err = os.Remove(pth); err != nil { - return err + if !*DryRun { + if err = os.Remove(pth); err != nil { + return err + } } } }