package cmd import ( "fmt" "github.com/spf13/cobra" ) var storageCmd = &cobra.Command{ Use: "storage", Short: "Manage object storage", } var storageListCmd = &cobra.Command{ Use: "list", Short: "List storage instances", RunE: func(cmd *cobra.Command, args []string) error { svc := prov.Storage() if svc == nil { return fmt.Errorf("storage management not supported by current provider") } instances, err := svc.List(cmd.Context()) if err != nil { return err } return out.Print(instances) }, } var bucketCmd = &cobra.Command{ Use: "bucket ", Short: "Manage buckets", Args: cobra.ExactArgs(1), } var bucketListCmd = &cobra.Command{ Use: "list", Short: "List buckets", RunE: func(cmd *cobra.Command, args []string) error { svc := prov.Storage() if svc == nil { return fmt.Errorf("storage management not supported") } buckets, err := svc.BucketList(cmd.Context(), args[0]) if err != nil { return err } return out.Print(buckets) }, } var bucketCreateCmd = &cobra.Command{ Use: "create ", Short: "Create a bucket", Args: cobra.ExactArgs(2), RunE: func(cmd *cobra.Command, args []string) error { svc := prov.Storage() if svc == nil { return fmt.Errorf("storage management not supported") } if err := svc.BucketCreate(cmd.Context(), args[0], args[1]); err != nil { return err } fmt.Printf("Bucket %q created\n", args[1]) return nil }, } func init() { bucketCmd.AddCommand(bucketListCmd) bucketCmd.AddCommand(bucketCreateCmd) storageCmd.AddCommand(storageListCmd) storageCmd.AddCommand(bucketCmd) rootCmd.AddCommand(storageCmd) }