mirror of
https://github.com/kopia/kopia.git
synced 2025-12-23 22:57:50 -05:00
also upgraded github.com/klauspost/reedsolomon to latest non-retracted version go mod tidy
46 lines
1.4 KiB
Go
46 lines
1.4 KiB
Go
package cli
|
|
|
|
import (
|
|
"context"
|
|
"os"
|
|
|
|
"github.com/alecthomas/kingpin/v2"
|
|
|
|
"github.com/kopia/kopia/repo/blob"
|
|
"github.com/kopia/kopia/repo/blob/webdav"
|
|
)
|
|
|
|
type storageWebDAVFlags struct {
|
|
options webdav.Options
|
|
connectFlat bool
|
|
}
|
|
|
|
func (c *storageWebDAVFlags) Setup(svc StorageProviderServices, cmd *kingpin.CmdClause) {
|
|
cmd.Flag("url", "URL of WebDAV server").Required().StringVar(&c.options.URL)
|
|
cmd.Flag("flat", "Use flat directory structure").BoolVar(&c.connectFlat)
|
|
cmd.Flag("webdav-username", "WebDAV username").Envar(svc.EnvName("KOPIA_WEBDAV_USERNAME")).StringVar(&c.options.Username)
|
|
cmd.Flag("webdav-password", "WebDAV password").Envar(svc.EnvName("KOPIA_WEBDAV_PASSWORD")).StringVar(&c.options.Password)
|
|
cmd.Flag("list-parallelism", "Set list parallelism").Hidden().IntVar(&c.options.ListParallelism)
|
|
cmd.Flag("atomic-writes", "Assume WebDAV provider implements atomic writes").BoolVar(&c.options.AtomicWrites)
|
|
|
|
commonThrottlingFlags(cmd, &c.options.Limits)
|
|
}
|
|
|
|
func (c *storageWebDAVFlags) Connect(ctx context.Context, isCreate bool, formatVersion int) (blob.Storage, error) {
|
|
wo := c.options
|
|
|
|
if wo.Username != "" && wo.Password == "" {
|
|
pass, err := askPass(os.Stdout, "Enter WebDAV password: ")
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
wo.Password = pass
|
|
}
|
|
|
|
wo.DirectoryShards = initialDirectoryShards(c.connectFlat, formatVersion)
|
|
|
|
//nolint:wrapcheck
|
|
return webdav.New(ctx, &wo, isCreate)
|
|
}
|