mirror of
https://github.com/jimeh/build-emacs-for-macos.git
synced 2026-02-19 09:36:42 +00:00
Useful when needing to sign singular files with same ease of signing a Emacs.app bundle.
97 lines
1.7 KiB
Go
97 lines
1.7 KiB
Go
package cli
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
|
|
cli2 "github.com/urfave/cli/v2"
|
|
)
|
|
|
|
type CLI struct {
|
|
App *cli2.App
|
|
Version string
|
|
Commit string
|
|
Date string
|
|
}
|
|
|
|
func New(version, commit, date string) *CLI {
|
|
if version == "" {
|
|
version = "0.0.0-dev"
|
|
}
|
|
|
|
c := &CLI{
|
|
Version: version,
|
|
Commit: commit,
|
|
Date: date,
|
|
App: &cli2.App{
|
|
Name: "emacs-builder",
|
|
Usage: "Tool to build emacs",
|
|
Version: version,
|
|
EnableBashCompletion: true,
|
|
Flags: []cli2.Flag{
|
|
&cli2.StringFlag{
|
|
Name: "log-level",
|
|
Usage: "set log level",
|
|
Aliases: []string{"l"},
|
|
Value: "info",
|
|
},
|
|
&cli2.BoolFlag{
|
|
Name: "quiet",
|
|
Usage: "silence noisy output",
|
|
Aliases: []string{"q"},
|
|
Value: false,
|
|
},
|
|
cli2.VersionFlag,
|
|
},
|
|
Commands: []*cli2.Command{
|
|
planCmd(),
|
|
signCmd(),
|
|
signFilesCmd(),
|
|
notarizeCmd(),
|
|
packageCmd(),
|
|
releaseCmd(),
|
|
caskCmd(),
|
|
{
|
|
Name: "version",
|
|
Usage: "print the version",
|
|
Aliases: []string{"v"},
|
|
Action: func(c *cli2.Context) error {
|
|
cli2.VersionPrinter(c)
|
|
|
|
return nil
|
|
},
|
|
},
|
|
},
|
|
},
|
|
}
|
|
|
|
cli2.VersionPrinter = c.VersionPrinter
|
|
|
|
return c
|
|
}
|
|
|
|
func (s *CLI) VersionPrinter(c *cli2.Context) {
|
|
version := c.App.Version
|
|
if version == "" {
|
|
version = "0.0.0-dev"
|
|
}
|
|
|
|
extra := []string{}
|
|
if len(s.Commit) >= 7 {
|
|
extra = append(extra, s.Commit[0:7])
|
|
}
|
|
if s.Date != "" {
|
|
extra = append(extra, s.Date)
|
|
}
|
|
var extraOut string
|
|
if len(extra) > 0 {
|
|
extraOut += " (" + strings.Join(extra, ", ") + ")"
|
|
}
|
|
|
|
fmt.Printf("%s%s\n", version, extraOut)
|
|
}
|
|
|
|
func (s *CLI) Run(args []string) error {
|
|
return s.App.Run(args)
|
|
}
|