mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-07-17 17:52:12 +00:00
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
|
return diff, err
|
||||||
}
|
}
|
||||||
if !bytes.Equal(b1, b2) {
|
if !bytes.Equal(b1, b2) {
|
||||||
dmp := diffmatchpatch.New()
|
fmt.Println(PrettyFileDiff(string(b1), string(b2)))
|
||||||
diffs := dmp.DiffMain(string(b1), string(b2), false)
|
|
||||||
fmt.Println(dmp.DiffPrettyText(diffs))
|
|
||||||
diff.Insert(f)
|
diff.Insert(f)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// return the differing files
|
// return the differing files
|
||||||
return diff, nil
|
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
|
// SyncFile copies file from src file path to a dst file path by replacement
|
||||||
// deletes dst file if src file doesn't exist
|
// deletes dst file if src file doesn't exist
|
||||||
func SyncFile(src, dst string) error {
|
func SyncFile(src, dst string) error {
|
||||||
|
|||||||
@@ -261,3 +261,25 @@ func TestSyncFileNoSrcFile(t *testing.T) {
|
|||||||
assert.Error(t, err)
|
assert.Error(t, err)
|
||||||
assert.True(t, strings.Contains(err.Error(), "no such file or directory"))
|
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