github.com/goenning/goreleaser@v0.36.0/main.go (about)

     1  package main
     2  
     3  import (
     4  	"fmt"
     5  	"os"
     6  
     7  	"github.com/apex/log"
     8  	lcli "github.com/apex/log/handlers/cli"
     9  	"github.com/goreleaser/goreleaser/goreleaserlib"
    10  	"github.com/urfave/cli"
    11  )
    12  
    13  var (
    14  	version = "dev"
    15  	commit  = "none"
    16  	date    = "unknown"
    17  )
    18  
    19  func init() {
    20  	log.SetHandler(lcli.New(os.Stdout))
    21  }
    22  
    23  func main() {
    24  	var app = cli.NewApp()
    25  	app.Name = "goreleaser"
    26  	app.Version = fmt.Sprintf("%v, commit %v, built at %v", version, commit, date)
    27  	app.Usage = "Deliver Go binaries as fast and easily as possible"
    28  	app.Flags = []cli.Flag{
    29  		cli.StringFlag{
    30  			Name:  "config, file, c, f",
    31  			Usage: "Load configuration from `FILE`",
    32  			Value: ".goreleaser.yml",
    33  		},
    34  		cli.StringFlag{
    35  			Name:  "release-notes",
    36  			Usage: "Load custom release notes from a markdown `FILE`",
    37  		},
    38  		cli.BoolFlag{
    39  			Name:  "skip-validate",
    40  			Usage: "Skip all the validations against the release",
    41  		},
    42  		cli.BoolFlag{
    43  			Name:  "skip-publish",
    44  			Usage: "Skip all publishing pipes of the release",
    45  		},
    46  		cli.BoolFlag{
    47  			Name:  "snapshot",
    48  			Usage: "Generate an unversioned snapshot release",
    49  		},
    50  		cli.BoolFlag{
    51  			Name:  "rm-dist",
    52  			Usage: "Remove ./dist before building",
    53  		},
    54  		cli.IntFlag{
    55  			Name:  "parallelism, p",
    56  			Usage: "Amount of builds launch in parallel",
    57  			Value: 4,
    58  		},
    59  		cli.BoolFlag{
    60  			Name:  "debug",
    61  			Usage: "Enable debug mode",
    62  		},
    63  	}
    64  	app.Action = func(c *cli.Context) error {
    65  		log.Infof("running goreleaser %v", version)
    66  		if err := goreleaserlib.Release(c); err != nil {
    67  			log.WithError(err).Error("release failed")
    68  			return cli.NewExitError("\n", 1)
    69  		}
    70  		return nil
    71  	}
    72  	app.Commands = []cli.Command{
    73  		{
    74  			Name:    "init",
    75  			Aliases: []string{"i"},
    76  			Usage:   "generate .goreleaser.yml",
    77  			Action: func(c *cli.Context) error {
    78  				var filename = ".goreleaser.yml"
    79  				if err := goreleaserlib.InitProject(filename); err != nil {
    80  					log.WithError(err).Error("failed to init project")
    81  					return cli.NewExitError("\n", 1)
    82  				}
    83  
    84  				log.WithField("file", filename).
    85  					Info("config created; please edit accordingly to your needs")
    86  				return nil
    87  			},
    88  		},
    89  	}
    90  	if err := app.Run(os.Args); err != nil {
    91  		log.WithError(err).Fatal("failed")
    92  	}
    93  }