41 lines
652 B
Go
41 lines
652 B
Go
|
|
package env
|
||
|
|
|
||
|
|
import (
|
||
|
|
"os"
|
||
|
|
|
||
|
|
"github.com/qdm12/golibs/logging"
|
||
|
|
)
|
||
|
|
|
||
|
|
type Env interface {
|
||
|
|
FatalOnError(err error)
|
||
|
|
PrintVersion(program string, commandFn func() (string, error))
|
||
|
|
}
|
||
|
|
|
||
|
|
type env struct {
|
||
|
|
logger logging.Logger
|
||
|
|
osExit func(n int)
|
||
|
|
}
|
||
|
|
|
||
|
|
func New(logger logging.Logger) Env {
|
||
|
|
return &env{
|
||
|
|
logger: logger,
|
||
|
|
osExit: os.Exit,
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func (e *env) FatalOnError(err error) {
|
||
|
|
if err != nil {
|
||
|
|
e.logger.Error(err)
|
||
|
|
e.osExit(1)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func (e *env) PrintVersion(program string, commandFn func() (string, error)) {
|
||
|
|
version, err := commandFn()
|
||
|
|
if err != nil {
|
||
|
|
e.logger.Error(err)
|
||
|
|
} else {
|
||
|
|
e.logger.Info("%s version: %s", program, version)
|
||
|
|
}
|
||
|
|
}
|