99 "os"
1010 "path/filepath"
1111 "strings"
12+ "time"
1213
1314 "github.com/golangci/golangci-lint/internal/renameio"
1415 "github.com/golangci/golangci-lint/scripts/website/types"
@@ -29,6 +30,7 @@ func main() {
2930
3031func rewriteDocs (replacements map [string ]string ) error {
3132 madeReplacements := map [string ]bool {}
33+
3234 err := filepath .Walk (filepath .Join ("docs" , "src" , "docs" ),
3335 func (path string , info os.FileInfo , err error ) error {
3436 if err != nil {
@@ -40,7 +42,7 @@ func rewriteDocs(replacements map[string]string) error {
4042 return processDoc (path , replacements , madeReplacements )
4143 })
4244 if err != nil {
43- return fmt .Errorf ("failed to walk dir: %w" , err )
45+ return fmt .Errorf ("walk dir: %w" , err )
4446 }
4547
4648 if len (madeReplacements ) != len (replacements ) {
@@ -57,7 +59,7 @@ func rewriteDocs(replacements map[string]string) error {
5759func processDoc (path string , replacements map [string ]string , madeReplacements map [string ]bool ) error {
5860 contentBytes , err := os .ReadFile (path )
5961 if err != nil {
60- return fmt .Errorf ("failed to read %s: %w" , path , err )
62+ return fmt .Errorf ("read %s: %w" , path , err )
6163 }
6264
6365 content := string (contentBytes )
@@ -81,7 +83,7 @@ func processDoc(path string, replacements map[string]string, madeReplacements ma
8183
8284 log .Printf ("Expanded template in %s, saving it" , path )
8385 if err = renameio .WriteFile (path , []byte (content ), os .ModePerm ); err != nil {
84- return fmt .Errorf ("failed to write changes to file %s: %w" , path , err )
86+ return fmt .Errorf ("write changes to file %s: %w" , path , err )
8587 }
8688
8789 return nil
@@ -92,29 +94,38 @@ type latestRelease struct {
9294}
9395
9496func getLatestVersion () (string , error ) {
95- req , err := http .NewRequest ( //nolint:noctx
96- http .MethodGet ,
97- "https://api.github.com/repos/golangci/golangci-lint/releases/latest" ,
98- http .NoBody ,
99- )
97+ endpoint := "https://api.github.com/repos/golangci/golangci-lint/releases/latest"
98+
99+ //nolint:noctx
100+ req , err := http .NewRequest (http .MethodGet , endpoint , http .NoBody )
100101 if err != nil {
101- return "" , fmt .Errorf ("failed to prepare a http request: %w" , err )
102+ return "" , fmt .Errorf ("prepare a HTTP request: %w" , err )
102103 }
103- req .Header .Add ("Accept" , "application/vnd.github.v3+json" )
104- resp , err := http .DefaultClient .Do (req )
104+
105+ req .Header .Set ("Accept" , "application/vnd.github.v3+json" )
106+
107+ client := & http.Client {Timeout : 2 * time .Second }
108+
109+ resp , err := client .Do (req )
110+
105111 if err != nil {
106- return "" , fmt .Errorf ("failed to get http response for the latest tag: %w" , err )
112+ return "" , fmt .Errorf ("get HTTP response for the latest tag: %w" , err )
107113 }
114+
108115 defer resp .Body .Close ()
116+
109117 body , err := io .ReadAll (resp .Body )
110118 if err != nil {
111- return "" , fmt .Errorf ("failed to read a body for the latest tag: %w" , err )
119+ return "" , fmt .Errorf ("read a body for the latest tag: %w" , err )
112120 }
121+
113122 release := latestRelease {}
123+
114124 err = json .Unmarshal (body , & release )
115125 if err != nil {
116- return "" , fmt .Errorf ("failed to unmarshal the body for the latest tag: %w" , err )
126+ return "" , fmt .Errorf ("unmarshal the body for the latest tag: %w" , err )
117127 }
128+
118129 return release .TagName , nil
119130}
120131
@@ -126,7 +137,7 @@ func buildTemplateContext() (map[string]string, error) {
126137
127138 pluginReference , err := getPluginReference ()
128139 if err != nil {
129- return nil , fmt .Errorf ("failed to read plugin reference file: %w" , err )
140+ return nil , fmt .Errorf ("read plugin reference file: %w" , err )
130141 }
131142
132143 helps , err := readJSONFile [types.CLIHelp ](filepath .Join ("assets" , "cli-help.json" ))
@@ -136,12 +147,12 @@ func buildTemplateContext() (map[string]string, error) {
136147
137148 changeLog , err := os .ReadFile ("CHANGELOG.md" )
138149 if err != nil {
139- return nil , err
150+ return nil , fmt . Errorf ( "read CHANGELOG.md: %w" , err )
140151 }
141152
142153 latestVersion , err := getLatestVersion ()
143154 if err != nil {
144- return nil , fmt .Errorf ("failed to get the latest version: %w" , err )
155+ return nil , fmt .Errorf ("get the latest version: %w" , err )
145156 }
146157
147158 exclusions , err := getDefaultExclusions ()
@@ -169,14 +180,16 @@ func readJSONFile[T any](src string) (T, error) {
169180 file , err := os .Open (src )
170181 if err != nil {
171182 var zero T
172- return zero , err
183+ return zero , fmt . Errorf ( "open file %s: %w" , src , err )
173184 }
174185
186+ defer func () { _ = file .Close () }()
187+
175188 var result T
176189 err = json .NewDecoder (file ).Decode (& result )
177190 if err != nil {
178191 var zero T
179- return zero , err
192+ return zero , fmt . Errorf ( "decode JSON file %s: %w" , src , err )
180193 }
181194
182195 return result , nil
0 commit comments