mirror of
https://github.com/octoleo/restic.git
synced 2024-06-10 12:52:21 +00:00
This was a temporary fix for Go earlier than 1.5 to run code on all avaialble cores. We don't need that any more since we require at least Go 1.6.
55 lines
1.1 KiB
Go
55 lines
1.1 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"restic"
|
|
"restic/debug"
|
|
|
|
"github.com/spf13/cobra"
|
|
|
|
"restic/errors"
|
|
)
|
|
|
|
// cmdRoot is the base command when no other command has been specified.
|
|
var cmdRoot = &cobra.Command{
|
|
Use: "restic",
|
|
Short: "backup and restore files",
|
|
Long: `
|
|
restic is a backup program which allows saving multiple revisions of files and
|
|
directories in an encrypted repository stored on different backends.
|
|
`,
|
|
SilenceErrors: true,
|
|
SilenceUsage: true,
|
|
|
|
// run the debug functions for all subcommands (if build tag "debug" is
|
|
// enabled)
|
|
PersistentPreRunE: func(*cobra.Command, []string) error {
|
|
return runDebug()
|
|
},
|
|
PersistentPostRun: func(*cobra.Command, []string) {
|
|
shutdownDebug()
|
|
},
|
|
}
|
|
|
|
func main() {
|
|
debug.Log("main %#v", os.Args)
|
|
err := cmdRoot.Execute()
|
|
|
|
switch {
|
|
case restic.IsAlreadyLocked(errors.Cause(err)):
|
|
fmt.Fprintf(os.Stderr, "%v\nthe `unlock` command can be used to remove stale locks\n", err)
|
|
case errors.IsFatal(errors.Cause(err)):
|
|
fmt.Fprintf(os.Stderr, "%v\n", err)
|
|
case err != nil:
|
|
fmt.Fprintf(os.Stderr, "%+v\n", err)
|
|
}
|
|
|
|
var exitCode int
|
|
if err != nil {
|
|
exitCode = 1
|
|
}
|
|
|
|
Exit(exitCode)
|
|
}
|