Skip to content

Commit b2dfe8f

Browse files
committed
implements v1.0
1 parent 41480f5 commit b2dfe8f

File tree

4 files changed

+46
-2
lines changed

4 files changed

+46
-2
lines changed

build.bat

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
SET CGO_ENABLED=0
2+
SET GOOS=darwin
3+
SET GOARCH=amd64
4+
go build -o git-json-diff-osx cmd/git-json-diff/main.go
5+
6+
SET CGO_ENABLED=0
7+
SET GOOS=linux
8+
SET GOARCH=amd64
9+
go build -o git-json-diff cmd/git-json-diff/main.go
10+
11+
SET CGO_ENABLED=0
12+
SET GOOS=windows
13+
SET GOARCH=amd64
14+
go build -o git-json-diff.exe cmd/git-json-diff/main.go

cmd/main.go renamed to cmd/git-json-diff/main.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ func main() {
2424

2525
jsonText2, err := git_json_diff.RetrieveFileContentWithCommitId(*filePath, *commit2)
2626

27-
diffString, err := git_json_diff.Compare(jsonText1, jsonText2, *format)
27+
diffString, err := git_json_diff.Compare(jsonText2, jsonText1, *format)
2828
if err != nil {
2929
log.Fatalln(err)
3030
}

git.go

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import (
77
"fmt"
88
"encoding/json"
99
"github.com/yudai/gojsondiff/formatter"
10-
)
10+
)
1111

1212
func isGitInstall() bool {
1313
if _, err := exec.LookPath("git"); err != nil {
@@ -34,7 +34,29 @@ func RetrieveFileContentWithCommitId(filePath, commitId string) (ret string, err
3434
return string(stdout), err
3535
}
3636

37+
func checkJSONUnmarshal(jsonText string) error {
38+
var m map[string]interface{}
39+
err := json.Unmarshal([]byte(jsonText), &m)
40+
return err
41+
}
42+
3743
func Compare(jsonText1, jsonText2, outFormat string) (string, error) {
44+
if jsonText1 == "" {
45+
jsonText1 = "{}"
46+
}
47+
48+
if jsonText2 == "" {
49+
jsonText2 = "{}"
50+
}
51+
52+
if err := checkJSONUnmarshal(jsonText1); err != nil {
53+
return "", fmt.Errorf("json content:\n %s \n decode failed with error: %s\n", jsonText1, err)
54+
}
55+
56+
if err := checkJSONUnmarshal(jsonText2); err != nil {
57+
return "", fmt.Errorf("json content:\n %s \n decode failed with error: %s\n", jsonText2, err)
58+
}
59+
3860
differ := diff.New()
3961
d, err := differ.Compare([]byte(jsonText1), []byte(jsonText2))
4062
if err != nil {

git_test.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,14 @@ func TestCompare(t *testing.T) {
4242
]
4343
}
4444
`},
45+
{
46+
`{
47+
"item1": [
48+
{"up": 1, "down": 2}
49+
]
50+
}`,
51+
``,
52+
},
4553
}
4654
for _, c := range testCases {
4755
diffStr, err := Compare(c.input1, c.input2, "ascii")

0 commit comments

Comments
 (0)