mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-05-17 18:25:26 +00:00
Merge pull request #2372 from phanimarupaka/GitDiffForUpdate
Print file difference like git diff
This commit is contained in:
@@ -121,17 +121,23 @@ func Diff(sourceDir, destDir string) (sets.String, error) {
|
||||
return diff, err
|
||||
}
|
||||
if !bytes.Equal(b1, b2) {
|
||||
dmp := diffmatchpatch.New()
|
||||
diffs := dmp.DiffMain(string(b1), string(b2), false)
|
||||
fmt.Println(dmp.DiffPrettyText(diffs))
|
||||
fmt.Println(PrettyFileDiff(string(b1), string(b2)))
|
||||
diff.Insert(f)
|
||||
}
|
||||
}
|
||||
|
||||
// return the differing files
|
||||
return diff, nil
|
||||
}
|
||||
|
||||
// PrettyFileDiff takes the content of two files and returns the pretty diff
|
||||
func PrettyFileDiff(s1, s2 string) string {
|
||||
dmp := diffmatchpatch.New()
|
||||
wSrc, wDst, warray := dmp.DiffLinesToRunes(s1, s2)
|
||||
diffs := dmp.DiffMainRunes(wSrc, wDst, false)
|
||||
diffs = dmp.DiffCharsToLines(diffs, warray)
|
||||
return dmp.DiffPrettyText(diffs)
|
||||
}
|
||||
|
||||
// SyncFile copies file from src file path to a dst file path by replacement
|
||||
// deletes dst file if src file doesn't exist
|
||||
func SyncFile(src, dst string) error {
|
||||
|
||||
@@ -261,3 +261,25 @@ func TestSyncFileNoSrcFile(t *testing.T) {
|
||||
assert.Error(t, err)
|
||||
assert.True(t, strings.Contains(err.Error(), "no such file or directory"))
|
||||
}
|
||||
|
||||
func TestPrettyFileDiff(t *testing.T) {
|
||||
s1 := `apiVersion: someversion/v1alpha2
|
||||
kind: ContainerCluster
|
||||
metadata:
|
||||
clusterName: "some_cluster"
|
||||
name: asm-cluster
|
||||
namespace: "PROJECT_ID" # {"$ref":"#/definitions/io.k8s.cli.setters.gcloud.core.project"}`
|
||||
|
||||
s2 := `apiVersion: someversion/v1alpha2
|
||||
kind: ContainerCluster
|
||||
metadata:
|
||||
clusterName: "some_cluster"
|
||||
name: asm-cluster
|
||||
namespace: "some_project" # {"$ref":"#/definitions/io.k8s.cli.setters.gcloud.core.project"}`
|
||||
|
||||
expectedLine1 := `[31m namespace: "PROJECT_ID" # {"$ref":"#/definitions/io.k8s.cli.setters.gcloud.core.project"}`
|
||||
expectedLine2 := `[32m namespace: "some_project" # {"$ref":"#/definitions/io.k8s.cli.setters.gcloud.core.project"}`
|
||||
|
||||
assert.Contains(t, PrettyFileDiff(s1, s2), expectedLine1)
|
||||
assert.Contains(t, PrettyFileDiff(s1, s2), expectedLine2)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user