kdnotify/cmd/root.go
Paul Stemmet 296c7b8d5e
cmd: add CLI
the only command added is 'watch', which serves the only currently
expected functionality of the binary for this lib.
2022-12-09 18:06:01 +00:00

57 lines
1.1 KiB
Go

/*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package cmd
import (
"fmt"
"strings"
"github.com/spf13/cobra"
"git.st8l.com/luxolus/kdnotify/buildinfo"
)
const (
rootHelp = "A program for responding to Keepalived's VRRP notify events"
rootHelpLong = rootHelp + `
This is meant to be used with the 'vrrp_notify <PIPE>' option, see
man:keepalived.conf(5) for more.`
)
func Execute() error {
return rootCmd().Execute()
}
func rootCmd() *cobra.Command {
root := &cobra.Command{
Use: "kdnotify <subcommand ...>",
Short: rootHelp,
Long: rootHelpLong,
Version: fullVersion(),
}
root.AddCommand(watchCmd())
root.PersistentFlags().String("log-level", "INFO", "Set program log level. ERROR|WARN|INFO|DEBUG")
return root
}
func fullVersion() string {
v := build.Version
hash := build.ShortHash()
features := build.FeaturesList()
vstr := fmt.Sprintf("%s sha=%s", v, hash)
if len(features) > 0 {
vstr = vstr + "features=" + strings.Join(features, ",")
}
return vstr
}