@@ -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+
349367func createServiceManager (serviceDetails auth.ServiceDetails ) (artifactory.ArtifactoryServicesManager , error ) {
350368 certsPath , err := coreutils .GetJfrogCertsDir ()
351369 if err != nil {
0 commit comments