package pkg import ( "fmt" "strconv" "strings" "github.com/spf13/cobra" cliapi "gitlink.org.cn/cloudream/jcs-pub/client/sdk/api/v1" clitypes "gitlink.org.cn/cloudream/jcs-pub/client/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 package ID") PackageCmd.AddCommand(&cmd) } type deleteOpt struct { UseID bool } func delete(c *cobra.Command, ctx *cmd.CommandContext, opt deleteOpt, args []string) error { var pkgID clitypes.PackageID if opt.UseID { id, err := strconv.ParseInt(args[0], 10, 64) if err != nil { return fmt.Errorf("invalid package ID: %v", args[0]) } pkgID = clitypes.PackageID(id) } else { comps := strings.Split(args[0], "/") if len(comps) != 2 { return fmt.Errorf("invalid package name: %v", args[0]) } getPkg, err := ctx.Client.Package().GetByFullName(cliapi.PackageGetByFullName{ BucketName: comps[0], PackageName: comps[1], }) if err != nil { return fmt.Errorf("get package by name %v: %v", args[0], err) } pkgID = getPkg.Package.PackageID } if err := ctx.Client.Package().Delete(cliapi.PackageDelete{ PackageID: pkgID, }); err != nil { return fmt.Errorf("delete package %v: %v", pkgID, err) } return nil }