now removes hash files too

master
Avril 4 years ago
parent ddc7ae0d67
commit 0a81351f2a
Signed by: flanchan
GPG Key ID: 284488987C31F630

@ -10,6 +10,7 @@ import (
"sync" "sync"
"sync/atomic" "sync/atomic"
"path" "path"
"path/filepath"
"regexp" "regexp"
) )
@ -38,14 +39,51 @@ func walk(rpath string, lock *semaphore.Semaphore, output chan string, wait *syn
return nil return nil
} }
var work_re *regexp.Regexp = regexp.MustCompile("~$") var work_re *regexp.Regexp = regexp.MustCompile(`~$`)
func work_on(file string) bool { var as_re *regexp.Regexp = regexp.MustCompile(`^\.#(.*)$`)
return work_re.MatchString(file) var as_re2 *regexp.Regexp = regexp.MustCompile(`^#(.*)#$`)
func file_exists(file string) bool {
if s, err:= os.Stat(file); err == nil {
return !s.IsDir()
}
return false
}
func autosave_del(file string, check_extra bool) bool {
if as_re.MatchString(file) {
if check_extra {
group := as_re.FindStringSubmatch(file)
if len(group[1]) > 0 {
b := file_exists(path.Join(filepath.Dir(file), group[1]))
if !b {
fmt.Printf("[i] ignoring %s", file)
}
return b
}
}
return true
} else if as_re2.MatchString(file) {
if check_extra {
group := as_re2.FindStringSubmatch(file)
if len(group[1]) > 0 {
b := file_exists(path.Join(filepath.Dir(file), group[1]))
if !b {
fmt.Printf("[i] ignoring %s", file)
}
return b
}
}
return true
}
return false
} }
func main() { func main() {
dry := flag.Bool("dry", false, "Dry run") dry := flag.Bool("dry", false, "Dry run")
threads := flag.Int("threads", 10, "Number of threads to use") threads := flag.Int("threads", 10, "Number of threads to use")
autosave := flag.Bool("keep-autosave", false, "Keep autosave ('.#*' & '#*#').")
forceful := flag.Bool("force", false, "Remove autosave even with no owner file found.")
help := flag.Bool("help", false, "Print this message") help := flag.Bool("help", false, "Print this message")
flag.Parse() flag.Parse()
@ -59,6 +97,10 @@ func main() {
return return
} }
work_on := func(file string) bool {
return work_re.MatchString(file) || (!*autosave && autosave_del(file, !*forceful))
}
if *threads<1 { if *threads<1 {
fmt.Printf("[e] cannot use %v threads\n", threads) fmt.Printf("[e] cannot use %v threads\n", threads)

Loading…
Cancel
Save