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 }