Skip to content

Commit

Permalink
Merge branch 'dev'
Browse files Browse the repository at this point in the history
  • Loading branch information
yahavi committed Jul 4, 2023
2 parents 83ced5a + 45dd4f9 commit 9e57a49
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 34 deletions.
31 changes: 2 additions & 29 deletions artifactory/commands/transferconfig/transferconfig.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@ import (
"bytes"
"context"
"fmt"
"github.com/jfrog/gofrog/version"
"net/http"
"os"
"strings"
"time"

"github.com/jfrog/gofrog/datastructures"
"github.com/jfrog/gofrog/version"

"github.com/jfrog/jfrog-cli-core/v2/artifactory/commands/generic"
"github.com/jfrog/jfrog-cli-core/v2/artifactory/commands/transferconfig/configxmlutils"
commandsUtils "github.com/jfrog/jfrog-cli-core/v2/artifactory/commands/utils"
Expand Down Expand Up @@ -152,9 +152,6 @@ func (tcc *TransferConfigCommand) Run() (err error) {
}

tcc.LogTitle("Phase 5/5 - Import repositories to the target Artifactory")
if err = tcc.deleteConflictingRepositories(selectedRepos); err != nil {
return
}
if err = tcc.TransferRepositoriesToTarget(selectedRepos, remoteRepos); err != nil {
return
}
Expand Down Expand Up @@ -528,30 +525,6 @@ func (tcc *TransferConfigCommand) getWorkingDirParam() string {
return ""
}

func (tcc *TransferConfigCommand) deleteConflictingRepositories(selectedRepos map[utils.RepoType][]string) error {
log.Info("Deleting conflicting repositories in the target Artifactory server, if any exist...")
targetRepos, err := tcc.TargetArtifactoryManager.GetAllRepositories()
if err != nil {
return err
}
allSourceRepos := datastructures.MakeSet[string]()
for _, selectedReposWithType := range selectedRepos {
for _, selectedRepo := range selectedReposWithType {
allSourceRepos.Add(selectedRepo)
}
}

for _, targetRepo := range *targetRepos {
if allSourceRepos.Exists(targetRepo.Key) {
if err = tcc.TargetArtifactoryManager.DeleteRepository(targetRepo.Key); err != nil {
return err
}
}
}
log.Info("Done deleting conflicting repositories")
return nil
}

// Make sure that the source Artifactory version is sufficient.
// Returns the source Artifactory version.
func (tcc *TransferConfigCommand) validateMinVersion() error {
Expand Down
23 changes: 23 additions & 0 deletions artifactory/commands/utils/transferconfigbase.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"encoding/json"
"fmt"

"github.com/jfrog/gofrog/datastructures"
"github.com/jfrog/jfrog-cli-core/v2/artifactory/utils"
"github.com/jfrog/jfrog-cli-core/v2/utils/config"
"github.com/jfrog/jfrog-cli-core/v2/utils/coreutils"
Expand Down Expand Up @@ -76,6 +77,11 @@ func (tcb *TransferConfigBase) ValidateDifferentServers() error {

// Create a map between the repository types to the list of repositories to transfer.
func (tcb *TransferConfigBase) GetSelectedRepositories() (map[utils.RepoType][]string, error) {
allTargetRepos, err := tcb.getAllTargetRepositories()
if err != nil {
return nil, err
}

result := make(map[utils.RepoType][]string, len(utils.RepoTypes)+1)
sourceRepos, err := tcb.SourceArtifactoryManager.GetAllRepositories()
if err != nil {
Expand All @@ -87,6 +93,10 @@ func (tcb *TransferConfigBase) GetSelectedRepositories() (map[utils.RepoType][]s
if shouldIncludeRepo, err := includeExcludeFilter.ShouldIncludeRepository(sourceRepo.Key); err != nil {
return nil, err
} else if shouldIncludeRepo {
if allTargetRepos.Exists(sourceRepo.Key) {
log.Info("Repository '" + sourceRepo.Key + "' already exists in the target Artifactory server. Skipping.")
continue
}
repoType := utils.RepoTypeFromString(sourceRepo.Type)
result[repoType] = append(result[repoType], sourceRepo.Key)
}
Expand Down Expand Up @@ -132,6 +142,19 @@ func (tcb *TransferConfigBase) TransferRepositoriesToTarget(reposToTransfer map[
return tcb.transferVirtualRepositoriesToTarget(reposToTransfer[utils.Virtual])
}

// Get a set of all repositories in the target Artifactory server.
func (tcb *TransferConfigBase) getAllTargetRepositories() (*datastructures.Set[string], error) {
targetRepos, err := tcb.TargetArtifactoryManager.GetAllRepositories()
if err != nil {
return nil, err
}
allTargetRepos := datastructures.MakeSet[string]()
for _, targetRepo := range *targetRepos {
allTargetRepos.Add(targetRepo.Key)
}
return allTargetRepos, nil
}

// Transfer local, federated, unknown, or virtual repositories
// reposToTransfer - Repositories names to transfer
// repoType - Repository type
Expand Down
17 changes: 13 additions & 4 deletions artifactory/commands/utils/transferconfigbase_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -119,10 +119,10 @@ func TestValidateDifferentServers(t *testing.T) {
}

func TestGetSelectedRepositories(t *testing.T) {
testServer, serverDetails, _ := commonTests.CreateRtRestsMockServer(t, func(w http.ResponseWriter, r *http.Request) {
sourceTestServer, sourceServerDetails, _ := commonTests.CreateRtRestsMockServer(t, func(w http.ResponseWriter, _ *http.Request) {
w.WriteHeader(http.StatusOK)
repositories := &[]services.RepositoryDetails{
{Key: "generic-local", Type: "local"}, {Key: "generic-local-filter", Type: "local"},
{Key: "generic-local", Type: "local"}, {Key: "generic-local-filter", Type: "local"}, {Key: "generic-local-existed", Type: "local"},
{Key: "generic-remote", Type: "remote"}, {Key: "generic-filter-remote", Type: "remote"},
{Key: "generic-virtual", Type: "virtual"}, {Key: "filter-generic-virtual", Type: "virtual"},
{Key: "generic-federated", Type: "federated"}, {Key: "generic-federated-filter", Type: "federated"},
Expand All @@ -132,9 +132,18 @@ func TestGetSelectedRepositories(t *testing.T) {
_, err = w.Write(reposBytes)
assert.NoError(t, err)
})
defer testServer.Close()
defer sourceTestServer.Close()
targetTestServer, targetServerDetails, _ := commonTests.CreateRtRestsMockServer(t, func(w http.ResponseWriter, _ *http.Request) {
w.WriteHeader(http.StatusOK)
repositories := &[]services.RepositoryDetails{{Key: "generic-local-existed", Type: "local"}}
reposBytes, err := json.Marshal(repositories)
assert.NoError(t, err)
_, err = w.Write(reposBytes)
assert.NoError(t, err)
})
defer targetTestServer.Close()

transferConfigBase := createTransferConfigBase(t, serverDetails, serverDetails)
transferConfigBase := createTransferConfigBase(t, sourceServerDetails, targetServerDetails)
transferConfigBase.SetExcludeReposPatterns([]string{"*filter*"})
selectedRepos, err := transferConfigBase.GetSelectedRepositories()
assert.NoError(t, err)
Expand Down
7 changes: 6 additions & 1 deletion xray/audit/npm/npm.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,16 @@ func BuildDependencyTree(npmArgs []string) (dependencyTree []*xrayUtils.GraphNod
npmArgs = addIgnoreScriptsFlag(npmArgs)

// Calculate npm dependencies
dependenciesList, err := biutils.CalculateNpmDependenciesList(npmExecutablePath, currentDir, packageInfo.BuildInfoModuleId(), npmArgs, false, log.Logger)
dependenciesMap, err := biutils.CalculateDependenciesMap(npmExecutablePath, currentDir, packageInfo.BuildInfoModuleId(), npmArgs, log.Logger)
if err != nil {
log.Info("Used npm version:", npmVersion.GetVersion())
return
}
var dependenciesList []buildinfo.Dependency
for _, dependency := range dependenciesMap {
dependenciesList = append(dependenciesList, dependency.Dependency)
}

// Parse the dependencies into Xray dependency tree format
dependencyTree = []*xrayUtils.GraphNode{parseNpmDependenciesList(dependenciesList, packageInfo)}
return
Expand Down

0 comments on commit 9e57a49

Please sign in to comment.