Files
photocatalog/application/config.go

47 lines
829 B
Go

package application
import (
"fmt"
"slices"
)
type Mode string
const (
ModeCopy Mode = "copy"
ModeHardlink Mode = "hardlink"
ModeSymlink Mode = "symlink"
ModeMove Mode = "move"
)
type Config struct {
SourceDir string
TargetDir string
Mode Mode
Overwrite bool
DirMode uint64
FileMode uint64
Watch bool
SkipFullSync bool
}
func (c *Config) Validate() error {
if c.SourceDir == "" {
return fmt.Errorf("source dir is required")
}
if c.TargetDir == "" {
return fmt.Errorf("target dir is required")
}
if !slices.Contains([]Mode{ModeHardlink, ModeSymlink, ModeMove, ModeCopy}, c.Mode) {
return fmt.Errorf("invalid mode %s", c.Mode)
}
if c.SkipFullSync && !c.Watch {
return fmt.Errorf("skip full sync and watch disabled — nothing to do")
}
return nil
}