@@ -32,14 +32,34 @@ type Diagnosis struct {
32
32
Ignored bool
33
33
Diagnosed bool
34
34
IsActive bool
35
+ Error error
36
+ }
37
+
38
+ func (d * Diagnosis ) ErrorMessage () string {
39
+ if d .Error == nil {
40
+ return ""
41
+ }
42
+ return fmt .Sprintf ("%s" , d .Error )
35
43
}
36
44
37
45
type MedicalTechnician interface {
38
46
Libraries (r parser_io.ReadSeekerAt ) []types.Library
39
47
SourceCodeURL (lib types.Library ) (string , error )
40
48
}
41
49
42
- func FetchRepositoryParams (libs []types.Library , g MedicalTechnician ) []github.FetchRepositoryParam {
50
+ type RepositoryParams []github.FetchRepositoryParam
51
+
52
+ func (p RepositoryParams ) CanSearchParams () []github.FetchRepositoryParam {
53
+ params := []github.FetchRepositoryParam {}
54
+ for _ , param := range p {
55
+ if param .CanSearch {
56
+ params = append (params , param )
57
+ }
58
+ }
59
+ return params
60
+ }
61
+
62
+ func FetchRepositoryParams (libs []types.Library , g MedicalTechnician ) RepositoryParams {
43
63
var params []github.FetchRepositoryParam
44
64
var wg sync.WaitGroup
45
65
sem := make (chan struct {}, FETCH_REPOS_PER_ONCE )
@@ -55,6 +75,13 @@ func FetchRepositoryParams(libs []types.Library, g MedicalTechnician) []github.F
55
75
56
76
url , err := g .SourceCodeURL (lib )
57
77
if err != nil {
78
+ params = append (params ,
79
+ github.FetchRepositoryParam {
80
+ PackageName : lib .Name ,
81
+ CanSearch : false ,
82
+ Error : err ,
83
+ },
84
+ )
58
85
return
59
86
}
60
87
@@ -64,6 +91,7 @@ func FetchRepositoryParams(libs []types.Library, g MedicalTechnician) []github.F
64
91
github.FetchRepositoryParam {
65
92
PackageName : lib .Name ,
66
93
CanSearch : false ,
94
+ Error : err ,
67
95
},
68
96
)
69
97
return
@@ -90,14 +118,15 @@ func Diagnose(d MedicalTechnician, r io.ReadSeekCloserAt, year int, ignores []st
90
118
slicedParams := [][]github.FetchRepositoryParam {}
91
119
libs := d .Libraries (r )
92
120
fetchRepositoryParams := FetchRepositoryParams (libs , d )
93
- sliceSize := len (fetchRepositoryParams )
121
+ canSearchRepositoryParams := fetchRepositoryParams .CanSearchParams ()
122
+ sliceSize := len (canSearchRepositoryParams )
94
123
95
124
for i := 0 ; i < sliceSize ; i += github .SEARCH_REPOS_PER_ONCE {
96
125
end := i + github .SEARCH_REPOS_PER_ONCE
97
126
if sliceSize < end {
98
127
end = sliceSize
99
128
}
100
- slicedParams = append (slicedParams , fetchRepositoryParams [i :end ])
129
+ slicedParams = append (slicedParams , canSearchRepositoryParams [i :end ])
101
130
}
102
131
103
132
var wg sync.WaitGroup
@@ -135,6 +164,7 @@ func Diagnose(d MedicalTechnician, r io.ReadSeekCloserAt, year int, ignores []st
135
164
diagnosis := Diagnosis {
136
165
Name : fetchRepositoryParam .PackageName ,
137
166
Diagnosed : false ,
167
+ Error : fetchRepositoryParam .Error ,
138
168
}
139
169
diagnoses [fetchRepositoryParam .PackageName ] = diagnosis
140
170
}
@@ -225,7 +255,7 @@ func Report(diagnoses map[string]Diagnosis) error {
225
255
}
226
256
227
257
if ! diagnosis .Diagnosed {
228
- warnMessages = append (warnMessages , fmt .Sprintf ("[warn] %s (unknown):" , diagnosis .Name ))
258
+ warnMessages = append (warnMessages , fmt .Sprintf ("[warn] %s (unknown): %s " , diagnosis .Name , diagnosis . ErrorMessage () ))
229
259
unDiagnosedCount += 1
230
260
warnCount += 1
231
261
continue
0 commit comments