@@ -21,28 +21,30 @@ import (
2121func 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