zrepl/cmd/main.go

57 lines
1.2 KiB
Go
Raw Normal View History

// zrepl replicates ZFS filesystems & volumes between pools
//
// Code Organization
//
// The cmd package uses github.com/spf13/cobra for its CLI.
//
// It combines the other packages in the zrepl project to implement zrepl functionality.
//
// Each subcommand's code is in the corresponding *.go file.
// All other *.go files contain code shared by the subcommands.
package cmd
2017-04-14 19:26:32 +02:00
2017-04-26 20:21:18 +02:00
import (
"github.com/spf13/cobra"
2017-06-09 21:01:50 +02:00
"net/http"
_ "net/http/pprof"
2017-04-26 20:21:18 +02:00
)
type Logger interface {
Printf(format string, v ...interface{})
}
var RootCmd = &cobra.Command{
Use: "zrepl",
Short: "ZFS dataset replication",
Long: `Replicate ZFS filesystems & volumes between pools:
2017-04-14 19:26:32 +02:00
- push & pull mode
- automatic snapshot creation & pruning
- local / over the network
- ACLs instead of blank SSH access`,
2017-04-26 20:21:18 +02:00
}
2017-04-14 19:26:32 +02:00
var rootArgs struct {
configFile string
httpPprof string
2017-04-14 19:26:32 +02:00
}
func init() {
//cobra.OnInitialize(initConfig)
RootCmd.PersistentFlags().StringVar(&rootArgs.configFile, "config", "", "config file path")
RootCmd.PersistentFlags().StringVar(&rootArgs.httpPprof, "debug.pprof.http", "", "run pprof http server on given port")
}
2017-04-14 19:26:32 +02:00
func initConfig() {
// CPU profiling
if rootArgs.httpPprof != "" {
go func() {
http.ListenAndServe(rootArgs.httpPprof, nil)
}()
2017-05-07 12:28:31 +02:00
}
return
}