1
0
mirror of https://github.com/ManyakRus/crud_generator.git synced 2024-12-23 12:44:13 +02:00
crud_generator/pkg/utils/options.go

56 lines
1.6 KiB
Go
Raw Normal View History

2023-10-24 17:03:04 +02:00
package utils
import "os"
// FileHandlerFunc type to define a function for carrying out a file processing for copying or processing as a template
type FileHandlerFunc func(src, dest string, info os.FileInfo, opt Options, results *Results) (err error)
// Options specifies optional actions on copying.
type Options struct {
// OnSymlink can specify what to do on symlink
OnSymlink func(src string) SymlinkAction
// Skip can specify which files should be skipped
Skip func(src string) (bool, error)
// AddPermission to every entities,
// NO MORE THAN 0777
AddPermission os.FileMode
// Sync file after copy.
// Useful in case when file must be on the disk
// (in case crash happens, for example),
// at the expense of some performance penalty
Sync bool
// FileHandler - returns a handler for file - if nill will use the default copy handler
FileHandler func(src, dest string, info os.FileInfo) FileHandlerFunc
// ShouldCopy - return bool if dir or file should be copied
ShouldCopy func(opt os.FileInfo) bool
}
// SymlinkAction represents what to do on symlink.
type SymlinkAction int
const (
// Deep creates hard-copy of contents.
Deep SymlinkAction = iota
// Shallow creates new symlink to the dest of symlink.
Shallow
// Skip does nothing with symlink.
Skip
)
// DefaultCopyOptions provides default options,
// which would be modified by usage-side.
func DefaultCopyOptions() Options {
return Options{
OnSymlink: func(string) SymlinkAction {
return Shallow // Do shallow copy
},
Skip: func(string) (bool, error) {
return false, nil // Don't skip
},
AddPermission: 0, // Add nothing
Sync: false, // Do not sync
}
}