@@ -16,58 +16,62 @@ import (
1616func LatestFlag () (string , error ) {
1717 var output strings.Builder
1818
19- latestRelease (& output )
19+ err := latestRelease (& output )
2020
2121 result := output .String ()
2222 fmt .Print (result )
2323
24- return result , nil
24+ return result , err
2525}
2626
27- func latestRelease (output * strings.Builder ) {
27+ func latestRelease (output * strings.Builder ) error {
2828 type Release struct {
2929 TagName string `json:"tag_name"`
3030 }
3131
32- // Parse and validate the URL
3332 parsedURL , err := url .Parse ("https://api.github.com/repos/digitalghost-dev/poke-cli/releases/latest" )
3433 if err != nil {
35- fmt .Fprintf (output , "invalid URL: %v\n " , err )
36- return
34+ err = fmt .Errorf ("invalid URL: %w" , err )
35+ fmt .Fprintln (output , err )
36+ return err
3737 }
3838
39- // Implementing gosec error
4039 if flag .Lookup ("test.v" ) == nil {
4140 if parsedURL .Scheme != "https" {
42- fmt .Fprint (output , "only HTTPS URLs are allowed for security reasons\n " )
43- return
41+ err := fmt .Errorf ("only HTTPS URLs are allowed for security reasons" )
42+ fmt .Fprintln (output , err )
43+ return err
4444 }
4545 if parsedURL .Host != "api.github.com" {
46- fmt .Fprint (output , "url host is not allowed\n " )
47- return
46+ err := fmt .Errorf ("url host is not allowed" )
47+ fmt .Fprintln (output , err )
48+ return err
4849 }
4950 }
5051
5152 response , err := http .Get (parsedURL .String ())
5253 if err != nil {
53- fmt .Fprintf (output , "error fetching data: %v\n " , err )
54- return
54+ err = fmt .Errorf ("error fetching data: %w" , err )
55+ fmt .Fprintln (output , err )
56+ return err
5557 }
5658 defer response .Body .Close ()
5759
5860 body , err := io .ReadAll (response .Body )
5961 if err != nil {
60- fmt .Fprintf (output , "error reading response body: %v\n " , err )
61- return
62+ err = fmt .Errorf ("error reading response body: %w" , err )
63+ fmt .Fprintln (output , err )
64+ return err
6265 }
6366
6467 var release Release
6568 if err := json .Unmarshal (body , & release ); err != nil {
66- fmt .Fprintf (output , "error unmarshalling JSON: %v\n " , err )
67- return
69+ err = fmt .Errorf ("error unmarshalling JSON: %w" , err )
70+ fmt .Fprintln (output , err )
71+ return err
6872 }
6973
70- releaseString := "Latest available version :"
74+ releaseString := "Latest available release on GitHub :"
7175 releaseTag := styling .ColoredBullet .Render ("" ) + release .TagName
7276
7377 docStyle := lipgloss .NewStyle ().
@@ -80,4 +84,6 @@ func latestRelease(output *strings.Builder) {
8084
8185 output .WriteString (docStyle .Render (fullDoc ))
8286 output .WriteString ("\n " )
87+
88+ return nil
8389}
0 commit comments