Browse Source

增加新命令行命令

feature_gxh
Sydonian 4 months ago
parent
commit
b9918109c6
4 changed files with 173 additions and 0 deletions
  1. +58
    -0
      jcsctl/cmd/bucket/delete.go
  2. +36
    -0
      jcsctl/cmd/bucket/new.go
  3. +15
    -0
      jcsctl/cmd/bucket/utils.go
  4. +64
    -0
      jcsctl/cmd/package/delete.go

+ 58
- 0
jcsctl/cmd/bucket/delete.go View File

@@ -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
}

+ 36
- 0
jcsctl/cmd/bucket/new.go View File

@@ -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
}

+ 15
- 0
jcsctl/cmd/bucket/utils.go View File

@@ -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())
}

+ 64
- 0
jcsctl/cmd/package/delete.go View File

@@ -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
}

Loading…
Cancel
Save