adds ignoreDir flag to ignore spcific directories
This commit is contained in:
parent
3a176b33a6
commit
c1ad9c9a22
@ -9,7 +9,6 @@ import (
|
||||
"flag"
|
||||
"git.haefelfinger.net/philipp.haefelfinger/SideCarJpegCleaner/internal/app"
|
||||
"github.com/sirupsen/logrus"
|
||||
"github.com/vharitonsky/iniflags"
|
||||
"os"
|
||||
)
|
||||
|
||||
@ -18,7 +17,7 @@ var (
|
||||
)
|
||||
|
||||
func main() {
|
||||
iniflags.Parse()
|
||||
app.InitializeFlags()
|
||||
initializeLog()
|
||||
logrus.Infoln("Starting jpeg cleaner...")
|
||||
app.Run()
|
||||
|
@ -4,3 +4,5 @@ configUpdateInterval = 0s # Update interval for re-reading config file set via
|
||||
dryRun = true # If set to true, all actions are run except the real filesystem modifications
|
||||
imagesRootPath = # This is the images root path that should be mirrored to piwigo.
|
||||
logLevel = info # The minimum log level required to write out a log message. (panic,fatal,error,warn,info,debug,trace)
|
||||
ignoreDir = "jpg"
|
||||
ignoreDir = "png"
|
@ -9,6 +9,7 @@ import (
|
||||
"errors"
|
||||
"flag"
|
||||
"github.com/sirupsen/logrus"
|
||||
"github.com/vharitonsky/iniflags"
|
||||
"os"
|
||||
"path"
|
||||
"path/filepath"
|
||||
@ -18,8 +19,14 @@ import (
|
||||
var (
|
||||
imagesRootPath = flag.String("imagesRootPath", "", "This is the images root path that should be cleaned.")
|
||||
dryRun = flag.Bool("dryRun", true, "If set to true, all actions are run except the real filesystem modifications")
|
||||
ignoreDirs arrayFlags
|
||||
)
|
||||
|
||||
func InitializeFlags() {
|
||||
flag.Var(&ignoreDirs, "ignoreDir", "Directories that should be ignored. Flag can be specified multiple times for more than one directory.")
|
||||
iniflags.Parse()
|
||||
}
|
||||
|
||||
func Run() {
|
||||
imagesRootFolder := *imagesRootPath
|
||||
if imagesRootFolder == "" {
|
||||
@ -47,7 +54,6 @@ func Run() {
|
||||
} else {
|
||||
logrus.Warnln("Skipping delete of images as flag dryRun is set to true!")
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func deleteFiles(filesWithMissingSidecar []string) {
|
||||
@ -89,12 +95,26 @@ func getJpegsWithoutRawSideCar(jpgFiles []string) []string {
|
||||
func findAllJpgFiles(basePath string) (error, []string) {
|
||||
var files []string
|
||||
|
||||
ignoreDirsMap := make(map[string]struct{}, len(ignoreDirs))
|
||||
for _, ignoredFolder := range ignoreDirs {
|
||||
ignoreDirsMap[strings.ToLower(ignoredFolder)] = struct{}{}
|
||||
}
|
||||
|
||||
err := filepath.Walk(basePath, func(path string, info os.FileInfo, err error) error {
|
||||
if strings.HasPrefix(info.Name(), ".") {
|
||||
logrus.Debugf("Skipping hidden file or directory %s", path)
|
||||
if info.IsDir() {
|
||||
return filepath.SkipDir
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
_, dirIgnored := ignoreDirsMap[strings.ToLower(info.Name())]
|
||||
if dirIgnored && info.IsDir() {
|
||||
logrus.Tracef("Skipping ignored directory %s", path)
|
||||
return filepath.SkipDir
|
||||
}
|
||||
|
||||
extension := strings.ToLower(filepath.Ext(path))
|
||||
if (extension != ".jpg" && extension != ".jpeg") || info.IsDir() {
|
||||
return nil
|
||||
|
26
internal/app/arrayFlags.go
Normal file
26
internal/app/arrayFlags.go
Normal file
@ -0,0 +1,26 @@
|
||||
/*
|
||||
* Copyright (C) 2019 Philipp Haefelfinger (http://www.haefelfinger.ch/). All Rights Reserved.
|
||||
* This application is licensed under GPLv2. See the LICENSE file in the root directory of the project.
|
||||
*/
|
||||
|
||||
package app
|
||||
|
||||
import "strings"
|
||||
|
||||
type arrayFlags []string
|
||||
|
||||
func (arr *arrayFlags) String() string {
|
||||
b := strings.Builder{}
|
||||
for _, v := range *arr {
|
||||
if b.Len() > 0 {
|
||||
b.WriteString(",")
|
||||
}
|
||||
b.WriteString(v)
|
||||
}
|
||||
return b.String()
|
||||
}
|
||||
|
||||
func (arr *arrayFlags) Set(value string) error {
|
||||
*arr = append(*arr, strings.TrimSpace(value))
|
||||
return nil
|
||||
}
|
Loading…
Reference in New Issue
Block a user