package pkg import ( "fmt" "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 newOpt cmd := cobra.Command{ Use: "new /", Args: cobra.ExactArgs(1), RunE: func(c *cobra.Command, args []string) error { ctx := cmd.GetCmdCtx(c) return new(c, ctx, opt, args) }, } cmd.Flags().Int64Var(&opt.BucketID, "bid", 0, "set bucket id, if set, you should not set bucket name") PackageCmd.AddCommand(&cmd) } type newOpt struct { BucketID int64 } func new(c *cobra.Command, ctx *cmd.CommandContext, opt newOpt, args []string) error { if opt.BucketID != 0 { resp, err := ctx.Client.Package().Create(cliapi.PackageCreate{ BucketID: clitypes.BucketID(opt.BucketID), Name: args[0], }) if err != nil { return err } printOnePackage(resp.Package) return nil } comps := strings.Split(args[0], "/") if len(comps) != 2 { return fmt.Errorf("invalid package name") } bktResp, err := ctx.Client.Bucket().GetByName(cliapi.BucketGetByName{ Name: comps[0], }) if err != nil { return fmt.Errorf("get bucket by name %v: %v", comps[0], err) } resp, err := ctx.Client.Package().Create(cliapi.PackageCreate{ BucketID: bktResp.Bucket.BucketID, Name: comps[1], }) if err != nil { return fmt.Errorf("create package %v: %v", args[0], err) } printOnePackage(resp.Package) return nil }