@@ -26,6 +26,53 @@ var licenseFiles = []string{
26
26
"LICENSE" , "LICENCE" , "UNLICENSE" , "COPYING" , "COPYRIGHT" ,
27
27
}
28
28
29
+ func ShouldSkip (path string , info os.FileInfo , tests , all bool ) bool {
30
+ name := filepath .Base (path )
31
+
32
+ relevantFile := false
33
+ for _ , ext := range goFileTypes {
34
+ if strings .HasSuffix (name , ext ) {
35
+ relevantFile = true
36
+ break
37
+ }
38
+ }
39
+
40
+ testdata := false
41
+ for _ , n := range strings .Split (filepath .Dir (path ), string (filepath .Separator )) {
42
+ if n == "testdata" || n == "_testdata" {
43
+ testdata = true
44
+ }
45
+ }
46
+
47
+ skip := false
48
+ switch {
49
+ case all && ! (name == ".git" && info .IsDir ()) && name != ".bzr" && name != ".hg" :
50
+ skip = false
51
+
52
+ // Include all files in a testdata folder
53
+ case tests && testdata :
54
+ skip = false
55
+
56
+ // https://golang.org/cmd/go/#hdr-Description_of_package_lists
57
+ case strings .HasPrefix (name , "." ):
58
+ skip = true
59
+ case strings .HasPrefix (name , "_" ) && name != "_testdata" :
60
+ skip = true
61
+
62
+ case ! tests && name == "_testdata" && info .IsDir ():
63
+ skip = true
64
+ case ! tests && name == "testdata" && info .IsDir ():
65
+ skip = true
66
+ case ! tests && strings .HasSuffix (name , "_test.go" ) && ! info .IsDir ():
67
+ skip = true
68
+
69
+ case ! relevantFile && ! info .IsDir ():
70
+ skip = true
71
+ }
72
+
73
+ return skip
74
+ }
75
+
29
76
// Copypath copies the contents of src to dst, excluding any file that is not
30
77
// relevant to the Go compiler.
31
78
func Copypath (dst string , src string , tests , all bool ) error {
@@ -34,48 +81,7 @@ func Copypath(dst string, src string, tests, all bool) error {
34
81
return err
35
82
}
36
83
37
- name := filepath .Base (path )
38
-
39
- relevantFile := false
40
- for _ , ext := range goFileTypes {
41
- if strings .HasSuffix (name , ext ) {
42
- relevantFile = true
43
- break
44
- }
45
- }
46
-
47
- testdata := false
48
- for _ , n := range strings .Split (filepath .Dir (path ), string (filepath .Separator )) {
49
- if n == "testdata" || n == "_testdata" {
50
- testdata = true
51
- }
52
- }
53
-
54
- skip := false
55
- switch {
56
- case all && ! (name == ".git" && info .IsDir ()) && name != ".bzr" && name != ".hg" :
57
- skip = false
58
-
59
- // Include all files in a testdata folder
60
- case tests && testdata :
61
- skip = false
62
-
63
- // https://golang.org/cmd/go/#hdr-Description_of_package_lists
64
- case strings .HasPrefix (name , "." ):
65
- skip = true
66
- case strings .HasPrefix (name , "_" ) && name != "_testdata" :
67
- skip = true
68
-
69
- case ! tests && name == "_testdata" && info .IsDir ():
70
- skip = true
71
- case ! tests && name == "testdata" && info .IsDir ():
72
- skip = true
73
- case ! tests && strings .HasSuffix (name , "_test.go" ) && ! info .IsDir ():
74
- skip = true
75
-
76
- case ! relevantFile && ! info .IsDir ():
77
- skip = true
78
- }
84
+ skip := ShouldSkip (path , info , tests , all )
79
85
80
86
if skip {
81
87
if info .IsDir () {
0 commit comments