node build fixed
This commit is contained in:
67
seanime-2.9.10/internal/library/filesystem/clean.go
Normal file
67
seanime-2.9.10/internal/library/filesystem/clean.go
Normal file
@@ -0,0 +1,67 @@
|
||||
package filesystem
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"github.com/rs/zerolog"
|
||||
"os"
|
||||
"path/filepath"
|
||||
)
|
||||
|
||||
// RemoveEmptyDirectories deletes all empty directories in a given directory.
|
||||
// It ignores errors.
|
||||
func RemoveEmptyDirectories(root string, logger *zerolog.Logger) {
|
||||
|
||||
_ = filepath.Walk(root, func(path string, info os.FileInfo, err error) error {
|
||||
if err != nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
// Skip the root directory
|
||||
if path == root {
|
||||
return nil
|
||||
}
|
||||
|
||||
if info.IsDir() {
|
||||
// Check if the directory is empty
|
||||
isEmpty, err := isDirectoryEmpty(path)
|
||||
if err != nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
// Delete the empty directory
|
||||
if isEmpty {
|
||||
err := os.Remove(path)
|
||||
if err != nil {
|
||||
logger.Warn().Err(err).Str("path", path).Msg("filesystem: Could not delete empty directory")
|
||||
}
|
||||
logger.Info().Str("path", path).Msg("filesystem: Deleted empty directory")
|
||||
// ignore error
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
func isDirectoryEmpty(path string) (bool, error) {
|
||||
dir, err := os.Open(path)
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
defer dir.Close()
|
||||
|
||||
_, err = dir.Readdir(1)
|
||||
if err == nil {
|
||||
// Directory is not empty
|
||||
return false, nil
|
||||
}
|
||||
|
||||
if errors.Is(err, os.ErrNotExist) {
|
||||
// Directory does not exist
|
||||
return false, nil
|
||||
}
|
||||
|
||||
// Directory is empty
|
||||
return true, nil
|
||||
}
|
||||
Reference in New Issue
Block a user