github.com/covergates/covergates@v0.2.2-0.20201009050117-42ef8a19fb95/cmd/cli/comment/comment.go (about)

     1  package comment
     2  
     3  import (
     4  	"fmt"
     5  	"io/ioutil"
     6  	"log"
     7  	"net/http"
     8  
     9  	"github.com/covergates/covergates/cmd/cli/modules"
    10  	"github.com/urfave/cli/v2"
    11  )
    12  
    13  // Command for comment on pull request
    14  var Command = &cli.Command{
    15  	Name:  "comment",
    16  	Usage: "leave a report summary comment",
    17  	Flags: []cli.Flag{
    18  		&cli.StringFlag{
    19  			Name:     "report",
    20  			Usage:    "report id",
    21  			EnvVars:  []string{"REPORT_ID"},
    22  			Value:    "",
    23  			Required: true,
    24  		},
    25  		&cli.StringFlag{
    26  			Name:     "number",
    27  			Usage:    "pull request number",
    28  			EnvVars:  []string{"DRONE_PULL_REQUEST", "PULL_REQUEST"},
    29  			Value:    "",
    30  			Required: true,
    31  		},
    32  	},
    33  	Action: comment,
    34  }
    35  
    36  func comment(c *cli.Context) error {
    37  	url := fmt.Sprintf(
    38  		"%s/reports/%s/comment/%s",
    39  		c.String("url"),
    40  		c.String("report"),
    41  		c.String("number"),
    42  	)
    43  	req, err := http.NewRequest("POST", url, nil)
    44  	if err != nil {
    45  		return err
    46  	}
    47  	client := modules.GetHTTPClient(c)
    48  	respond, err := client.Do(req)
    49  	if err != nil {
    50  		return err
    51  	}
    52  	defer respond.Body.Close()
    53  	text, err := ioutil.ReadAll(respond.Body)
    54  	if err != nil {
    55  		return err
    56  	} else if respond.StatusCode >= 400 {
    57  		log.Fatal(string(text))
    58  	} else {
    59  		log.Println(string(text))
    60  	}
    61  	return nil
    62  }