From 2dbb376b35b0df6e1e5d9d7c1047fc4319f9e71d Mon Sep 17 00:00:00 2001 From: Jean-Marc MEESSEN Date: Sun, 28 Jun 2020 15:29:13 +0200 Subject: [PATCH] implement default output filename construction --- cmd/adif.go | 5 ++++- cmd/adif_filename.go | 12 +++++++++--- cmd/adif_filename_test.go | 17 ++++++++++++++++- cmd/root.go | 4 ++-- 4 files changed, 31 insertions(+), 7 deletions(-) diff --git a/cmd/adif.go b/cmd/adif.go index e96d3db..a65fbea 100644 --- a/cmd/adif.go +++ b/cmd/adif.go @@ -25,6 +25,7 @@ import ( var outputFilename string var isWwff bool +var isOverwrite bool // adifCmd is executed when choosing the adif option (load and generate adif file) var adifCmd = &cobra.Command{ @@ -42,17 +43,19 @@ func init() { rootCmd.AddCommand(adifCmd) adifCmd.PersistentFlags().BoolVarP(&isWwff,"wwff", "w", false, "Generates an ADIF file ready to be uploaded on WWFF") + adifCmd.PersistentFlags().BoolVarP(&isOverwrite,"overWrite", "", false, "Overwrites the output file if it exisits") adifCmd.PersistentFlags().StringVarP(&outputFilename, "output", "o", "", "Output filename") } func processAdifCommand(){ - verifiedOutputFilename, wasOK := buildOutputFilename(outputFilename,inputFilename,false) + verifiedOutputFilename, wasOK := buildOutputFilename(outputFilename,inputFilename,isOverwrite) fmt.Println("adif called") fmt.Println("Inputfile: ", inputFilename) fmt.Println("OutputFile: ", outputFilename) fmt.Println("computed output: ", verifiedOutputFilename) fmt.Println("Output wasOK: ", wasOK) fmt.Println("wwff: ", isWwff) + fmt.Println("isOverwrite: ", isOverwrite) //loadFile() } \ No newline at end of file diff --git a/cmd/adif_filename.go b/cmd/adif_filename.go index 49eb06b..9095c69 100644 --- a/cmd/adif_filename.go +++ b/cmd/adif_filename.go @@ -20,6 +20,7 @@ import ( "os" //"log" "fmt" + "path/filepath" ) // does the target file exist? @@ -35,6 +36,14 @@ func buildOutputFilename(output string, input string, overwrite bool) (outputFil return "", false } + //No output was provided, let's create one from the input file + if output == "" { + extension := filepath.Ext(input) + outputRootPart := input[0:len(input)-len(extension)] + output = outputRootPart + ".adi" + fmt.Println("No output provided, defaulting to \""+output+ "\"" ) + } + //an output was provided by the user if output != "" { info, err := os.Stat(output) @@ -53,9 +62,6 @@ func buildOutputFilename(output string, input string, overwrite bool) (outputFil return "", false } - //if output is not null, check if file exits - //if it exists, check the flag - //if output return outputFilename, true } diff --git a/cmd/adif_filename_test.go b/cmd/adif_filename_test.go index 582f269..61f4edb 100644 --- a/cmd/adif_filename_test.go +++ b/cmd/adif_filename_test.go @@ -53,10 +53,25 @@ func Test_buildOutputFilename(t *testing.T) { "", false, }, { - "Output exisit but no overwrite", + "Output exist but no overwrite", args{input: "a file", output: testFile, overwrite: false}, "", false, }, + { + "no output, input provided with extention", + args{input: "/test/data/file.txt", output: "", overwrite: false}, + "/test/data/file.adi", true, + }, + { + "no output, input provided without extention", + args{input: "/test/data/file", output: "", overwrite: false}, + "/test/data/file.adi", true, + }, + { + "no output, input provided, enfing with a point", + args{input: "/test/data/file.", output: "", overwrite: false}, + "/test/data/file.adi", true, + }, } teardownTestCase := setupTestCase(t) diff --git a/cmd/root.go b/cmd/root.go index 05adb29..865cff9 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -66,8 +66,8 @@ func init() { rootCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "config file (default is $HOME/.FLEcli.yaml)") - rootCmd.PersistentFlags().StringVarP(&inputFilename, "input", "i", "", "FLE formatted input file") - rootCmd.MarkFlagRequired("input") + rootCmd.PersistentFlags().StringVarP(&inputFilename, "input", "i", "", "FLE formatted input file (mandatory)") + rootCmd.MarkPersistentFlagRequired("input") } // initConfig reads in config file and ENV variables if set.