| @@ -0,0 +1,58 @@ | |||
| package bucket | |||
| import ( | |||
| "fmt" | |||
| "strconv" | |||
| "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 <bucket_name>", | |||
| 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 clitypes.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 = clitypes.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 | |||
| } | |||
| @@ -0,0 +1,36 @@ | |||
| package bucket | |||
| import ( | |||
| "fmt" | |||
| "github.com/spf13/cobra" | |||
| cliapi "gitlink.org.cn/cloudream/jcs-pub/client/sdk/api/v1" | |||
| "gitlink.org.cn/cloudream/jcs-pub/jcsctl/cmd" | |||
| ) | |||
| func init() { | |||
| var opt newOpt | |||
| cmd := cobra.Command{ | |||
| Use: "new <bucket_name>", | |||
| Args: cobra.ExactArgs(1), | |||
| RunE: func(c *cobra.Command, args []string) error { | |||
| ctx := cmd.GetCmdCtx(c) | |||
| return new(c, ctx, opt, args) | |||
| }, | |||
| } | |||
| BucketCmd.AddCommand(&cmd) | |||
| } | |||
| type newOpt struct { | |||
| } | |||
| func new(c *cobra.Command, ctx *cmd.CommandContext, opt newOpt, args []string) error { | |||
| resp, err := ctx.Client.Bucket().Create(cliapi.BucketCreate{ | |||
| Name: args[0], | |||
| }) | |||
| if err != nil { | |||
| return fmt.Errorf("create bucket %v: %v", args[0], err) | |||
| } | |||
| printOneBucket(resp.Bucket) | |||
| return nil | |||
| } | |||
| @@ -0,0 +1,15 @@ | |||
| package bucket | |||
| import ( | |||
| "fmt" | |||
| "github.com/jedib0t/go-pretty/v6/table" | |||
| clitypes "gitlink.org.cn/cloudream/jcs-pub/client/types" | |||
| ) | |||
| func printOneBucket(bkt clitypes.Bucket) { | |||
| tb := table.NewWriter() | |||
| tb.AppendHeader(table.Row{"ID", "Name", "CreateTime"}) | |||
| tb.AppendRow(table.Row{bkt.BucketID, bkt.Name, bkt.CreateTime}) | |||
| fmt.Println(tb.Render()) | |||
| } | |||
| @@ -0,0 +1,64 @@ | |||
| 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 <bucket_name>/<package_name>", | |||
| 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 | |||
| } | |||