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  }