github.com/marianogappa/goreleaser@v0.26.2-0.20170715090149-96acd0a9fc46/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.BoolFlag{
    55  			Name:  "debug",
    56  			Usage: "Enable debug mode",
    57  		},
    58  	}
    59  	app.Action = func(c *cli.Context) error {
    60  		log.Infof("running goreleaser %v", version)
    61  		if err := goreleaserlib.Release(c); err != nil {
    62  			log.WithError(err).Error("release failed")
    63  			return cli.NewExitError("\n", 1)
    64  		}
    65  		return nil
    66  	}
    67  	app.Commands = []cli.Command{
    68  		{
    69  			Name:    "init",
    70  			Aliases: []string{"i"},
    71  			Usage:   "generate .goreleaser.yml",
    72  			Action: func(c *cli.Context) error {
    73  				var filename = ".goreleaser.yml"
    74  				if err := goreleaserlib.InitProject(filename); err != nil {
    75  					log.WithError(err).Error("failed to init project")
    76  					return cli.NewExitError("\n", 1)
    77  				}
    78  
    79  				log.WithField("file", filename).
    80  					Info("config created; please edit accordingly to your needs")
    81  				return nil
    82  			},
    83  		},
    84  	}
    85  	if err := app.Run(os.Args); err != nil {
    86  		log.WithError(err).Fatal("failed")
    87  	}
    88  }