github.com/goreleaser/nfpm/v2@v2.44.0/internal/cmd/root.go (about)

     1  package cmd
     2  
     3  import (
     4  	"fmt"
     5  
     6  	goversion "github.com/caarlos0/go-version"
     7  	_ "github.com/goreleaser/nfpm/v2/apk"  // apk packager
     8  	_ "github.com/goreleaser/nfpm/v2/arch" // archlinux packager
     9  	_ "github.com/goreleaser/nfpm/v2/deb"  // deb packager
    10  	_ "github.com/goreleaser/nfpm/v2/ipk"  // ipk packager
    11  	_ "github.com/goreleaser/nfpm/v2/rpm"  // rpm packager
    12  	"github.com/spf13/cobra"
    13  )
    14  
    15  func Execute(version goversion.Info, exit func(int), args []string) {
    16  	newRootCmd(version, exit).Execute(args)
    17  }
    18  
    19  type rootCmd struct {
    20  	cmd  *cobra.Command
    21  	exit func(int)
    22  }
    23  
    24  func (cmd *rootCmd) Execute(args []string) {
    25  	cmd.cmd.SetArgs(args)
    26  
    27  	if err := cmd.cmd.Execute(); err != nil {
    28  		fmt.Println(err.Error())
    29  		cmd.exit(1)
    30  	}
    31  }
    32  
    33  func newRootCmd(version goversion.Info, exit func(int)) *rootCmd {
    34  	root := &rootCmd{
    35  		exit: exit,
    36  	}
    37  	cmd := &cobra.Command{
    38  		Use:               "nfpm",
    39  		Short:             "Packages apps on RPM, Deb, APK, Arch Linux, and ipk formats based on a YAML configuration file",
    40  		Long:              `nFPM is a simple and 0-dependencies apk, arch, deb, ipk and rpm linux packager written in Go.`,
    41  		Version:           version.String(),
    42  		SilenceUsage:      true,
    43  		SilenceErrors:     true,
    44  		Args:              cobra.NoArgs,
    45  		ValidArgsFunction: cobra.NoFileCompletions,
    46  	}
    47  	cmd.SetVersionTemplate("{{.Version}}")
    48  
    49  	cmd.AddCommand(
    50  		newInitCmd().cmd,
    51  		newPackageCmd().cmd,
    52  		newDocsCmd().cmd,
    53  		newManCmd().cmd,
    54  		newSchemaCmd().cmd,
    55  	)
    56  
    57  	root.cmd = cmd
    58  	return root
    59  }