github.com/jfrog/jfrog-cli-core/v2@v2.51.0/artifactory/commands/repository/delete.go (about) 1 package repository 2 3 import ( 4 "path/filepath" 5 "strings" 6 7 rtUtils "github.com/jfrog/jfrog-cli-core/v2/artifactory/utils" 8 "github.com/jfrog/jfrog-cli-core/v2/utils/config" 9 "github.com/jfrog/jfrog-cli-core/v2/utils/coreutils" 10 "github.com/jfrog/jfrog-client-go/artifactory" 11 ) 12 13 type RepoDeleteCommand struct { 14 serverDetails *config.ServerDetails 15 repoPattern string 16 quiet bool 17 } 18 19 func NewRepoDeleteCommand() *RepoDeleteCommand { 20 return &RepoDeleteCommand{} 21 } 22 23 func (rdc *RepoDeleteCommand) SetRepoPattern(repoPattern string) *RepoDeleteCommand { 24 rdc.repoPattern = repoPattern 25 return rdc 26 } 27 28 func (rdc *RepoDeleteCommand) SetQuiet(quiet bool) *RepoDeleteCommand { 29 rdc.quiet = quiet 30 return rdc 31 } 32 33 func (rdc *RepoDeleteCommand) SetServerDetails(serverDetails *config.ServerDetails) *RepoDeleteCommand { 34 rdc.serverDetails = serverDetails 35 return rdc 36 } 37 38 func (rdc *RepoDeleteCommand) ServerDetails() (*config.ServerDetails, error) { 39 return rdc.serverDetails, nil 40 } 41 42 func (rdc *RepoDeleteCommand) CommandName() string { 43 return "rt_repo_delete" 44 } 45 46 func (rdc *RepoDeleteCommand) Run() (err error) { 47 servicesManager, err := rtUtils.CreateServiceManager(rdc.serverDetails, -1, 0, false) 48 if err != nil { 49 return err 50 } 51 52 // A single repo to be deleted 53 if !strings.Contains(rdc.repoPattern, "*") { 54 return rdc.deleteRepo(&servicesManager, rdc.repoPattern) 55 } 56 57 // A pattern for the repo name was received 58 repos, err := servicesManager.GetAllRepositories() 59 if err != nil { 60 return err 61 } 62 for _, repo := range *repos { 63 matched, err := filepath.Match(rdc.repoPattern, repo.Key) 64 if err != nil { 65 return err 66 } 67 if matched { 68 if err := rdc.deleteRepo(&servicesManager, repo.Key); err != nil { 69 return err 70 } 71 } 72 } 73 return nil 74 } 75 76 func (rdc *RepoDeleteCommand) deleteRepo(servicesManager *artifactory.ArtifactoryServicesManager, repoKey string) error { 77 if !rdc.quiet && !coreutils.AskYesNo("Are you sure you want to permanently delete the repository "+repoKey+" including all of its content?", false) { 78 return nil 79 } 80 return (*servicesManager).DeleteRepository(repoKey) 81 }