mirror of
https://github.com/restic/restic.git
synced 2025-03-30 00:00:14 +01:00

This is a new error which implements the restic.Fataler interface. Errors of this type are written to stderr, the restic exits. For all other errors, restic prints the stack trace (if available).
52 lines
1.2 KiB
Go
52 lines
1.2 KiB
Go
package main
|
|
|
|
import (
|
|
"restic"
|
|
"restic/repository"
|
|
)
|
|
|
|
type CmdInit struct {
|
|
global *GlobalOptions
|
|
}
|
|
|
|
func (cmd CmdInit) Execute(args []string) error {
|
|
if cmd.global.Repo == "" {
|
|
return restic.Fatal("Please specify repository location (-r)")
|
|
}
|
|
|
|
be, err := create(cmd.global.Repo)
|
|
if err != nil {
|
|
cmd.global.Exitf(1, "creating backend at %s failed: %v\n", cmd.global.Repo, err)
|
|
}
|
|
|
|
if cmd.global.password == "" {
|
|
cmd.global.password = cmd.global.ReadPasswordTwice(
|
|
"enter password for new backend: ",
|
|
"enter password again: ")
|
|
}
|
|
|
|
s := repository.New(be)
|
|
|
|
err = s.Init(cmd.global.password)
|
|
if err != nil {
|
|
cmd.global.Exitf(1, "creating key in backend at %s failed: %v\n", cmd.global.Repo, err)
|
|
}
|
|
|
|
cmd.global.Verbosef("created restic backend %v at %s\n", s.Config.ID[:10], cmd.global.Repo)
|
|
cmd.global.Verbosef("\n")
|
|
cmd.global.Verbosef("Please note that knowledge of your password is required to access\n")
|
|
cmd.global.Verbosef("the repository. Losing your password means that your data is\n")
|
|
cmd.global.Verbosef("irrecoverably lost.\n")
|
|
|
|
return nil
|
|
}
|
|
|
|
func init() {
|
|
_, err := parser.AddCommand("init",
|
|
"create repository",
|
|
"The init command creates a new repository",
|
|
&CmdInit{global: &globalOpts})
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
}
|