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