Skip to content

Commit 2bcfd3b

Browse files
committed
update codes.
1 parent edd8ae5 commit 2bcfd3b

File tree

5 files changed

+57
-48
lines changed

5 files changed

+57
-48
lines changed

cmd/diff.go

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,18 +11,16 @@ import (
1111

1212
// diffCmd represents the diff command
1313
var diffCmd = &cobra.Command{
14-
Use: "diff [path1] [path2]",
14+
Use: "diff <path1> <path2>",
1515
Short: "Compare different files or directory",
1616
Long: `Compare different files or directory`,
1717
Args: cobra.MinimumNArgs(2),
1818
Run: func(cmd *cobra.Command, args []string) {
1919
ret, err := app.Diff(args[0], args[1])
2020
if err != nil {
21-
plog.PrintEnd(err.Error())
22-
} else {
23-
plog.PrintEnd("%v", ret)
21+
plog.Writeln(err.Error())
2422
}
25-
23+
plog.Writeln(ret)
2624
},
2725
}
2826

cmd/hash.go

Lines changed: 6 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -4,46 +4,25 @@ Copyright © 2023 Foolin
44
package cmd
55

66
import (
7-
"crypto/md5"
8-
"crypto/sha1"
9-
"crypto/sha256"
10-
"crypto/sha512"
117
"github.com/foolin/sumdiff/internal/app"
128
"github.com/foolin/sumdiff/internal/plog"
139
"github.com/foolin/sumdiff/internal/vo"
1410
"github.com/spf13/cobra"
15-
"hash"
16-
"strings"
1711
)
1812

1913
// hashCmd represents the hash command
2014
var hashCmd = &cobra.Command{
21-
Use: "hash [md5|sha1|sha256|sha512] [path] ...",
22-
Short: "Calculate file hash hex string",
23-
Long: `Calculate file hash hex string`,
15+
Use: "hash <algorithm> <path> ...",
16+
Short: "Calculate hash algorithm [md5|sha1|sha256|sha512] hex string",
17+
Long: `Calculate hash algorithm [md5|sha1|sha256|sha512] hex string, eg: hash sha1 a.text`,
2418
Args: cobra.MinimumNArgs(2),
2519
Run: func(cmd *cobra.Command, args []string) {
26-
t := strings.ToLower(args[0])
27-
var hash hash.Hash
28-
switch t {
29-
case "md5":
30-
hash = md5.New()
31-
case "sha1":
32-
hash = sha1.New()
33-
case "sha256":
34-
hash = sha256.New()
35-
case "sha512":
36-
hash = sha512.New()
37-
default:
38-
plog.PrintEnd("not support hash=%v", t)
39-
return
40-
}
41-
results, err := app.Hash(hash, args[1:]...)
20+
results, err := app.HashWithArgs(args...)
4221
if err != nil {
43-
plog.PrintEnd("hash error: %v", err)
22+
plog.Writeln(err)
4423
return
4524
}
46-
plog.PrintTable(vo.HashToTable(results))
25+
plog.WriteTable(vo.HashToTable(results))
4726
},
4827
}
4928

internal/app/diff.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ func DiffDir(path1, path2 string) (bool, error) {
3737
return false, err
3838
}
3939
if len(data1) != len(data2) {
40-
return false, fmt.Errorf("not equal file count [%v!=%v]", len(data1), len(data2))
40+
return false, fmt.Errorf("not equal files count [%v!=%v]", len(data1), len(data2))
4141
}
4242
for k, v1 := range data1 {
4343
plog.Progress("compare diff path " + k)

internal/app/hash.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
11
package app
22

33
import (
4+
"crypto/md5"
5+
"crypto/sha1"
6+
"crypto/sha256"
7+
"crypto/sha512"
48
"fmt"
9+
"github.com/foolin/sumdiff/internal/plog"
510
"github.com/foolin/sumdiff/internal/util"
611
"github.com/foolin/sumdiff/internal/vo"
712
"hash"
@@ -11,6 +16,25 @@ import (
1116
"strings"
1217
)
1318

19+
func HashWithArgs(args ...string) (results []vo.HashVo, err error) {
20+
t := strings.ToLower(args[0])
21+
var algo hash.Hash
22+
switch t {
23+
case "md5":
24+
algo = md5.New()
25+
case "sha1":
26+
algo = sha1.New()
27+
case "sha256":
28+
algo = sha256.New()
29+
case "sha512":
30+
algo = sha512.New()
31+
default:
32+
plog.Writef("not support algo=%v", t)
33+
return
34+
}
35+
return Hash(algo, args[1:]...)
36+
}
37+
1438
func Hash(h hash.Hash, paths ...string) (results []vo.HashVo, err error) {
1539
if len(paths) == 0 {
1640
return results, fmt.Errorf("at least one file is required")

internal/plog/print.go

Lines changed: 23 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -10,36 +10,34 @@ import (
1010

1111
const maxWidth = 100
1212

13-
var Writer io.Writer = os.Stdout
13+
var printer io.Writer = os.Stdout
14+
var writer io.Writer = os.Stderr
1415

1516
func Print(a ...any) {
16-
_, _ = Writer.Write([]byte(fmt.Sprint(a...)))
17+
_, _ = printer.Write([]byte(fmt.Sprint(a...)))
1718
}
1819

1920
func Printf(format string, a ...any) {
20-
_, _ = Writer.Write([]byte(fmt.Sprintf(format, a...)))
21+
_, _ = printer.Write([]byte(fmt.Sprintf(format, a...)))
2122
}
2223

2324
func Println(a ...any) {
24-
_, _ = Writer.Write([]byte(fmt.Sprintln(a...)))
25+
_, _ = printer.Write([]byte(fmt.Sprintln(a...)))
2526
}
2627

27-
func Progress(format string, a ...any) {
28-
msg := fmt.Sprintf(format, a...)
29-
fmt.Printf("%s\r", runewidth.Truncate(msg, maxWidth-3, "..."))
28+
func Write(a ...any) {
29+
_, _ = writer.Write([]byte(fmt.Sprint(a...)))
3030
}
31-
func PrintEnd(format string, a ...any) {
32-
msg := fmt.Sprintf(format, a...)
33-
Printf("%s\r", runewidth.FillLeft(" ", maxWidth))
34-
Println(msg)
31+
32+
func Writef(format string, a ...any) {
33+
_, _ = writer.Write([]byte(fmt.Sprintf(format, a...)))
3534
}
3635

37-
func PrintError(path string, message string) {
38-
fmt.Printf("| %-60s | %s |\n", runewidth.Truncate(path, 50, "..."), message)
39-
//fmt.Printf("| %-20s | %-20s |\n", path, message)
36+
func Writeln(a ...any) {
37+
_, _ = writer.Write([]byte(fmt.Sprintln(a...)))
4038
}
4139

42-
func PrintTable(table [][]string) {
40+
func WriteTable(table [][]string) {
4341
// get number of columns from the first table row
4442
columnLengths := make([]int, len(table[0]))
4543
for _, line := range table {
@@ -71,3 +69,13 @@ func PrintTable(table [][]string) {
7169
}
7270
}
7371
}
72+
73+
func Progress(format string, a ...any) {
74+
msg := fmt.Sprintf(format, a...)
75+
fmt.Printf("%s\r", runewidth.Truncate(msg, maxWidth-3, "..."))
76+
}
77+
func ProgressEnd(format string, a ...any) {
78+
msg := fmt.Sprintf(format, a...)
79+
fmt.Printf("%s\r", runewidth.FillLeft(" ", maxWidth))
80+
fmt.Println(msg)
81+
}

0 commit comments

Comments
 (0)