PurgeRevisionsCommand allows removing all revisions from a storage provider.
(cfg *config.Config)
| 41 | |
| 42 | // PurgeRevisionsCommand allows removing all revisions from a storage provider. |
| 43 | func PurgeRevisionsCommand(cfg *config.Config) *cobra.Command { |
| 44 | revCmd := &cobra.Command{ |
| 45 | Use: "purge", |
| 46 | Short: "purge revisions", |
| 47 | RunE: func(cmd *cobra.Command, args []string) error { |
| 48 | basePath, _ := cmd.Flags().GetString("basepath") |
| 49 | |
| 50 | var ( |
| 51 | bs revisions.DelBlobstore |
| 52 | err error |
| 53 | ) |
| 54 | blobstoreFlag, _ := cmd.Flags().GetString("blobstore") |
| 55 | switch blobstoreFlag { |
| 56 | case "decomposeds3": |
| 57 | bs, err = decomposeds3bs.New( |
| 58 | cfg.StorageUsers.Drivers.DecomposedS3.Endpoint, |
| 59 | cfg.StorageUsers.Drivers.DecomposedS3.Region, |
| 60 | cfg.StorageUsers.Drivers.DecomposedS3.Bucket, |
| 61 | cfg.StorageUsers.Drivers.DecomposedS3.AccessKey, |
| 62 | cfg.StorageUsers.Drivers.DecomposedS3.SecretKey, |
| 63 | decomposeds3bs.Options{}, |
| 64 | ) |
| 65 | case "decomposed": |
| 66 | bs, err = decomposedbs.New(basePath) |
| 67 | case "none": |
| 68 | bs = nil |
| 69 | default: |
| 70 | err = errors.New("blobstore type not supported") |
| 71 | } |
| 72 | if err != nil { |
| 73 | fmt.Println(err) |
| 74 | return err |
| 75 | } |
| 76 | |
| 77 | var rid *provider.ResourceId |
| 78 | resourceIDFlag, _ := cmd.Flags().GetString("resource-id") |
| 79 | resid, err := storagespace.ParseID(resourceIDFlag) |
| 80 | if err == nil { |
| 81 | rid = &resid |
| 82 | } |
| 83 | |
| 84 | mechanism, _ := cmd.Flags().GetString("glob-mechanism") |
| 85 | if rid.GetOpaqueId() != "" { |
| 86 | mechanism = "glob" |
| 87 | } |
| 88 | |
| 89 | var ch <-chan string |
| 90 | switch mechanism { |
| 91 | default: |
| 92 | fallthrough |
| 93 | case "glob": |
| 94 | p := generatePath(basePath, rid) |
| 95 | if rid.GetOpaqueId() == "" { |
| 96 | p = filepath.Join(p, "*/*/*/*/*") |
| 97 | } |
| 98 | ch = revisions.Glob(p) |
| 99 | case "workers": |
| 100 | p := generatePath(basePath, rid) |
no test coverage detected