package bucket import ( "fmt" "strconv" "github.com/spf13/cobra" cliapi "gitlink.org.cn/cloudream/jcs-pub/client/sdk/api/v1" jcstypes "gitlink.org.cn/cloudream/jcs-pub/common/types" "gitlink.org.cn/cloudream/jcs-pub/jcsctl/cmd" ) func init() { var opt deleteOpt cmd := cobra.Command{ Use: "delete ", Aliases: []string{"del"}, Args: cobra.ExactArgs(1), RunE: func(c *cobra.Command, args []string) error { ctx := cmd.GetCmdCtx(c) return delete(c, ctx, opt, args) }, } cmd.Flags().BoolVar(&opt.UseID, "id", false, "treat first argument as bucket ID") BucketCmd.AddCommand(&cmd) } type deleteOpt struct { UseID bool } func delete(c *cobra.Command, ctx *cmd.CommandContext, opt deleteOpt, args []string) error { var bktID jcstypes.BucketID if opt.UseID { id, err := strconv.ParseInt(args[0], 10, 64) if err != nil { return fmt.Errorf("invalid bucket ID: %v", args[0]) } bktID = jcstypes.BucketID(id) } else { bktName := args[0] bkt, err := ctx.Client.Bucket().GetByName(cliapi.BucketGetByName{ Name: args[0], }) if err != nil { return fmt.Errorf("get bucket by name %v: %v", bktName, err) } bktID = bkt.Bucket.BucketID } if err := ctx.Client.Bucket().Delete(cliapi.BucketDelete{ BucketID: bktID, }); err != nil { return fmt.Errorf("delete bucket %v: %v", bktID, err) } return nil }