stillbox/internal/common/common.go
2024-11-24 09:10:31 -05:00

72 lines
938 B
Go

package common
import (
"github.com/spf13/cobra"
)
const (
AppName = "stillbox"
EnvPrefix = "STILLBOX_"
)
const (
TimeFormat = "Jan 2 15:04:05"
)
type cmdOptions interface {
Options(*cobra.Command, []string) error
Execute() error
}
func RunE(c cmdOptions) func(cmd *cobra.Command, args []string) error {
return func(cmd *cobra.Command, args []string) error {
err := c.Options(cmd, args)
if err != nil {
cmd.SilenceUsage = true
return err
}
err = c.Execute()
if err != nil {
cmd.SilenceUsage = true
}
return err
}
}
func PtrTo[T any](t T) *T {
return &t
}
func NilIfZero[T comparable](val T) *T {
var zero T
if val == zero {
return nil
}
return &val
}
func ZeroIfNil[T any](v *T) T {
var zero T
if v == nil {
return zero
}
return *v
}
func DefaultIfNilOrZero[T comparable](v *T, def T) T {
if v == nil {
return def
}
var zero T
if *v == zero {
return def
}
return *v
}