From 723dc71b8f0fefe682b163a7a23c268aa6adaa51 Mon Sep 17 00:00:00 2001 From: Reshmi Date: Tue, 8 Jul 2025 12:38:26 +0530 Subject: [PATCH 1/7] add method to read the repos template --- artifactory/commands/utils/templateutils.go | 33 +++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/artifactory/commands/utils/templateutils.go b/artifactory/commands/utils/templateutils.go index 08d1be79a..b6afa1fcb 100644 --- a/artifactory/commands/utils/templateutils.go +++ b/artifactory/commands/utils/templateutils.go @@ -38,6 +38,39 @@ func ConvertTemplateToMap(tuc TemplateUserCommand) (map[string]interface{}, erro return configMap, errorutils.CheckError(err) } +func ConvertTemplateToMaps(tuc TemplateUserCommand) ([]map[string]interface{}, error) { + content, err := fileutils.ReadFile(tuc.TemplatePath()) + if errorutils.CheckError(err) != nil { + return nil, err + } + // Replace vars string-by-string if needed + if len(tuc.Vars()) > 0 { + templateVars := coreutils.SpecVarsStringToMap(tuc.Vars()) + content = coreutils.ReplaceVars(content, templateVars) + } + + var ( + configMap []map[string]interface{} + unmarshalErr error + ) + + unmarshalErr = json.Unmarshal(content, &configMap) + if unmarshalErr == nil { + return configMap, nil + } + + var singleMap map[string]interface{} + err = json.Unmarshal(content, &singleMap) + if err != nil { + if unmarshalErr != nil { + return nil, errorutils.CheckError(unmarshalErr) + } + return nil, errorutils.CheckError(err) + } + + return []map[string]interface{}{singleMap}, nil +} + func ValidateMapEntry(key string, value interface{}, writersMap map[string]ioutils.AnswerWriter) error { if _, ok := writersMap[key]; !ok { return errorutils.CheckErrorf("template syntax error: unknown key: \"" + key + "\".") From 171d95ab85cb97059443323f1a9cf88e2c73a834 Mon Sep 17 00:00:00 2001 From: Reshmi Date: Tue, 8 Jul 2025 14:49:41 +0530 Subject: [PATCH 2/7] update dependencies --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 0f1ca2dad..f58a16b66 100644 --- a/go.mod +++ b/go.mod @@ -114,7 +114,7 @@ require ( sigs.k8s.io/yaml v1.4.0 // indirect ) -// replace github.com/jfrog/jfrog-client-go => github.com/jfrog/jfrog-client-go v1.28.1-0.20250707095624-7062538a0961 +replace github.com/jfrog/jfrog-client-go => github.com/reshmifrog/jfrog-client-go v0.0.0-20250707103933-13243eba42b1 // replace github.com/jfrog/build-info-go => github.com/jfrog/build-info-go v1.8.9-0.20250611113558-c1a092f216fd diff --git a/go.sum b/go.sum index 6a280e965..797fc0e0a 100644 --- a/go.sum +++ b/go.sum @@ -113,8 +113,6 @@ github.com/jfrog/build-info-go v1.10.14 h1:PWnw+rBwiQTHZ5q+84+E8MHFjtAQkB3+Oc2sK github.com/jfrog/build-info-go v1.10.14/go.mod h1:JcISnovFXKx3wWf3p1fcMmlPdt6adxScXvoJN4WXqIE= github.com/jfrog/gofrog v1.7.6 h1:QmfAiRzVyaI7JYGsB7cxfAJePAZTzFz0gRWZSE27c6s= github.com/jfrog/gofrog v1.7.6/go.mod h1:ntr1txqNOZtHplmaNd7rS4f8jpA5Apx8em70oYEe7+4= -github.com/jfrog/jfrog-client-go v1.54.2 h1:z7GjCyIbV5Wx35USVDCF/0vf/fCWki++pZ7lcKt0gj0= -github.com/jfrog/jfrog-client-go v1.54.2/go.mod h1:1v0eih4thdPA4clBo9TuvAMT25sGDr1IQJ81DXQ/lBY= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4= @@ -186,6 +184,8 @@ github.com/pkg/term v1.1.0/go.mod h1:E25nymQcrSllhX42Ok8MRm1+hyBdHY0dCeiKZ9jpNGw github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/reshmifrog/jfrog-client-go v0.0.0-20250707103933-13243eba42b1 h1:U1AE6RAewZv1t6AJhEfKDTgqWcZmlDaRc31q2q9uqSA= +github.com/reshmifrog/jfrog-client-go v0.0.0-20250707103933-13243eba42b1/go.mod h1:1v0eih4thdPA4clBo9TuvAMT25sGDr1IQJ81DXQ/lBY= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= From 7dd1d10e9d230cf6b56382b416ecf2745fb1ef7d Mon Sep 17 00:00:00 2001 From: Reshmi Date: Thu, 10 Jul 2025 15:56:05 +0530 Subject: [PATCH 3/7] update dependency and refactor template read method --- artifactory/commands/utils/templateutils.go | 37 +++++++++------------ go.mod | 2 +- go.sum | 4 +-- 3 files changed, 18 insertions(+), 25 deletions(-) diff --git a/artifactory/commands/utils/templateutils.go b/artifactory/commands/utils/templateutils.go index b6afa1fcb..ea17589e5 100644 --- a/artifactory/commands/utils/templateutils.go +++ b/artifactory/commands/utils/templateutils.go @@ -21,15 +21,15 @@ type TemplateUserCommand interface { Vars() string } -func ConvertTemplateToMap(tuc TemplateUserCommand) (map[string]interface{}, error) { +func ConvertTemplateToMap(templateUserCommand TemplateUserCommand) (map[string]interface{}, error) { // Read the template file - content, err := fileutils.ReadFile(tuc.TemplatePath()) + content, err := fileutils.ReadFile(templateUserCommand.TemplatePath()) if errorutils.CheckError(err) != nil { return nil, err } // Replace vars string-by-string if needed - if len(tuc.Vars()) > 0 { - templateVars := coreutils.SpecVarsStringToMap(tuc.Vars()) + if len(templateUserCommand.Vars()) > 0 { + templateVars := coreutils.SpecVarsStringToMap(templateUserCommand.Vars()) content = coreutils.ReplaceVars(content, templateVars) } // Unmarshal template to a map @@ -38,37 +38,30 @@ func ConvertTemplateToMap(tuc TemplateUserCommand) (map[string]interface{}, erro return configMap, errorutils.CheckError(err) } -func ConvertTemplateToMaps(tuc TemplateUserCommand) ([]map[string]interface{}, error) { - content, err := fileutils.ReadFile(tuc.TemplatePath()) +func ConvertTemplateToMaps(templateUserCommand TemplateUserCommand) ([]map[string]interface{}, error) { + content, err := fileutils.ReadFile(templateUserCommand.TemplatePath()) if errorutils.CheckError(err) != nil { return nil, err } // Replace vars string-by-string if needed - if len(tuc.Vars()) > 0 { - templateVars := coreutils.SpecVarsStringToMap(tuc.Vars()) + if len(templateUserCommand.Vars()) > 0 { + templateVars := coreutils.SpecVarsStringToMap(templateUserCommand.Vars()) content = coreutils.ReplaceVars(content, templateVars) } - var ( - configMap []map[string]interface{} - unmarshalErr error - ) - - unmarshalErr = json.Unmarshal(content, &configMap) - if unmarshalErr == nil { - return configMap, nil + var multiRepoCreateEntities []map[string]interface{} + err = json.Unmarshal(content, &multiRepoCreateEntities) + if err == nil { + return multiRepoCreateEntities, nil } - var singleMap map[string]interface{} - err = json.Unmarshal(content, &singleMap) + var repoCreateEntity map[string]interface{} + err = json.Unmarshal(content, &repoCreateEntity) if err != nil { - if unmarshalErr != nil { - return nil, errorutils.CheckError(unmarshalErr) - } return nil, errorutils.CheckError(err) } - return []map[string]interface{}{singleMap}, nil + return []map[string]interface{}{repoCreateEntity}, nil } func ValidateMapEntry(key string, value interface{}, writersMap map[string]ioutils.AnswerWriter) error { diff --git a/go.mod b/go.mod index f58a16b66..e7a28886e 100644 --- a/go.mod +++ b/go.mod @@ -114,7 +114,7 @@ require ( sigs.k8s.io/yaml v1.4.0 // indirect ) -replace github.com/jfrog/jfrog-client-go => github.com/reshmifrog/jfrog-client-go v0.0.0-20250707103933-13243eba42b1 +replace github.com/jfrog/jfrog-client-go => github.com/reshmifrog/jfrog-client-go v1.28.1-0.20250710101657-612b8a1389d1 // replace github.com/jfrog/build-info-go => github.com/jfrog/build-info-go v1.8.9-0.20250611113558-c1a092f216fd diff --git a/go.sum b/go.sum index 797fc0e0a..88a7959a4 100644 --- a/go.sum +++ b/go.sum @@ -184,8 +184,8 @@ github.com/pkg/term v1.1.0/go.mod h1:E25nymQcrSllhX42Ok8MRm1+hyBdHY0dCeiKZ9jpNGw github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/reshmifrog/jfrog-client-go v0.0.0-20250707103933-13243eba42b1 h1:U1AE6RAewZv1t6AJhEfKDTgqWcZmlDaRc31q2q9uqSA= -github.com/reshmifrog/jfrog-client-go v0.0.0-20250707103933-13243eba42b1/go.mod h1:1v0eih4thdPA4clBo9TuvAMT25sGDr1IQJ81DXQ/lBY= +github.com/reshmifrog/jfrog-client-go v1.28.1-0.20250710101657-612b8a1389d1 h1:/wK/zL8yXxZCqQ7YFlBEfUeRoQ7vkYRP4edaioxhggw= +github.com/reshmifrog/jfrog-client-go v1.28.1-0.20250710101657-612b8a1389d1/go.mod h1:1v0eih4thdPA4clBo9TuvAMT25sGDr1IQJ81DXQ/lBY= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= From 85cbe13173aafd37a11b84d381b1425b2ea753e1 Mon Sep 17 00:00:00 2001 From: Reshmi Date: Fri, 11 Jul 2025 16:15:09 +0530 Subject: [PATCH 4/7] refactor onvertTemplateToMaps --- artifactory/commands/utils/templateutils.go | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/artifactory/commands/utils/templateutils.go b/artifactory/commands/utils/templateutils.go index ea17589e5..4b4914a50 100644 --- a/artifactory/commands/utils/templateutils.go +++ b/artifactory/commands/utils/templateutils.go @@ -40,8 +40,8 @@ func ConvertTemplateToMap(templateUserCommand TemplateUserCommand) (map[string]i func ConvertTemplateToMaps(templateUserCommand TemplateUserCommand) ([]map[string]interface{}, error) { content, err := fileutils.ReadFile(templateUserCommand.TemplatePath()) - if errorutils.CheckError(err) != nil { - return nil, err + if err != nil { + return nil, errorutils.CheckError(err) } // Replace vars string-by-string if needed if len(templateUserCommand.Vars()) > 0 { @@ -49,19 +49,28 @@ func ConvertTemplateToMaps(templateUserCommand TemplateUserCommand) ([]map[strin content = coreutils.ReplaceVars(content, templateVars) } + isArray := checkTemplateType(content) + var multiRepoCreateEntities []map[string]interface{} err = json.Unmarshal(content, &multiRepoCreateEntities) - if err == nil { + if err != nil && isArray { + return nil, errorutils.CheckError(err) + } else if err == nil { return multiRepoCreateEntities, nil } var repoCreateEntity map[string]interface{} err = json.Unmarshal(content, &repoCreateEntity) - if err != nil { - return nil, errorutils.CheckError(err) + if err == nil { + return []map[string]interface{}{repoCreateEntity}, nil } - return []map[string]interface{}{repoCreateEntity}, nil + return nil, err +} + +func checkTemplateType(content []byte) bool { + trimmedContent := strings.TrimSpace(string(content)) + return len(trimmedContent) > 1 && trimmedContent[0] == '[' && trimmedContent[len(trimmedContent)-1] == ']' } func ValidateMapEntry(key string, value interface{}, writersMap map[string]ioutils.AnswerWriter) error { From f8ff4f6a2fe99f68cfafb75dfadd475f1d1c6c3b Mon Sep 17 00:00:00 2001 From: Reshmi Date: Wed, 16 Jul 2025 10:25:33 +0530 Subject: [PATCH 5/7] add check for error type --- artifactory/commands/utils/templateutils.go | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/artifactory/commands/utils/templateutils.go b/artifactory/commands/utils/templateutils.go index 4b4914a50..3eb74d4f8 100644 --- a/artifactory/commands/utils/templateutils.go +++ b/artifactory/commands/utils/templateutils.go @@ -49,28 +49,23 @@ func ConvertTemplateToMaps(templateUserCommand TemplateUserCommand) ([]map[strin content = coreutils.ReplaceVars(content, templateVars) } - isArray := checkTemplateType(content) - var multiRepoCreateEntities []map[string]interface{} err = json.Unmarshal(content, &multiRepoCreateEntities) - if err != nil && isArray { - return nil, errorutils.CheckError(err) - } else if err == nil { + if err == nil { return multiRepoCreateEntities, nil } + if _, ok := err.(*json.SyntaxError); ok { + return nil, errorutils.CheckError(err) + } + var repoCreateEntity map[string]interface{} err = json.Unmarshal(content, &repoCreateEntity) if err == nil { return []map[string]interface{}{repoCreateEntity}, nil } - return nil, err -} - -func checkTemplateType(content []byte) bool { - trimmedContent := strings.TrimSpace(string(content)) - return len(trimmedContent) > 1 && trimmedContent[0] == '[' && trimmedContent[len(trimmedContent)-1] == ']' + return nil, errorutils.CheckError(err) } func ValidateMapEntry(key string, value interface{}, writersMap map[string]ioutils.AnswerWriter) error { From 77eed26afd43eb7e36c945f921a6961fc1d14fa0 Mon Sep 17 00:00:00 2001 From: Reshmi Date: Wed, 16 Jul 2025 12:47:29 +0530 Subject: [PATCH 6/7] change return type for ConvertTemplateToMaps --- artifactory/commands/utils/templateutils.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/artifactory/commands/utils/templateutils.go b/artifactory/commands/utils/templateutils.go index 3eb74d4f8..f88f5854c 100644 --- a/artifactory/commands/utils/templateutils.go +++ b/artifactory/commands/utils/templateutils.go @@ -38,7 +38,7 @@ func ConvertTemplateToMap(templateUserCommand TemplateUserCommand) (map[string]i return configMap, errorutils.CheckError(err) } -func ConvertTemplateToMaps(templateUserCommand TemplateUserCommand) ([]map[string]interface{}, error) { +func ConvertTemplateToMaps(templateUserCommand TemplateUserCommand) (interface{}, error) { content, err := fileutils.ReadFile(templateUserCommand.TemplatePath()) if err != nil { return nil, errorutils.CheckError(err) @@ -62,7 +62,7 @@ func ConvertTemplateToMaps(templateUserCommand TemplateUserCommand) ([]map[strin var repoCreateEntity map[string]interface{} err = json.Unmarshal(content, &repoCreateEntity) if err == nil { - return []map[string]interface{}{repoCreateEntity}, nil + return repoCreateEntity, nil } return nil, errorutils.CheckError(err) From de30fe25c92104168ba7d2d259da87533ebfe0d4 Mon Sep 17 00:00:00 2001 From: Reshmi Date: Thu, 17 Jul 2025 10:15:00 +0530 Subject: [PATCH 7/7] update dependencies --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index e7a28886e..41c311cb2 100644 --- a/go.mod +++ b/go.mod @@ -114,7 +114,7 @@ require ( sigs.k8s.io/yaml v1.4.0 // indirect ) -replace github.com/jfrog/jfrog-client-go => github.com/reshmifrog/jfrog-client-go v1.28.1-0.20250710101657-612b8a1389d1 +replace github.com/jfrog/jfrog-client-go => github.com/jfrog/jfrog-client-go v1.28.1-0.20250717041744-d3ea4d99f4e7 // replace github.com/jfrog/build-info-go => github.com/jfrog/build-info-go v1.8.9-0.20250611113558-c1a092f216fd diff --git a/go.sum b/go.sum index 88a7959a4..502fb5b70 100644 --- a/go.sum +++ b/go.sum @@ -113,6 +113,8 @@ github.com/jfrog/build-info-go v1.10.14 h1:PWnw+rBwiQTHZ5q+84+E8MHFjtAQkB3+Oc2sK github.com/jfrog/build-info-go v1.10.14/go.mod h1:JcISnovFXKx3wWf3p1fcMmlPdt6adxScXvoJN4WXqIE= github.com/jfrog/gofrog v1.7.6 h1:QmfAiRzVyaI7JYGsB7cxfAJePAZTzFz0gRWZSE27c6s= github.com/jfrog/gofrog v1.7.6/go.mod h1:ntr1txqNOZtHplmaNd7rS4f8jpA5Apx8em70oYEe7+4= +github.com/jfrog/jfrog-client-go v1.28.1-0.20250717041744-d3ea4d99f4e7 h1:IHClKKEHPZMR1UWTTVYjqf3asYrCuEq1wd4lI/ASHRQ= +github.com/jfrog/jfrog-client-go v1.28.1-0.20250717041744-d3ea4d99f4e7/go.mod h1:1v0eih4thdPA4clBo9TuvAMT25sGDr1IQJ81DXQ/lBY= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4= @@ -184,8 +186,6 @@ github.com/pkg/term v1.1.0/go.mod h1:E25nymQcrSllhX42Ok8MRm1+hyBdHY0dCeiKZ9jpNGw github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/reshmifrog/jfrog-client-go v1.28.1-0.20250710101657-612b8a1389d1 h1:/wK/zL8yXxZCqQ7YFlBEfUeRoQ7vkYRP4edaioxhggw= -github.com/reshmifrog/jfrog-client-go v1.28.1-0.20250710101657-612b8a1389d1/go.mod h1:1v0eih4thdPA4clBo9TuvAMT25sGDr1IQJ81DXQ/lBY= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=