Skip to content

Commit a4b0f67

Browse files
authored
Added ValidateRepoType method in utils. (#1421)
1 parent fe5fd6c commit a4b0f67

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed

artifactory/utils/utils.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import (
2222
"github.com/jfrog/jfrog-cli-core/v2/utils/coreutils"
2323
"github.com/jfrog/jfrog-client-go/access"
2424
"github.com/jfrog/jfrog-client-go/artifactory"
25+
artifactoryServices "github.com/jfrog/jfrog-client-go/artifactory/services"
2526
"github.com/jfrog/jfrog-client-go/auth"
2627
clientConfig "github.com/jfrog/jfrog-client-go/config"
2728
"github.com/jfrog/jfrog-client-go/distribution"
@@ -346,6 +347,23 @@ func ValidateRepoExists(repoKey string, serviceDetails auth.ServiceDetails) erro
346347
return nil
347348
}
348349

350+
// ValidateRepoType checks if the repository exists and is of the expected package type (e.g., "vscode", "jetbrains").
351+
func ValidateRepoType(repoKey string, serviceDetails auth.ServiceDetails, expectedType string) error {
352+
servicesManager, err := createServiceManager(serviceDetails)
353+
if err != nil {
354+
return err
355+
}
356+
repoDetails := &artifactoryServices.RepositoryDetails{}
357+
err = servicesManager.GetRepository(repoKey, repoDetails)
358+
if err != nil {
359+
return fmt.Errorf("failed to fetch repository details for %q: %w", repoKey, err)
360+
}
361+
if !strings.EqualFold(repoDetails.PackageType, expectedType) {
362+
return fmt.Errorf("repository '%s' is of type '%s', but expected type is '%s'", repoKey, repoDetails.PackageType, expectedType)
363+
}
364+
return nil
365+
}
366+
349367
func createServiceManager(serviceDetails auth.ServiceDetails) (artifactory.ArtifactoryServicesManager, error) {
350368
certsPath, err := coreutils.GetJfrogCertsDir()
351369
if err != nil {

0 commit comments

Comments
 (0)