@@ -30,79 +30,77 @@ import (
3030 "github.com/ossf/scorecard/v4/pkg"
3131)
3232
33- //nolint:gochecknoinits
34- func init () {
35- rootCmd .AddCommand (serveCmd )
36- }
37-
38- var serveCmd = & cobra.Command {
39- Use : "serve" ,
40- Short : "Serve the scorecard program over http" ,
41- Long : `` ,
42- Run : func (cmd * cobra.Command , args []string ) {
43- logger := log .NewLogger (log .ParseLevel (opts .LogLevel ))
44-
45- t , err := template .New ("webpage" ).Parse (tpl )
46- if err != nil {
47- // TODO(log): Should this actually panic?
48- logger .Error (err , "parsing webpage template" )
49- panic (err )
50- }
33+ // TODO(cmd): Determine if this should be exported.
34+ func serveCmd () * cobra.Command {
35+ return & cobra.Command {
36+ Use : "serve" ,
37+ Short : "Serve the scorecard program over http" ,
38+ Long : `` ,
39+ Run : func (cmd * cobra.Command , args []string ) {
40+ logger := log .NewLogger (log .ParseLevel (opts .LogLevel ))
5141
52- http .HandleFunc ("/" , func (rw http.ResponseWriter , r * http.Request ) {
53- repoParam := r .URL .Query ().Get ("repo" )
54- const length = 3
55- s := strings .SplitN (repoParam , "/" , length )
56- if len (s ) != length {
57- rw .WriteHeader (http .StatusBadRequest )
58- }
59- repo , err := githubrepo .MakeGithubRepo (repoParam )
42+ t , err := template .New ("webpage" ).Parse (tpl )
6043 if err != nil {
61- rw .WriteHeader (http .StatusBadRequest )
62- }
63- ctx := r .Context ()
64- repoClient := githubrepo .CreateGithubRepoClient (ctx , logger )
65- ossFuzzRepoClient , err := githubrepo .CreateOssFuzzRepoClient (ctx , logger )
66- vulnsClient := clients .DefaultVulnerabilitiesClient ()
67- if err != nil {
68- logger .Error (err , "initializing clients" )
69- rw .WriteHeader (http .StatusInternalServerError )
70- }
71- defer ossFuzzRepoClient .Close ()
72- ciiClient := clients .DefaultCIIBestPracticesClient ()
73- repoResult , err := pkg .RunScorecards (
74- ctx , repo , clients .HeadSHA /*commitSHA*/ , false /*raw*/ , checks .AllChecks , repoClient ,
75- ossFuzzRepoClient , ciiClient , vulnsClient )
76- if err != nil {
77- logger .Error (err , "running enabled scorecard checks on repo" )
78- rw .WriteHeader (http .StatusInternalServerError )
44+ // TODO(log): Should this actually panic?
45+ logger .Error (err , "parsing webpage template" )
46+ panic (err )
7947 }
8048
81- if r .Header .Get ("Content-Type" ) == "application/json" {
82- if err := repoResult .AsJSON (opts .ShowDetails , log .ParseLevel (opts .LogLevel ), rw ); err != nil {
49+ http .HandleFunc ("/" , func (rw http.ResponseWriter , r * http.Request ) {
50+ repoParam := r .URL .Query ().Get ("repo" )
51+ const length = 3
52+ s := strings .SplitN (repoParam , "/" , length )
53+ if len (s ) != length {
54+ rw .WriteHeader (http .StatusBadRequest )
55+ }
56+ repo , err := githubrepo .MakeGithubRepo (repoParam )
57+ if err != nil {
58+ rw .WriteHeader (http .StatusBadRequest )
59+ }
60+ ctx := r .Context ()
61+ repoClient := githubrepo .CreateGithubRepoClient (ctx , logger )
62+ ossFuzzRepoClient , err := githubrepo .CreateOssFuzzRepoClient (ctx , logger )
63+ vulnsClient := clients .DefaultVulnerabilitiesClient ()
64+ if err != nil {
65+ logger .Error (err , "initializing clients" )
66+ rw .WriteHeader (http .StatusInternalServerError )
67+ }
68+ defer ossFuzzRepoClient .Close ()
69+ ciiClient := clients .DefaultCIIBestPracticesClient ()
70+ repoResult , err := pkg .RunScorecards (
71+ ctx , repo , clients .HeadSHA /*commitSHA*/ , false /*raw*/ , checks .AllChecks , repoClient ,
72+ ossFuzzRepoClient , ciiClient , vulnsClient )
73+ if err != nil {
74+ logger .Error (err , "running enabled scorecard checks on repo" )
75+ rw .WriteHeader (http .StatusInternalServerError )
76+ }
77+
78+ if r .Header .Get ("Content-Type" ) == "application/json" {
79+ if err := repoResult .AsJSON (opts .ShowDetails , log .ParseLevel (opts .LogLevel ), rw ); err != nil {
80+ // TODO(log): Improve error message
81+ logger .Error (err , "" )
82+ rw .WriteHeader (http .StatusInternalServerError )
83+ }
84+ return
85+ }
86+ if err := t .Execute (rw , repoResult ); err != nil {
8387 // TODO(log): Improve error message
8488 logger .Error (err , "" )
85- rw .WriteHeader (http .StatusInternalServerError )
8689 }
87- return
90+ })
91+ port := os .Getenv ("PORT" )
92+ if port == "" {
93+ port = "8080"
8894 }
89- if err := t .Execute (rw , repoResult ); err != nil {
90- // TODO(log): Improve error message
91- logger .Error (err , "" )
95+ fmt .Printf ("Listening on localhost:%s\n " , port )
96+ err = http .ListenAndServe (fmt .Sprintf ("0.0.0.0:%s" , port ), nil )
97+ if err != nil {
98+ // TODO(log): Should this actually panic?
99+ logger .Error (err , "listening and serving" )
100+ panic (err )
92101 }
93- })
94- port := os .Getenv ("PORT" )
95- if port == "" {
96- port = "8080"
97- }
98- fmt .Printf ("Listening on localhost:%s\n " , port )
99- err = http .ListenAndServe (fmt .Sprintf ("0.0.0.0:%s" , port ), nil )
100- if err != nil {
101- // TODO(log): Should this actually panic?
102- logger .Error (err , "listening and serving" )
103- panic (err )
104- }
105- },
102+ },
103+ }
106104}
107105
108106const tpl = `
0 commit comments