Cleanup, add ability to skip initial full sync

This commit is contained in:
2025-01-04 03:31:33 +03:00
parent e3f8f7b8c8
commit 9acb554dd4
4 changed files with 28 additions and 23 deletions

View File

@@ -50,9 +50,11 @@ func (a *Application) Start(ctx context.Context, wg *sync.WaitGroup) error {
org = org.WithOverwrite()
}
if !a.config.SkipFullSync {
if err := org.FullSync(ctx); err != nil {
return fmt.Errorf("full sync: %w", err)
}
}
if a.config.Watch {
if err := org.Watch(ctx, wg); err != nil {

View File

@@ -22,6 +22,7 @@ type Config struct {
DirMode uint64
FileMode uint64
Watch bool
SkipFullSync bool
}
func (c *Config) Validate() error {
@@ -37,5 +38,9 @@ func (c *Config) Validate() error {
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
}

View File

@@ -17,6 +17,11 @@ import (
"github.com/derfenix/photocatalog/v2/internal/metadata"
)
const (
defaultDirMode = 0o777
defaultFileMode = 0o644
)
type MetaExtractor interface {
Extract(_ string, data io.Reader) (metadata.Metadata, error)
}
@@ -31,8 +36,8 @@ func NewOrganizer(mode Mode, source, target string) *Organizer {
sourceDir: source,
targetDir: target,
dirMode: 0777,
fileMode: 0644,
dirMode: defaultDirMode,
fileMode: defaultFileMode,
metaExtractors: map[string]MetaExtractor{
"": &metadata.Default{},

17
main.go
View File

@@ -33,25 +33,18 @@ func main() {
}
func loadCfg() application.Config {
cfg := application.Config{
SourceDir: "",
TargetDir: "",
Mode: "",
Overwrite: false,
DirMode: 0,
FileMode: 0,
Watch: false,
}
cfg := application.Config{}
flag.StringVar(&cfg.SourceDir, "source", "", "Source directory")
flag.StringVar(&cfg.TargetDir, "target", "", "Target directory")
flag.BoolVar(&cfg.Overwrite, "overwrite", false, "Overwrite existing files")
flag.BoolVar(&cfg.Watch, "watch", false, "Watch for changes in the source directory")
flag.BoolVar(&cfg.Watch, "watch", true, "Watch for changes in the source directory")
flag.BoolVar(&cfg.SkipFullSync, "skip-full-sync", false, "Skip full sync at startup")
var dirMode string
var fileMode string
flag.StringVar(&dirMode, "dirmode", "0777", "Mode bits for directories can be created while syncing")
flag.StringVar(&fileMode, "filemode", "0644", "Mode bits for files created while syncing (not applicable for hardlink mode)")
flag.StringVar(&dirMode, "dir-mode", "0777", "Mode bits for directories can be created while syncing")
flag.StringVar(&fileMode, "file-mode", "0644", "Mode bits for files created while syncing (not applicable for hardlink mode)")
var mode string
flag.StringVar(&mode, "mode", "hardlink", "Mode")