From 67be08f668f29dc99cc5467eb9d83d0e88edd7a3 Mon Sep 17 00:00:00 2001 From: Nicolas Martin Date: Mon, 7 Sep 2020 14:51:35 +0200 Subject: [PATCH] Use --alias | -R flag instead of --repository | -r for aliases --- cmd/knoxite/main.go | 18 ++++++++++++++++++ cmd/knoxite/repository.go | 3 --- cmd/knoxite/restore.go | 2 +- cmd/knoxite/store.go | 2 +- 4 files changed, 20 insertions(+), 5 deletions(-) diff --git a/cmd/knoxite/main.go b/cmd/knoxite/main.go index b11062fa..9d260a59 100644 --- a/cmd/knoxite/main.go +++ b/cmd/knoxite/main.go @@ -34,6 +34,7 @@ import ( // GlobalOptions holds all those options that can be set for every command. type GlobalOptions struct { Repo string + Alias string Password string ConfigURL string } @@ -63,6 +64,7 @@ func main() { // shutdown.SetTimeout(0) RootCmd.PersistentFlags().StringVarP(&globalOpts.Repo, "repo", "r", "", "Repository directory to backup to/restore from (default: current working dir)") + RootCmd.PersistentFlags().StringVarP(&globalOpts.Alias, "alias", "R", "", "Repository alias to backup to/restore from") RootCmd.PersistentFlags().StringVarP(&globalOpts.Password, "password", "p", "", "Password to use for data encryption") RootCmd.PersistentFlags().StringVarP(&globalOpts.ConfigURL, "configURL", "C", config.DefaultPath(), "Path to the configuration file") @@ -92,6 +94,12 @@ func init() { // It'll use the the default config url unless specified otherwise via the // ConfigURL flag. func initConfig() { + // We dont allow both flags to be set as this can lead to unclear instructions. + if RootCmd.PersistentFlags().Changed("repo") && RootCmd.PersistentFlags().Changed("alias") { + log.Fatalf("Specify either repository directory '-r' or an alias '-R'") + return + } + var err error cfg, err = config.New(globalOpts.ConfigURL) if err != nil { @@ -109,4 +117,14 @@ func initConfig() { if cfg.Repositories == nil { cfg.Repositories = make(map[string]config.RepoConfig) } + + if globalOpts.Alias != "" { + rep, ok := cfg.Repositories[globalOpts.Alias] + if !ok { + log.Fatalf("error loading the specified alias\n") + return + } + + globalOpts.Repo = rep.Url + } } diff --git a/cmd/knoxite/repository.go b/cmd/knoxite/repository.go index 7cc30920..44f2cfe6 100644 --- a/cmd/knoxite/repository.go +++ b/cmd/knoxite/repository.go @@ -228,9 +228,6 @@ func openRepository(path, password string) (knoxite.Repository, error) { } } - if rep, ok := cfg.Repositories[path]; ok { - return knoxite.OpenRepository(rep.Url, password) - } return knoxite.OpenRepository(path, password) } diff --git a/cmd/knoxite/restore.go b/cmd/knoxite/restore.go index 416d38ea..a1d19666 100644 --- a/cmd/knoxite/restore.go +++ b/cmd/knoxite/restore.go @@ -53,7 +53,7 @@ var ( // Values set via the command line flags will overwrite settings stored in the // configuration file. func configureRestoreOpts(cmd *cobra.Command, opts *RestoreOptions) { - if rep, ok := cfg.Repositories[globalOpts.Repo]; ok { + if rep, ok := cfg.Repositories[globalOpts.Alias]; ok { if !cmd.Flags().Changed("excludes") { opts.Excludes = rep.RestoreExcludes } diff --git a/cmd/knoxite/store.go b/cmd/knoxite/store.go index 69d4da86..b567830b 100644 --- a/cmd/knoxite/store.go +++ b/cmd/knoxite/store.go @@ -64,7 +64,7 @@ var ( // Values set via the command line flags will overwrite settings stored in the // configuration file. func configureStoreOpts(cmd *cobra.Command, opts *StoreOptions) { - if rep, ok := cfg.Repositories[globalOpts.Repo]; ok { + if rep, ok := cfg.Repositories[globalOpts.Alias]; ok { if !cmd.Flags().Changed("compression") { opts.Compression = rep.Compression }