|
- package userspace
-
- import (
- "fmt"
- "strconv"
- "strings"
-
- "github.com/chzyer/readline"
- "github.com/spf13/cobra"
- cliapi "gitlink.org.cn/cloudream/jcs-pub/client/sdk/api/v1"
- jcstypes "gitlink.org.cn/cloudream/jcs-pub/common/types"
- "gitlink.org.cn/cloudream/jcs-pub/jcsctl/cmd"
- )
-
- func init() {
- cmd := cobra.Command{
- Use: "delete",
- Short: "delete a cloud storage",
- Run: func(c *cobra.Command, args []string) {
- ctx := cmd.GetCmdCtx(c)
- delete(c, ctx)
- },
- }
- UserSpaceCmd.AddCommand(&cmd)
- }
-
- func delete(c *cobra.Command, ctx *cmd.CommandContext) {
- rl, err := readline.New("> ")
- if err != nil {
- fmt.Printf("\033[31m初始化命令行失败: %v\033[0m\n", err)
- return
- }
- defer rl.Close()
-
- fmt.Printf("\033[1;36m请选择删除依据: \033[0m\n")
- options := []string{"ID", "Name"}
- for i, option := range options {
- fmt.Printf("\033[33m%d. %s\033[0m\n", i+1, option)
- }
-
- rl.SetPrompt("\033[36m> \033[0m")
- line, err := rl.Readline()
- if err != nil {
- return
- }
-
- var userSpace jcstypes.UserSpace
- trimmed := strings.TrimSpace(line)
- switch trimmed {
- case "1":
- rl.SetPrompt("\033[36m请输入云存储ID(ID): \033[0m")
- idInput, err := rl.Readline()
- if err != nil || idInput == "" {
- return
- }
-
- id, err := strconv.ParseInt(strings.TrimSpace(idInput), 10, 64)
- if err != nil {
- fmt.Printf("\033[31mID 格式错误: %v\033[0m\n", err)
- return
- }
-
- resp, err := ctx.Client.UserSpace().Get(cliapi.UserSpaceGet{
- UserSpaceID: jcstypes.UserSpaceID(id),
- })
- if err != nil {
- fmt.Printf("\033[31m保存配置失败: %v\033[0m", err)
- return
- }
- userSpace = resp.UserSpace
-
- case "2":
- rl.SetPrompt("\033[36m请输入云存储名称(Name): \033[0m")
- nameInput, err := rl.Readline()
- if err != nil || nameInput == "" {
- fmt.Println("\033[31m输入已取消\033[0m")
- return
- }
- name := strings.TrimSpace(nameInput)
-
- resp, err := ctx.Client.UserSpace().GetByName(cliapi.UserSpaceGetByName{
- Name: name,
- })
- if err != nil {
- fmt.Printf("\033[31m保存配置失败: %v\033[0m", err)
- return
- }
- userSpace = resp.UserSpace
-
- default:
- fmt.Printf("\033[31m错误: 无效选项 '%s',请输入序号!\033[0m\n", line)
- }
-
- fmt.Println("\n\033[1;36m找到云存储:\033[0m")
- fmt.Printf("\033[1;36mID:%d 名称:%s 类型:%s\033[0m\n", userSpace.UserSpaceID, userSpace.Name, userSpace.Storage.GetStorageType())
-
- rl.SetPrompt("\033[31m确认删除?(y/n): \033[0m")
- confirm, err := rl.Readline()
- if err != nil || strings.ToLower(strings.TrimSpace(confirm)) != "y" {
- return
- }
-
- _, err = ctx.Client.UserSpace().Delete(cliapi.UserSpaceDelete{
- UserSpaceID: userSpace.UserSpaceID,
- })
- if err != nil {
- fmt.Printf("\033[31m删除失败: %v\033[0m\n", err)
- return
- }
- fmt.Printf("\n\033[32m删除成功: %s\033[0m\n", userSpace.Name)
- }
|