stillbox/internal/common/common.go

66 lines
788 B
Go
Raw Normal View History

2024-07-14 13:47:48 -04:00
package common
import (
2024-11-24 10:38:19 -05:00
"github.com/urfave/cli/v2"
2024-07-14 13:47:48 -04:00
)
2024-11-24 09:10:31 -05:00
const (
2024-11-24 10:38:19 -05:00
AppName = "stillbox"
2024-11-24 09:10:31 -05:00
EnvPrefix = "STILLBOX_"
)
2024-10-22 08:39:15 -04:00
const (
TimeFormat = "Jan 2 15:04:05"
)
2024-07-14 13:47:48 -04:00
type cmdOptions interface {
2024-11-24 10:38:19 -05:00
Options(*cli.Context) error
2024-07-14 13:47:48 -04:00
Execute() error
}
2024-11-24 10:38:19 -05:00
func Action(c cmdOptions) cli.ActionFunc {
return func(ctx *cli.Context) error {
err := c.Options(ctx)
2024-07-14 13:47:48 -04:00
if err != nil {
return err
}
2024-11-24 10:38:19 -05:00
return c.Execute()
2024-07-14 13:47:48 -04:00
}
}
2024-07-27 19:25:16 -04:00
func PtrTo[T any](t T) *T {
return &t
}
2024-11-24 00:06:43 -05:00
func NilIfZero[T comparable](val T) *T {
2024-07-27 19:25:16 -04:00
var zero T
if val == zero {
return nil
}
return &val
}
2024-11-21 22:25:25 -05:00
2024-11-24 00:06:43 -05:00
func ZeroIfNil[T any](v *T) T {
2024-11-21 22:25:25 -05:00
var zero T
if v == nil {
return zero
}
return *v
}
2024-11-24 00:06:43 -05:00
func DefaultIfNilOrZero[T comparable](v *T, def T) T {
if v == nil {
return def
}
var zero T
if *v == zero {
return def
}
return *v
}