From d69c11a3144044f354af5c30fb5a9bb902939b96 Mon Sep 17 00:00:00 2001 From: simulot Date: Thu, 16 Nov 2023 21:37:19 +0100 Subject: [PATCH] move the logger package at root of the project --- cmdduplicate/duplicate.go | 2 +- cmdmetadata/metadatacmd.go | 2 +- cmdstack/cmdstack.go | 2 +- cmdtool/cmdalbum/cmdalbum.go | 2 +- cmdtool/cmdtool.go | 2 +- cmdupload/e2e_upload_folder_test.go | 63 ++++++++++++++++------------- cmdupload/upload.go | 36 ++++++++++++++++- cmdupload/upload_test.go | 2 +- go.mod | 2 +- helpers/fshelper/parseArgs.go | 12 ++++-- immich/immich.go | 2 - {immich/logger => logger}/logger.go | 0 main.go | 2 +- 13 files changed, 87 insertions(+), 42 deletions(-) rename {immich/logger => logger}/logger.go (100%) diff --git a/cmdduplicate/duplicate.go b/cmdduplicate/duplicate.go index 3aab1fa..7485771 100644 --- a/cmdduplicate/duplicate.go +++ b/cmdduplicate/duplicate.go @@ -8,7 +8,7 @@ import ( "flag" "immich-go/helpers/gen" "immich-go/immich" - "immich-go/immich/logger" + "immich-go/logger" "immich-go/ui" "path" "sort" diff --git a/cmdmetadata/metadatacmd.go b/cmdmetadata/metadatacmd.go index f7045a4..e1cb68d 100644 --- a/cmdmetadata/metadatacmd.go +++ b/cmdmetadata/metadatacmd.go @@ -5,8 +5,8 @@ import ( "flag" "immich-go/helpers/docker" "immich-go/immich" - "immich-go/immich/logger" "immich-go/immich/metadata" + "immich-go/logger" "math" "path" "strings" diff --git a/cmdstack/cmdstack.go b/cmdstack/cmdstack.go index 7bdce7c..95ecda8 100644 --- a/cmdstack/cmdstack.go +++ b/cmdstack/cmdstack.go @@ -5,7 +5,7 @@ import ( "flag" "immich-go/helpers/stacking" "immich-go/immich" - "immich-go/immich/logger" + "immich-go/logger" "immich-go/ui" "path" "sort" diff --git a/cmdtool/cmdalbum/cmdalbum.go b/cmdtool/cmdalbum/cmdalbum.go index ce7f090..ec2aa62 100644 --- a/cmdtool/cmdalbum/cmdalbum.go +++ b/cmdtool/cmdalbum/cmdalbum.go @@ -5,7 +5,7 @@ import ( "flag" "fmt" "immich-go/immich" - "immich-go/immich/logger" + "immich-go/logger" "immich-go/ui" "regexp" "sort" diff --git a/cmdtool/cmdtool.go b/cmdtool/cmdtool.go index 54b45f7..5b37e60 100644 --- a/cmdtool/cmdtool.go +++ b/cmdtool/cmdtool.go @@ -5,7 +5,7 @@ import ( "fmt" "immich-go/cmdtool/cmdalbum" "immich-go/immich" - "immich-go/immich/logger" + "immich-go/logger" ) func CommandTool(ctx context.Context, ic *immich.ImmichClient, logger *logger.Logger, args []string) error { diff --git a/cmdupload/e2e_upload_folder_test.go b/cmdupload/e2e_upload_folder_test.go index 1ab6073..8eace72 100644 --- a/cmdupload/e2e_upload_folder_test.go +++ b/cmdupload/e2e_upload_folder_test.go @@ -8,7 +8,7 @@ import ( "errors" "fmt" "immich-go/immich" - "immich-go/immich/logger" + "immich-go/logger" "testing" "time" @@ -39,35 +39,33 @@ func TestE2eUpload(t *testing.T) { resetImmich bool expectError bool }{ - /* - { - name: "upload google photos", - args: []string{ - "-google-photos", - "../../test-data/low_high/Takeout", - }, - resetImmich: true, - expectError: false, + { + name: "upload google photos", + args: []string{ + "-google-photos", + "../../test-data/low_high/Takeout", }, - { - name: "upload folder", - args: []string{ - "../../test-data/low_high/high", - }, - // resetImmich: true, - - expectError: false, + resetImmich: true, + expectError: false, + }, + { + name: "upload folder", + args: []string{ + "../../test-data/low_high/high", }, - { - name: "upload folder", - args: []string{ - "../../test-data/low_high/high", - }, - - // resetImmich: true, - expectError: false, + // resetImmich: true, + + expectError: false, + }, + { + name: "upload folder", + args: []string{ + "../../test-data/low_high/high", }, - */ + + // resetImmich: true, + expectError: false, + }, { name: "upload folder *.jpg", args: []string{ @@ -87,6 +85,17 @@ func TestE2eUpload(t *testing.T) { // resetImmich: true, expectError: false, }, + + { + name: "upload folder *.jpg - dry run", + args: []string{ + "-dry-run", + "../../test-data/full_takeout (copy)/Takeout/Google Photos/Photos from 2023", + }, + + // resetImmich: true, + expectError: false, + }, } logger := logger.NewLogger(logger.Debug, true, false) diff --git a/cmdupload/upload.go b/cmdupload/upload.go index 88c4f50..9e772c2 100644 --- a/cmdupload/upload.go +++ b/cmdupload/upload.go @@ -14,8 +14,8 @@ import ( "immich-go/helpers/gen" "immich-go/helpers/stacking" "immich-go/immich" - "immich-go/immich/logger" "immich-go/immich/metadata" + "immich-go/logger" "io/fs" "math" "path" @@ -62,6 +62,7 @@ type UpCmd struct { DryRun bool // Display actions but don't change anything ForceSidecar bool // Generate a sidecar file for each file (default: TRUE) CreateStacks bool // Stack jpg/raw/burst (Default: TRUE) + SelectTypes StringList // List of extensions to be imported AssetIndex *AssetIndex // List of assets present on the server deleteServerList []*immich.Asset // List of server assets to remove @@ -138,11 +139,32 @@ func NewUpCmd(ctx context.Context, ic iClient, log *logger.Logger, args []string "Stack jpg/raw or bursts (default TRUE)") // cmd.BoolVar(&app.Delete, "delete", false, "Delete local assets after upload") + + cmd.Var(&app.SelectTypes, "select-types", "list of selected extensions separated by a comma") + err = cmd.Parse(args) if err != nil { return nil, err } + if len(app.SelectTypes) > 0 { + l := []string{} + for _, e := range app.SelectTypes { + if !strings.HasPrefix(e, ".") { + e = "." + e + } + e = strings.ToLower(e) + if _, err = fshelper.MimeFromExt(e); err != nil { + err = errors.Join(err, fmt.Errorf("unsupported extension '%s'", e)) + } + l = append(l, e) + } + if err != nil { + return nil, err + } + app.SelectTypes = l + } + app.fsys, err = fshelper.ParsePath(cmd.Args(), app.GooglePhotos) if err != nil { return nil, err @@ -758,3 +780,15 @@ func keys[M ~map[K]V, K comparable, V any](m M) []K { } return r } + +type StringList []string + +func (sl *StringList) Set(s string) error { + l := strings.Split(s, ",") + (*sl) = append((*sl), l...) + return nil +} + +func (sl StringList) String() string { + return strings.Join(sl, ", ") +} diff --git a/cmdupload/upload_test.go b/cmdupload/upload_test.go index 8aad397..3ca3aaa 100644 --- a/cmdupload/upload_test.go +++ b/cmdupload/upload_test.go @@ -7,7 +7,7 @@ import ( "immich-go/assets" "immich-go/helpers/gen" "immich-go/immich" - "immich-go/immich/logger" + "immich-go/logger" "reflect" "slices" "testing" diff --git a/go.mod b/go.mod index d970a2b..f535cba 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module immich-go -go 1.20 +go 1.21 require ( github.com/google/uuid v1.3.1 diff --git a/helpers/fshelper/parseArgs.go b/helpers/fshelper/parseArgs.go index a141d46..289b94b 100644 --- a/helpers/fshelper/parseArgs.go +++ b/helpers/fshelper/parseArgs.go @@ -61,11 +61,15 @@ func ParsePath(args []string, googlePhoto bool) ([]fs.FS, error) { } for pa, l := range p.paths { - f, err := newPathFS(pa, l) - if err != nil { - p.err = errors.Join(err) + if len(l) > 0 { + f, err := newPathFS(pa, l) + if err != nil { + p.err = errors.Join(err) + } else { + fsys = append(fsys, f) + } } else { - fsys = append(fsys, f) + fsys = append(fsys, os.DirFS(pa)) } } diff --git a/immich/immich.go b/immich/immich.go index 715e7d3..bf4c233 100644 --- a/immich/immich.go +++ b/immich/immich.go @@ -76,8 +76,6 @@ func (l *List[T]) UnmarshalJSON(data []byte) error { return json.Unmarshal(data, &l.list) } -type StringList struct{ List[string] } - type myBool bool func (b myBool) String() string { diff --git a/immich/logger/logger.go b/logger/logger.go similarity index 100% rename from immich/logger/logger.go rename to logger/logger.go diff --git a/main.go b/main.go index 435bd5d..8fdf1fd 100644 --- a/main.go +++ b/main.go @@ -12,7 +12,7 @@ import ( "immich-go/cmdupload" "immich-go/helpers/tzone" "immich-go/immich" - "immich-go/immich/logger" + "immich-go/logger" "os" "os/signal" )