You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

commandline.go 3.4 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. package cmdline
  2. import (
  3. "fmt"
  4. "os"
  5. "strconv"
  6. "gitlink.org.cn/cloudream/client/internal/config"
  7. "gitlink.org.cn/cloudream/client/internal/services"
  8. )
  9. type Commandline struct {
  10. svc *services.Service
  11. }
  12. func NewCommandline(svc *services.Service) (*Commandline, error) {
  13. return &Commandline{
  14. svc: svc,
  15. }, nil
  16. }
  17. func (c *Commandline) DispatchCommand(cmd string, args []string) {
  18. switch cmd {
  19. case "read":
  20. objectID, err := strconv.Atoi(args[1])
  21. if err != nil {
  22. fmt.Printf("invalid object id %s, err: %s", args[1], err.Error())
  23. os.Exit(1)
  24. }
  25. if err := c.Read(args[0], objectID); err != nil {
  26. fmt.Printf("read failed, err: %s", err.Error())
  27. os.Exit(1)
  28. }
  29. case "write":
  30. bucketID, err := strconv.Atoi(args[1])
  31. if err != nil {
  32. fmt.Printf("invalid bucket id %s, err: %s", args[1], err.Error())
  33. os.Exit(1)
  34. }
  35. numRep, _ := strconv.Atoi(args[3])
  36. if numRep <= 0 || numRep > config.Cfg().MaxReplicateNumber {
  37. fmt.Printf("replicate number should not be more than %d", config.Cfg().MaxReplicateNumber)
  38. os.Exit(1)
  39. }
  40. if err := c.RepWrite(args[0], bucketID, args[2], numRep); err != nil {
  41. fmt.Printf("rep write failed, err: %s", err.Error())
  42. os.Exit(1)
  43. }
  44. case "ecWrite":
  45. bucketID, err := strconv.Atoi(args[1])
  46. if err != nil {
  47. fmt.Printf("invalid bucket id %s, err: %s", args[1], err.Error())
  48. os.Exit(1)
  49. }
  50. if err := c.EcWrite(args[0], bucketID, args[2], args[3]); err != nil {
  51. fmt.Printf("ec write failed, err: %s", err.Error())
  52. os.Exit(1)
  53. }
  54. case "move":
  55. objectID, err := strconv.Atoi(args[0])
  56. if err != nil {
  57. fmt.Printf("invalid object id %s, err: %s", args[0], err.Error())
  58. os.Exit(1)
  59. }
  60. stgID, err := strconv.Atoi(args[1])
  61. if err != nil {
  62. fmt.Printf("invalid storage id %s, err: %s", args[1], err.Error())
  63. os.Exit(1)
  64. }
  65. if err := c.Move(objectID, stgID); err != nil {
  66. fmt.Printf("move failed, err: %s", err.Error())
  67. os.Exit(1)
  68. }
  69. case "ls":
  70. if len(args) == 0 {
  71. if err := c.GetUserBuckets(); err != nil {
  72. fmt.Printf("get user buckets failed, err: %s", err.Error())
  73. os.Exit(1)
  74. }
  75. } else {
  76. bucketID, err := strconv.Atoi(args[0])
  77. if err != nil {
  78. fmt.Printf("invalid bucket id %s, err: %s", args[1], err.Error())
  79. os.Exit(1)
  80. }
  81. if err := c.GetBucketObjects(bucketID); err != nil {
  82. fmt.Printf("get bucket objects failed, err: %s", err.Error())
  83. os.Exit(1)
  84. }
  85. }
  86. case "bucket":
  87. if len(args) == 0 {
  88. fmt.Printf("need more arg")
  89. os.Exit(1)
  90. }
  91. cmd := args[0]
  92. if cmd == "new" {
  93. if err := c.CreateBucket(args[1]); err != nil {
  94. fmt.Printf("create bucket failed, err: %s", err.Error())
  95. os.Exit(1)
  96. }
  97. } else if cmd == "delete" {
  98. bucketID, err := strconv.Atoi(args[1])
  99. if err != nil {
  100. fmt.Printf("invalid bucket id %s, err: %s", args[1], err.Error())
  101. os.Exit(1)
  102. }
  103. if err := c.DeleteBucket(bucketID); err != nil {
  104. fmt.Printf("delete bucket failed, err: %s", err.Error())
  105. os.Exit(1)
  106. }
  107. }
  108. case "object":
  109. if len(args) == 0 {
  110. fmt.Printf("need more arg")
  111. os.Exit(1)
  112. }
  113. if args[0] == "delete" {
  114. objectID, err := strconv.Atoi(args[1])
  115. if err != nil {
  116. fmt.Printf("invalid object id %s, err: %s", args[1], err.Error())
  117. os.Exit(1)
  118. }
  119. if err := c.DeleteObject(objectID); err != nil {
  120. fmt.Printf("delete object failed, err: %s", err.Error())
  121. os.Exit(1)
  122. }
  123. }
  124. }
  125. }

本项目旨在将云际存储公共基础设施化,使个人及企业可低门槛使用高效的云际存储服务(安装开箱即用云际存储客户端即可,无需关注其他组件的部署),同时支持用户灵活便捷定制云际存储的功能细节。