stashing certlib work
This commit is contained in:
65
cmd/cleankbf/main.go
Normal file
65
cmd/cleankbf/main.go
Normal file
@@ -0,0 +1,65 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"regexp"
|
||||
|
||||
"git.wntrmute.dev/kyle/goutils/die"
|
||||
)
|
||||
|
||||
var reUUID = regexp.MustCompile(`^\w{8}-\w{4}-\w{4}-\w{4}-\w{12}_(.+)$`)
|
||||
|
||||
func renamePath(path string, dryRun bool) error {
|
||||
dir, base := filepath.Split(path)
|
||||
|
||||
base = reUUID.ReplaceAllString(base, "$1")
|
||||
newPath := filepath.Join(dir, base)
|
||||
|
||||
if dryRun {
|
||||
fmt.Println(path, "->", newPath)
|
||||
return nil
|
||||
}
|
||||
|
||||
err := os.Rename(path, newPath)
|
||||
if err != nil {
|
||||
return fmt.Errorf("renaming %s to %s failed: %v", path, newPath, err)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func test() bool {
|
||||
const testFilePath = "48793683-8568-47c2-9e2d-eecab3c4b639_Whispers of Chernobog.pdf"
|
||||
const expected = "Whispers of Chernobog.pdf"
|
||||
|
||||
actual := reUUID.ReplaceAllString(testFilePath, "$1")
|
||||
return actual == expected
|
||||
}
|
||||
|
||||
func main() {
|
||||
var err error
|
||||
|
||||
if !test() {
|
||||
die.With("test failed")
|
||||
}
|
||||
|
||||
dryRun := false
|
||||
flag.BoolVar(&dryRun, "n", dryRun, "don't rename files, just print what would be done")
|
||||
flag.Parse()
|
||||
|
||||
paths := flag.Args()
|
||||
if len(paths) == 0 {
|
||||
paths, err = filepath.Glob("*")
|
||||
die.If(err)
|
||||
}
|
||||
|
||||
for _, file := range paths {
|
||||
err = renamePath(file, dryRun)
|
||||
if err != nil {
|
||||
fmt.Fprintf(os.Stderr, "%s: %v\n", file, err)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user