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  }