From 617007edd16fafa547d763dd2496ccf1ad1e89f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stephan=20M=C3=BCller?= Date: Sat, 20 Apr 2019 22:08:44 +0200 Subject: [PATCH] feat: introduce an option for keeping existing folder structure of dump folder (#12) --- cmd/root.go | 7 +++++++ dumper/config.go | 1 + dumper/dumper.go | 7 +++++-- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/cmd/root.go b/cmd/root.go index 439abd0..15680c6 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -59,6 +59,7 @@ func init() { rootCmd.PersistentFlags().String("key-ext", ".key", "The file extension of the generated private keys.") rootCmd.PersistentFlags().String("key-name", "privatekey", "The file name (without extension) of the generated private keys.") rootCmd.PersistentFlags().Bool("domain-subdir", false, "Use domain as sub-directory.") + rootCmd.PersistentFlags().Bool("clean", true, "Clean destination folder before dumping content.") } // initConfig reads in config file and ENV variables if set. @@ -93,6 +94,11 @@ func getBaseConfig(cmd *cobra.Command) (*dumper.BaseConfig, error) { return nil, err } + clean, err := strconv.ParseBool(cmd.Flag("clean").Value.String()) + if err != nil { + return nil, err + } + return &dumper.BaseConfig{ DumpPath: cmd.Flag("dest").Value.String(), CrtInfo: dumper.FileInfo{ @@ -104,6 +110,7 @@ func getBaseConfig(cmd *cobra.Command) (*dumper.BaseConfig, error) { Ext: cmd.Flag("key-ext").Value.String(), }, DomainSubDir: subDir, + Clean: clean, }, nil } diff --git a/dumper/config.go b/dumper/config.go index 94dc780..cd6c0de 100644 --- a/dumper/config.go +++ b/dumper/config.go @@ -6,4 +6,5 @@ type BaseConfig struct { CrtInfo FileInfo KeyInfo FileInfo DomainSubDir bool + Clean bool } diff --git a/dumper/dumper.go b/dumper/dumper.go index e523687..39e010e 100644 --- a/dumper/dumper.go +++ b/dumper/dumper.go @@ -22,8 +22,11 @@ type FileInfo struct { // Dump Dumps data to certificates. func Dump(data *StoredData, baseConfig *BaseConfig) error { - if err := os.RemoveAll(baseConfig.DumpPath); err != nil { - return err + + if baseConfig.Clean { + if err := os.RemoveAll(baseConfig.DumpPath); err != nil { + return err + } } if !baseConfig.DomainSubDir {