serve.go 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. // Package serve provides the serve command.
  2. package serve
  3. import (
  4. "errors"
  5. "github.com/rclone/rclone/cmd"
  6. "github.com/rclone/rclone/cmd/serve/dlna"
  7. "github.com/rclone/rclone/cmd/serve/docker"
  8. "github.com/rclone/rclone/cmd/serve/ftp"
  9. "github.com/rclone/rclone/cmd/serve/http"
  10. "github.com/rclone/rclone/cmd/serve/nfs"
  11. "github.com/rclone/rclone/cmd/serve/restic"
  12. "github.com/rclone/rclone/cmd/serve/s3"
  13. "github.com/rclone/rclone/cmd/serve/sftp"
  14. "github.com/rclone/rclone/cmd/serve/webdav"
  15. "github.com/spf13/cobra"
  16. )
  17. func init() {
  18. Command.AddCommand(http.Command)
  19. if webdav.Command != nil {
  20. Command.AddCommand(webdav.Command)
  21. }
  22. if restic.Command != nil {
  23. Command.AddCommand(restic.Command)
  24. }
  25. if dlna.Command != nil {
  26. Command.AddCommand(dlna.Command)
  27. }
  28. if ftp.Command != nil {
  29. Command.AddCommand(ftp.Command)
  30. }
  31. if sftp.Command != nil {
  32. Command.AddCommand(sftp.Command)
  33. }
  34. if docker.Command != nil {
  35. Command.AddCommand(docker.Command)
  36. }
  37. if nfs.Command != nil {
  38. Command.AddCommand(nfs.Command)
  39. }
  40. if s3.Command != nil {
  41. Command.AddCommand(s3.Command)
  42. }
  43. cmd.Root.AddCommand(Command)
  44. }
  45. // Command definition for cobra
  46. var Command = &cobra.Command{
  47. Use: "serve <protocol> [opts] <remote>",
  48. Short: `Serve a remote over a protocol.`,
  49. Long: `Serve a remote over a given protocol. Requires the use of a
  50. subcommand to specify the protocol, e.g.
  51. rclone serve http remote:
  52. Each subcommand has its own options which you can see in their help.
  53. `,
  54. Annotations: map[string]string{
  55. "versionIntroduced": "v1.39",
  56. },
  57. RunE: func(command *cobra.Command, args []string) error {
  58. if len(args) == 0 {
  59. return errors.New("serve requires a protocol, e.g. 'rclone serve http remote:'")
  60. }
  61. return errors.New("unknown protocol")
  62. },
  63. }