Skip to content

Commit 23216a9

Browse files
committed
Add format.
1 parent eefd2fd commit 23216a9

12 files changed

Lines changed: 75 additions & 93 deletions

File tree

cmd/cmp.go

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ package cmd
2424
import (
2525
"github.com/foolin/sumdiff"
2626
"github.com/foolin/sumdiff/internal/statusbar"
27-
"github.com/foolin/sumdiff/internal/write"
2827
"github.com/foolin/sumdiff/vo"
2928

3029
"github.com/spf13/cobra"
@@ -41,15 +40,14 @@ var cmpCmd = &cobra.Command{
4140
statusbar.Start()
4241
ok, list, err := sumdiff.Cmp(args[0], args[1])
4342
statusbar.Stop()
44-
w := write.NewStd()
4543
if err != nil {
46-
w.MustWrite(vo.NewErrInfo(err))
44+
writer.MustWrite(vo.NewErrInfo(err))
4745
return
4846
}
4947
if detail {
50-
w.MustWrite(list)
48+
writer.MustWrite(list)
5149
} else {
52-
w.MustWrite(vo.NewAny("result", ok))
50+
writer.MustWrite(vo.NewAny("result", ok))
5351
}
5452
},
5553
}

cmd/config.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@ package cmd
22

33
type Config struct {
44
Verbose bool `json:"verbose"`
5-
Type string `json:"type"` //Type: table/json/csv/yaml
5+
Format string `json:"format"` //Format: table/json/csv/yaml
66
Output string `json:"output"` //Output file
77
}

cmd/eq.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ package cmd
2424
import (
2525
"github.com/foolin/sumdiff"
2626
"github.com/foolin/sumdiff/internal/statusbar"
27-
"github.com/foolin/sumdiff/internal/write"
2827
"github.com/foolin/sumdiff/vo"
2928
"github.com/spf13/cobra"
3029
)
@@ -39,12 +38,11 @@ var eqCmd = &cobra.Command{
3938
statusbar.Start()
4039
ret, err := sumdiff.Equal(args[0], args[1])
4140
statusbar.Stop()
42-
w := write.NewStd()
4341
if err != nil {
44-
w.MustWrite(vo.NewErrInfo(err))
42+
writer.MustWrite(vo.NewErrInfo(err))
4543
return
4644
}
47-
w.MustWrite(vo.NewAny("result", ret))
45+
writer.MustWrite(vo.NewAny("result", ret))
4846
},
4947
}
5048

cmd/hash.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ package cmd
2424
import (
2525
"github.com/foolin/sumdiff"
2626
"github.com/foolin/sumdiff/internal/statusbar"
27-
"github.com/foolin/sumdiff/internal/write"
2827
"github.com/foolin/sumdiff/vo"
2928
"github.com/spf13/cobra"
3029
)
@@ -39,12 +38,11 @@ var hashCmd = &cobra.Command{
3938
statusbar.Start()
4039
list, err := sumdiff.HashWithArgs(args...)
4140
statusbar.Stop()
42-
w := write.NewStd()
4341
if err != nil {
44-
w.MustWrite(vo.NewErrInfo(err))
42+
writer.MustWrite(vo.NewErrInfo(err))
4543
return
4644
}
47-
w.MustWrite(list)
45+
writer.MustWrite(list)
4846
},
4947
}
5048

cmd/md5.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ package cmd
2323

2424
import (
2525
"crypto/md5"
26-
"github.com/foolin/sumdiff/internal/write"
2726
"github.com/foolin/sumdiff/vo"
2827

2928
"github.com/foolin/sumdiff"
@@ -41,12 +40,11 @@ var md5Cmd = &cobra.Command{
4140
statusbar.Start()
4241
list, err := sumdiff.Hash(md5.New(), args...)
4342
statusbar.Stop()
44-
w := write.NewStd()
4543
if err != nil {
46-
w.MustWrite(vo.NewErrInfo(err))
44+
writer.MustWrite(vo.NewErrInfo(err))
4745
return
4846
}
49-
w.MustWrite(list)
47+
writer.MustWrite(list)
5048
},
5149
}
5250

cmd/root.go

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ THE SOFTWARE.
2222
package cmd
2323

2424
import (
25-
"fmt"
2625
"os"
2726
"path/filepath"
2827

@@ -45,21 +44,18 @@ var rootCmd = &cobra.Command{
4544
// has an action associated with it:
4645
// Run: func(cmd *cobra.Command, args []string) { },
4746
PersistentPreRun: func(cmd *cobra.Command, args []string) {
48-
49-
fmt.Printf("Config: %#v", config)
5047
//Verbose
5148
vlog.SetVerbose(config.Verbose)
5249

5350
//Write
54-
t := write.Table
55-
if config.Type != "" {
51+
format := write.Table
52+
if config.Format != "" {
5653
var ok bool
57-
t, ok = write.TypeOfName(config.Type)
54+
format, ok = write.FormatOfName(config.Format)
5855
if !ok {
59-
vlog.Exit(1, "Format invalid: %v\n", config.Type)
56+
vlog.Exit(1, "Format invalid: %v\n", config.Format)
6057
return
6158
}
62-
fmt.Printf("Parse type: %v\n", t)
6359
}
6460

6561
w := os.Stdout
@@ -76,7 +72,7 @@ var rootCmd = &cobra.Command{
7672
}
7773

7874
//Create writer
79-
writer = write.New(w, t)
75+
writer = write.New(w, format)
8076
},
8177
PersistentPostRun: func(cmd *cobra.Command, args []string) {
8278
if file != nil {
@@ -105,12 +101,12 @@ func init() {
105101

106102
config = &Config{
107103
Verbose: false,
108-
Type: "table",
104+
Format: "table",
109105
Output: "",
110106
}
111107
// rootCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "config file (default is $HOME/.sumdiff.yaml)")
112108
rootCmd.PersistentFlags().BoolVarP(&config.Verbose, "verbose", "v", false, "Verbose output info")
113-
rootCmd.PersistentFlags().StringVarP(&config.Type, "type", "t", "table", "Format: table|json|csv|yaml")
109+
rootCmd.PersistentFlags().StringVarP(&config.Format, "format", "f", "table", "Format: table|json|csv|yaml")
114110
rootCmd.PersistentFlags().StringVarP(&config.Output, "output", "o", "", "Output filename")
115111

116112
// Cobra also supports local flags, which will only run

cmd/sha1.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ package cmd
2323

2424
import (
2525
"crypto/sha1"
26-
"github.com/foolin/sumdiff/internal/write"
2726
"github.com/foolin/sumdiff/vo"
2827

2928
"github.com/foolin/sumdiff"
@@ -41,12 +40,11 @@ var sha1Cmd = &cobra.Command{
4140
statusbar.Start()
4241
list, err := sumdiff.Hash(sha1.New(), args...)
4342
statusbar.Stop()
44-
w := write.NewStd()
4543
if err != nil {
46-
w.MustWrite(vo.NewErrInfo(err))
44+
writer.MustWrite(vo.NewErrInfo(err))
4745
return
4846
}
49-
w.MustWrite(list)
47+
writer.MustWrite(list)
5048
},
5149
}
5250

cmd/sha256.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ package cmd
2323

2424
import (
2525
"crypto/sha256"
26-
"github.com/foolin/sumdiff/internal/write"
2726
"github.com/foolin/sumdiff/vo"
2827

2928
"github.com/foolin/sumdiff"
@@ -41,12 +40,11 @@ var sha256Cmd = &cobra.Command{
4140
statusbar.Start()
4241
list, err := sumdiff.Hash(sha256.New(), args...)
4342
statusbar.Stop()
44-
w := write.NewStd()
4543
if err != nil {
46-
w.MustWrite(vo.NewErrInfo(err))
44+
writer.MustWrite(vo.NewErrInfo(err))
4745
return
4846
}
49-
w.MustWrite(list)
47+
writer.MustWrite(list)
5048
},
5149
}
5250

internal/write/format.go

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package write
2+
3+
import "strings"
4+
5+
type Format int
6+
7+
const (
8+
None Format = iota
9+
Table
10+
Json
11+
Csv
12+
Yaml
13+
)
14+
15+
var formatNames = []string{"none", "table", "json", "csv", "yaml"}
16+
17+
// String - Name
18+
func (t Format) String() string {
19+
return formatNames[t]
20+
}
21+
22+
// Index - Index value
23+
func (t Format) Index() int {
24+
return int(t)
25+
}
26+
27+
func FormatOfName(name string) (Format, bool) {
28+
if name == "" {
29+
return None, false
30+
}
31+
fmtName := strings.ToLower(name)
32+
for i, v := range formatNames {
33+
if fmtName == v {
34+
return FormatOfValue(i)
35+
}
36+
}
37+
return None, false
38+
}
39+
40+
func FormatOfValue(value int) (Format, bool) {
41+
return Format(value), true
42+
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,6 @@ import (
66
)
77

88
func TestTypeOfName(t *testing.T) {
9-
typ, ok := TypeOfName("json")
9+
typ, ok := FormatOfName("json")
1010
fmt.Printf("%v %v", typ, ok)
1111
}

0 commit comments

Comments
 (0)