Skip to content

Commit ba4f115

Browse files
committed
use filepath.Rel instead of strings.Trimpath for prevent error on windows
1 parent 64df232 commit ba4f115

File tree

1 file changed

+22
-12
lines changed

1 file changed

+22
-12
lines changed

kyaml/copyutil/copyutil.go

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -21,28 +21,30 @@ import (
2121
func CopyDir(fSys filesys.FileSystem, src string, dst string) error {
2222
return errors.Wrap(fSys.Walk(src, func(path string, info os.FileInfo, err error) error {
2323
if err != nil {
24-
return err
24+
return errors.Wrap(err)
25+
}
26+
rel, err := filepath.Rel(src, path)
27+
if err != nil {
28+
return errors.Wrap(err)
2529
}
30+
2631
// don't copy the .git dir
27-
if path != src {
28-
rel := strings.TrimPrefix(path, src)
29-
if IsDotGitFolder(rel) {
30-
return nil
31-
}
32+
if IsDotGitFolder(rel) {
33+
return nil
3234
}
3335

3436
// path is an absolute path, rather than a path relative to src.
3537
// e.g. if src is /path/to/package, then path might be /path/to/package/and/sub/dir
3638
// we need the path relative to src `and/sub/dir` when we are copying the files to dest.
37-
copyTo := strings.TrimPrefix(path, src)
39+
copyTo := rel
3840

3941
// make directories that don't exist
4042
if info.IsDir() {
4143
return errors.Wrap(fSys.MkdirAll(filepath.Join(dst, copyTo)))
4244
}
4345

4446
// copy file by reading and writing it
45-
b, err := fSys.ReadFile(filepath.Join(src, copyTo))
47+
b, err := fSys.ReadFile(path)
4648
if err != nil {
4749
return errors.Wrap(err)
4850
}
@@ -72,26 +74,34 @@ func Diff(sourceDir, destDir string) (sets.String, error) {
7274
return nil
7375
}
7476

75-
upstreamFiles.Insert(strings.TrimPrefix(strings.TrimPrefix(path, sourceDir), string(filepath.Separator)))
77+
rel, err := filepath.Rel(sourceDir, path)
78+
if err != nil {
79+
return errors.Wrap(err)
80+
}
81+
upstreamFiles.Insert(rel)
7682
return nil
7783
})
7884
if err != nil {
79-
return sets.String{}, err
85+
return sets.String{}, errors.Wrap(err)
8086
}
8187

8288
// get set of filenames in the cloned package
8389
localFiles := sets.String{}
8490
err = filepath.Walk(destDir, func(path string, info os.FileInfo, err error) error {
8591
if err != nil {
86-
return err
92+
return errors.Wrap(err)
8793
}
8894

8995
// skip git repo if it exists
9096
if IsDotGitFolder(path) {
9197
return nil
9298
}
9399

94-
localFiles.Insert(strings.TrimPrefix(strings.TrimPrefix(path, destDir), string(filepath.Separator)))
100+
rel, err := filepath.Rel(destDir, path)
101+
if err != nil {
102+
return errors.Wrap(err)
103+
}
104+
localFiles.Insert(rel)
95105
return nil
96106
})
97107
if err != nil {

0 commit comments

Comments
 (0)