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