kopia-k8s/command_kopia.go

89 lines
2.2 KiB
Go

package main
import (
"git.earthnet.ch/simon.beck/kopia-k8s/kopia"
"git.earthnet.ch/simon.beck/kopia-k8s/logger"
"github.com/urfave/cli/v2"
)
var kopiaCommandName = "kopia"
func newKopiaCommand() *cli.Command {
return &cli.Command{
Name: kopiaCommandName,
Usage: "Runs kopia commands",
Subcommands: []*cli.Command{
newKopiaBackupCommand(),
newKopiaMaintenanceCommand(),
},
Flags: getKopiaParams(),
}
}
func getKopiaParams() []cli.Flag {
return []cli.Flag{
&cli.StringFlag{
Name: "access-key-id",
Usage: "AWS access key ID",
EnvVars: []string{"AWS_ACCESS_KEY_ID"},
},
&cli.StringFlag{
Name: "secret-access-key",
Usage: "AWS secret access key",
EnvVars: []string{"AWS_SECRET_ACCESS_KEY"},
},
&cli.StringFlag{
Name: "encryption-password",
Usage: "Kopia encryption password",
EnvVars: envVars("ENCRYPTION_PASSWORD"),
},
&cli.StringFlag{
Name: "bucket",
Usage: "Kopia S3 repository",
EnvVars: envVars("BUCKET"),
},
&cli.StringFlag{
Name: "s3-endpoint",
Usage: "Kopia S3 endpoint",
EnvVars: envVars("ENDPOINT"),
},
&cli.PathFlag{
Name: "config",
Aliases: []string{"c"},
Usage: "Path to the folder where the config should be written",
EnvVars: envVars("CONFIG_PATH"),
Value: "/tmp",
},
&cli.PathFlag{
Name: "kopia-bin-path",
Usage: "Kopia binary path",
EnvVars: envVars("KOPIA_PATH"),
Value: "/usr/local/bin/kopia",
},
&cli.PathFlag{
Name: "cache-path",
Usage: "Path where the cache is stored",
EnvVars: envVars("KOPIA_CACHE_PATH"),
Value: "/cache",
},
}
}
func newKopiaInstance(c *cli.Context) *kopia.Kopia {
logger.AppLogger(c.Context).V(1).Info("flag values",
"access-key-id", c.String("access-key-id"),
"secret-access-key", c.String("secret-access-key"),
"encryption-password", c.String("encryption-password"),
"endpoint", c.String("s3-endpoint"),
"bucket", c.String("bucket"))
return kopia.New(c.Context, c.Path("config"),
c.String("access-key-id"),
c.String("secret-access-key"),
c.String("encryption-password"),
c.String("s3-endpoint"),
c.String("bucket"),
c.Path("kopia-bin-path"),
c.String("hostname"),
c.Path("cache-path"))
}