mirror of
https://github.com/derfenix/photocatalog.git
synced 2026-03-11 21:35:34 +03:00
Cleanup, add ability to skip initial full sync
This commit is contained in:
@@ -50,8 +50,10 @@ func (a *Application) Start(ctx context.Context, wg *sync.WaitGroup) error {
|
|||||||
org = org.WithOverwrite()
|
org = org.WithOverwrite()
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := org.FullSync(ctx); err != nil {
|
if !a.config.SkipFullSync {
|
||||||
return fmt.Errorf("full sync: %w", err)
|
if err := org.FullSync(ctx); err != nil {
|
||||||
|
return fmt.Errorf("full sync: %w", err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if a.config.Watch {
|
if a.config.Watch {
|
||||||
|
|||||||
@@ -15,13 +15,14 @@ const (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type Config struct {
|
type Config struct {
|
||||||
SourceDir string
|
SourceDir string
|
||||||
TargetDir string
|
TargetDir string
|
||||||
Mode Mode
|
Mode Mode
|
||||||
Overwrite bool
|
Overwrite bool
|
||||||
DirMode uint64
|
DirMode uint64
|
||||||
FileMode uint64
|
FileMode uint64
|
||||||
Watch bool
|
Watch bool
|
||||||
|
SkipFullSync bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Config) Validate() error {
|
func (c *Config) Validate() error {
|
||||||
@@ -37,5 +38,9 @@ func (c *Config) Validate() error {
|
|||||||
return fmt.Errorf("invalid mode %s", 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
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,6 +17,11 @@ import (
|
|||||||
"github.com/derfenix/photocatalog/v2/internal/metadata"
|
"github.com/derfenix/photocatalog/v2/internal/metadata"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
defaultDirMode = 0o777
|
||||||
|
defaultFileMode = 0o644
|
||||||
|
)
|
||||||
|
|
||||||
type MetaExtractor interface {
|
type MetaExtractor interface {
|
||||||
Extract(_ string, data io.Reader) (metadata.Metadata, error)
|
Extract(_ string, data io.Reader) (metadata.Metadata, error)
|
||||||
}
|
}
|
||||||
@@ -31,8 +36,8 @@ func NewOrganizer(mode Mode, source, target string) *Organizer {
|
|||||||
sourceDir: source,
|
sourceDir: source,
|
||||||
targetDir: target,
|
targetDir: target,
|
||||||
|
|
||||||
dirMode: 0777,
|
dirMode: defaultDirMode,
|
||||||
fileMode: 0644,
|
fileMode: defaultFileMode,
|
||||||
|
|
||||||
metaExtractors: map[string]MetaExtractor{
|
metaExtractors: map[string]MetaExtractor{
|
||||||
"": &metadata.Default{},
|
"": &metadata.Default{},
|
||||||
|
|||||||
17
main.go
17
main.go
@@ -33,25 +33,18 @@ func main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func loadCfg() application.Config {
|
func loadCfg() application.Config {
|
||||||
cfg := application.Config{
|
cfg := application.Config{}
|
||||||
SourceDir: "",
|
|
||||||
TargetDir: "",
|
|
||||||
Mode: "",
|
|
||||||
Overwrite: false,
|
|
||||||
DirMode: 0,
|
|
||||||
FileMode: 0,
|
|
||||||
Watch: false,
|
|
||||||
}
|
|
||||||
|
|
||||||
flag.StringVar(&cfg.SourceDir, "source", "", "Source directory")
|
flag.StringVar(&cfg.SourceDir, "source", "", "Source directory")
|
||||||
flag.StringVar(&cfg.TargetDir, "target", "", "Target directory")
|
flag.StringVar(&cfg.TargetDir, "target", "", "Target directory")
|
||||||
flag.BoolVar(&cfg.Overwrite, "overwrite", false, "Overwrite existing files")
|
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 dirMode string
|
||||||
var fileMode string
|
var fileMode string
|
||||||
flag.StringVar(&dirMode, "dirmode", "0777", "Mode bits for directories can be created while syncing")
|
flag.StringVar(&dirMode, "dir-mode", "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(&fileMode, "file-mode", "0644", "Mode bits for files created while syncing (not applicable for hardlink mode)")
|
||||||
|
|
||||||
var mode string
|
var mode string
|
||||||
flag.StringVar(&mode, "mode", "hardlink", "Mode")
|
flag.StringVar(&mode, "mode", "hardlink", "Mode")
|
||||||
|
|||||||
Reference in New Issue
Block a user