JCS-pub/jcsctl/cmd/bucket/ls.go

50 lines
1.0 KiB
Go

package bucket
import (
"fmt"
"github.com/jedib0t/go-pretty/v6/table"
"github.com/spf13/cobra"
"gitlink.org.cn/cloudream/jcs-pub/client/sdk/api/v1"
"gitlink.org.cn/cloudream/jcs-pub/jcsctl/cmd"
)
func init() {
var opt lsOpt
cmd := cobra.Command{
Use: "ls",
Run: func(c *cobra.Command, args []string) {
ctx := cmd.GetCmdCtx(c)
ls(c, ctx, opt)
},
}
cmd.Flags().BoolVarP(&opt.Long, "", "l", false, "listing in long format")
BucketCmd.AddCommand(&cmd)
}
type lsOpt struct {
Long bool
}
func ls(c *cobra.Command, ctx *cmd.CommandContext, opt lsOpt) {
resp, err := ctx.Client.Bucket().ListAll(api.BucketListAll{})
if err != nil {
cmd.ErrorExitln(err.Error())
}
if opt.Long {
fmt.Printf("total: %d\n", len(resp.Buckets))
tb := table.NewWriter()
tb.AppendHeader(table.Row{"Bucket ID", "Name", "Create Time"})
for _, b := range resp.Buckets {
tb.AppendRow(table.Row{b.BucketID, b.Name, b.CreateTime})
}
fmt.Println(tb.Render())
} else {
for _, b := range resp.Buckets {
fmt.Println(b.Name)
}
}
}