Skip to content

Commit

Permalink
Merge remote-tracking branch 'upstream/dev' into multipart-upload
Browse files Browse the repository at this point in the history
  • Loading branch information
yahavi committed Feb 22, 2024
2 parents 6d7d910 + 3f31e60 commit 0578409
Show file tree
Hide file tree
Showing 16 changed files with 295 additions and 135 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ jobs:
- uses: actions/checkout@v4

- name: Setup Python3
uses: actions/setup-python@v4
uses: actions/setup-python@v5
with:
python-version: "3.x"

Expand Down
18 changes: 18 additions & 0 deletions artifactory/commands/golang/go.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import (
"github.com/jfrog/jfrog-client-go/utils/io/fileutils"
"github.com/jfrog/jfrog-client-go/utils/log"
"net/http"
"os"
"path"
"path/filepath"
"strings"
Expand Down Expand Up @@ -328,3 +329,20 @@ func buildPackageVersionRequest(name, branchName string) string {
// No version was given to "go get" command, so the latest version should be requested
return path.Join(packageVersionRequest, "latest.info")
}

func SetArtifactoryAsResolutionServer(serverDetails *config.ServerDetails, depsRepo string) (err error) {
err = setGoProxy(serverDetails, depsRepo)
if err != nil {
err = fmt.Errorf("failed while setting Artifactory as a dependencies resolution registry: %s", err.Error())
}
return
}

func setGoProxy(server *config.ServerDetails, remoteGoRepo string) error {
repoUrl, err := goutils.GetArtifactoryRemoteRepoUrl(server, remoteGoRepo)
if err != nil {
return err
}
repoUrl += "|direct"
return os.Setenv("GOPROXY", repoUrl)
}
24 changes: 24 additions & 0 deletions artifactory/commands/golang/go_test.go
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
package golang

import (
"fmt"
"github.com/jfrog/jfrog-cli-core/v2/utils/config"
goutils "github.com/jfrog/jfrog-cli-core/v2/utils/golang"
testsutils "github.com/jfrog/jfrog-client-go/utils/tests"
"github.com/stretchr/testify/assert"
"os"
"path/filepath"
"strings"
"testing"
)

Expand Down Expand Up @@ -42,3 +45,24 @@ func TestGetPackageFilesPath(t *testing.T) {
assert.NoError(t, err)
assert.Equal(t, expectedPackagePath, actualPackagePath)
}

func TestSetArtifactoryAsResolutionServer(t *testing.T) {
server := &config.ServerDetails{
Url: "http://localhost:8080/",
ArtifactoryUrl: "http://localhost:8080/artifactory/",
User: "myUser",
Password: "myPassword",
ServerId: "myServer",
}
repo := "myRepo"

// Setting the GOPROXY value to "" to ensure that the new value set in SetArtifactoryAsResolutionServer is correctly validated.
cleanup := testsutils.SetEnvWithCallbackAndAssert(t, "GOPROXY", "")
defer cleanup()

assert.NoError(t, SetArtifactoryAsResolutionServer(server, repo))

serverUrlWithoutHttp := strings.TrimPrefix(server.ArtifactoryUrl, "http://")
expectedGoProxy := fmt.Sprintf("http://%s:%s@%sapi/go/%s|direct", server.User, server.Password, serverUrlWithoutHttp, repo)
assert.Equal(t, expectedGoProxy, os.Getenv("GOPROXY"))
}
153 changes: 128 additions & 25 deletions artifactory/commands/repository/repository.go
Original file line number Diff line number Diff line change
Expand Up @@ -239,6 +239,8 @@ var localRepoHandlers = map[string]repoHandler{
Alpine: localAlpineHandler,
Generic: localGenericHandler,
Swift: localSwiftHandler,
Terraform: localTerraformHandler,
Cargo: localCargoHandler,
}

func localMavenHandler(servicesManager artifactory.ArtifactoryServicesManager, jsonConfig []byte, isUpdate bool) error {
Expand Down Expand Up @@ -620,6 +622,36 @@ func localSwiftHandler(servicesManager artifactory.ArtifactoryServicesManager, j
return err
}

func localTerraformHandler(servicesManager artifactory.ArtifactoryServicesManager, jsonConfig []byte, isUpdate bool) error {
params := services.NewTerraformLocalRepositoryParams()
err := json.Unmarshal(jsonConfig, &params)
if errorutils.CheckError(err) != nil {
return err
}

if isUpdate {
err = servicesManager.UpdateLocalRepository().Terraform(params)
} else {
err = servicesManager.CreateLocalRepository().Terraform(params)
}
return err
}

func localCargoHandler(servicesManager artifactory.ArtifactoryServicesManager, jsonConfig []byte, isUpdate bool) error {
params := services.NewCargoLocalRepositoryParams()
err := json.Unmarshal(jsonConfig, &params)
if errorutils.CheckError(err) != nil {
return err
}

if isUpdate {
err = servicesManager.UpdateLocalRepository().Cargo(params)
} else {
err = servicesManager.CreateLocalRepository().Cargo(params)
}
return err
}

func localGenericHandler(servicesManager artifactory.ArtifactoryServicesManager, jsonConfig []byte, isUpdate bool) error {
params := services.NewGenericLocalRepositoryParams()
err := json.Unmarshal(jsonConfig, &params)
Expand Down Expand Up @@ -665,6 +697,8 @@ var remoteRepoHandlers = map[string]repoHandler{
Alpine: remoteAlpineHandler,
Generic: remoteGenericHandler,
Swift: remoteSwiftHandler,
Terraform: remoteTerraformHandler,
Cargo: remoteCargoHandler,
}

func remoteMavenHandler(servicesManager artifactory.ArtifactoryServicesManager, jsonConfig []byte, isUpdate bool) error {
Expand Down Expand Up @@ -1059,6 +1093,34 @@ func remoteSwiftHandler(servicesManager artifactory.ArtifactoryServicesManager,
return err
}

func remoteCargoHandler(servicesManager artifactory.ArtifactoryServicesManager, jsonConfig []byte, isUpdate bool) error {
params := services.NewCargoRemoteRepositoryParams()
err := json.Unmarshal(jsonConfig, &params)
if errorutils.CheckError(err) != nil {
return err
}
if isUpdate {
err = servicesManager.UpdateRemoteRepository().Cargo(params)
} else {
err = servicesManager.CreateRemoteRepository().Cargo(params)
}
return err
}

func remoteTerraformHandler(servicesManager artifactory.ArtifactoryServicesManager, jsonConfig []byte, isUpdate bool) error {
params := services.NewTerraformRemoteRepositoryParams()
err := json.Unmarshal(jsonConfig, &params)
if errorutils.CheckError(err) != nil {
return err
}
if isUpdate {
err = servicesManager.UpdateRemoteRepository().Terraform(params)
} else {
err = servicesManager.CreateRemoteRepository().Terraform(params)
}
return err
}

func remoteGenericHandler(servicesManager artifactory.ArtifactoryServicesManager, jsonConfig []byte, isUpdate bool) error {
params := services.NewGenericRemoteRepositoryParams()
err := json.Unmarshal(jsonConfig, &params)
Expand Down Expand Up @@ -1102,6 +1164,8 @@ var federatedRepoHandlers = map[string]repoHandler{
Generic: federatedGenericHandler,
Yum: federatedYumHandler,
Swift: federatedSwiftHandler,
Terraform: federatedTerraformHandler,
Cargo: federatedCargoHandler,
}

func federatedMavenHandler(servicesManager artifactory.ArtifactoryServicesManager, jsonConfig []byte, isUpdate bool) error {
Expand Down Expand Up @@ -1430,6 +1494,30 @@ func federatedSwiftHandler(servicesManager artifactory.ArtifactoryServicesManage
return servicesManager.CreateFederatedRepository().Swift(params)
}

func federatedTerraformHandler(servicesManager artifactory.ArtifactoryServicesManager, jsonConfig []byte, isUpdate bool) error {
params := services.NewTerraformFederatedRepositoryParams()
err := json.Unmarshal(jsonConfig, &params)
if errorutils.CheckError(err) != nil {
return err
}
if isUpdate {
return servicesManager.UpdateFederatedRepository().Terraform(params)
}
return servicesManager.CreateFederatedRepository().Terraform(params)
}

func federatedCargoHandler(servicesManager artifactory.ArtifactoryServicesManager, jsonConfig []byte, isUpdate bool) error {
params := services.NewCargoFederatedRepositoryParams()
err := json.Unmarshal(jsonConfig, &params)
if errorutils.CheckError(err) != nil {
return err
}
if isUpdate {
return servicesManager.UpdateFederatedRepository().Cargo(params)
}
return servicesManager.CreateFederatedRepository().Cargo(params)
}

func federatedYumHandler(servicesManager artifactory.ArtifactoryServicesManager, jsonConfig []byte, isUpdate bool) error {
params := services.NewYumFederatedRepositoryParams()
err := json.Unmarshal(jsonConfig, &params)
Expand All @@ -1443,31 +1531,32 @@ func federatedYumHandler(servicesManager artifactory.ArtifactoryServicesManager,
}

var virtualRepoHandlers = map[string]repoHandler{
Maven: virtualMavenHandler,
Gradle: virtualGradleHandler,
Ivy: virtualIvyHandler,
Sbt: virtualSbtHandler,
Helm: virtualHelmHandler,
Rpm: virtualRpmHandler,
Nuget: virtualNugetHandler,
Cran: virtualCranHandler,
Gems: virtualGemsHandler,
Npm: virtualNpmHandler,
Bower: virtualBowerHandler,
Debian: virtualDebianHandler,
Pypi: virtualPypiHandler,
Docker: virtualDockerHandler,
Gitlfs: virtualGitLfsHandler,
Go: virtualGoHandler,
Yum: virtualYumHandler,
Conan: virtualConanHandler,
Chef: virtualChefHandler,
Puppet: virtualPuppetHandler,
Conda: virtualCondaHandler,
P2: virtualP2Handler,
Alpine: virtualAlpineHandler,
Generic: virtualGenericHandler,
Swift: virtualSwiftHandler,
Maven: virtualMavenHandler,
Gradle: virtualGradleHandler,
Ivy: virtualIvyHandler,
Sbt: virtualSbtHandler,
Helm: virtualHelmHandler,
Rpm: virtualRpmHandler,
Nuget: virtualNugetHandler,
Cran: virtualCranHandler,
Gems: virtualGemsHandler,
Npm: virtualNpmHandler,
Bower: virtualBowerHandler,
Debian: virtualDebianHandler,
Pypi: virtualPypiHandler,
Docker: virtualDockerHandler,
Gitlfs: virtualGitLfsHandler,
Go: virtualGoHandler,
Yum: virtualYumHandler,
Conan: virtualConanHandler,
Chef: virtualChefHandler,
Puppet: virtualPuppetHandler,
Conda: virtualCondaHandler,
P2: virtualP2Handler,
Alpine: virtualAlpineHandler,
Generic: virtualGenericHandler,
Swift: virtualSwiftHandler,
Terraform: virtualTerraformHandler,
}

func virtualMavenHandler(servicesManager artifactory.ArtifactoryServicesManager, jsonConfig []byte, isUpdate bool) error {
Expand Down Expand Up @@ -1806,6 +1895,20 @@ func virtualSwiftHandler(servicesManager artifactory.ArtifactoryServicesManager,
return err
}

func virtualTerraformHandler(servicesManager artifactory.ArtifactoryServicesManager, jsonConfig []byte, isUpdate bool) error {
params := services.NewTerraformVirtualRepositoryParams()
err := json.Unmarshal(jsonConfig, &params)
if errorutils.CheckError(err) != nil {
return err
}
if isUpdate {
err = servicesManager.UpdateVirtualRepository().Terraform(params)
} else {
err = servicesManager.CreateVirtualRepository().Terraform(params)
}
return err
}

func virtualGenericHandler(servicesManager artifactory.ArtifactoryServicesManager, jsonConfig []byte, isUpdate bool) error {
params := services.NewGenericVirtualRepositoryParams()
err := json.Unmarshal(jsonConfig, &params)
Expand Down
8 changes: 5 additions & 3 deletions artifactory/commands/repository/template.go
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,8 @@ const (
Conda = "conda"
P2 = "p2"
Swift = "swift"
Terraform = "terraform"
Cargo = "cargo"

// Repo layout Refs
BowerDefaultRepoLayout = "bower-default"
Expand Down Expand Up @@ -856,9 +858,9 @@ var questionMap = map[string]ioutils.QuestionInfo{
Writer: ioutils.WriteStringAnswer,
},
PrimaryKeyPairRef: ioutils.FreeStringQuestionInfo,
Username: ioutils.FreeStringQuestionInfo,
Password: ioutils.FreeStringQuestionInfo,
Proxy: ioutils.FreeStringQuestionInfo,
Username: ioutils.FreeStringQuestionInfo,
Password: ioutils.FreeStringQuestionInfo,
Proxy: ioutils.FreeStringQuestionInfo,
RemoteRepoChecksumPolicyType: {
Options: []prompt.Suggest{
{Text: GenerateIfAbsentPolicy},
Expand Down
7 changes: 2 additions & 5 deletions artifactory/utils/repositoryutils.go
Original file line number Diff line number Diff line change
Expand Up @@ -65,16 +65,13 @@ func GetRepositories(artDetails *config.ServerDetails, repoTypes ...RepoType) ([
if err != nil {
return nil, err
}
if len(repoTypes) == 0 {
return GetFilteredRepositoriesByName(sm, nil, nil)
}
repos := []string{}
for _, repoType := range repoTypes {
repoKey, err := GetFilteredRepositoriesByNameAndType(sm, nil, nil, repoType)
filteredRepos, err := GetFilteredRepositoriesByNameAndType(sm, nil, nil, repoType)
if err != nil {
return repos, err
}
repos = append(repos, repoKey...)
repos = append(repos, filteredRepos...)
}

return repos, nil
Expand Down
Loading

0 comments on commit 0578409

Please sign in to comment.