feat: extend env helper

This commit is contained in:
Kevin Franklin Kim 2023-05-16 09:56:57 +02:00
parent 0b37b905a0
commit 672cb1e24b
4 changed files with 45 additions and 20 deletions

View File

@ -1,7 +1,6 @@
package cmd
import (
"os"
"path"
"github.com/foomo/posh/embed"
@ -31,7 +30,7 @@ Posh init must be run inside of a go module (please run "go mod init <MODNAME> f
// define module
if value, err := git.OriginURL(); err != nil {
l.Debug("failed to retrieve git origin url:", err.Error())
data["module"] = path.Base(os.Getenv(env.ProjectRoot))
data["module"] = path.Base(env.ProjectRoot())
} else {
data["module"] = value
}
@ -47,7 +46,7 @@ Posh init must be run inside of a go module (please run "go mod init <MODNAME> f
scaffold2.WithOverride(initCmdFlagOverride),
scaffold2.WithDirectories(scaffold2.Directory{
Source: fs,
Target: os.Getenv(env.ProjectRoot),
Target: env.ProjectRoot(),
Data: data,
}),
)

View File

@ -9,11 +9,11 @@ import (
func Init() error {
// setup env
if value := os.Getenv(env.ProjectRoot); value != "" {
if value := env.ProjectRoot(); value != "" {
// continue
} else if wd, err := os.Getwd(); err != nil {
return errors.Wrap(err, "failed to retrieve project root")
} else if err := os.Setenv(env.ProjectRoot, wd); err != nil {
} else if err := env.SetProjectRoot(wd); err != nil {
return errors.Wrap(err, "failed to set project root env")
}
return nil

19
pkg/env/env.go vendored
View File

@ -1,3 +1,20 @@
package env
const ProjectRoot = "PROJECT_ROOT"
import (
"os"
"path"
)
const projectRoot = "PROJECT_ROOT"
func ProjectRoot() string {
return os.Getenv(projectRoot)
}
func SetProjectRoot(v string) error {
return os.Setenv(projectRoot, v)
}
func Path(elem ...string) string {
return path.Join(ProjectRoot(), path.Join(elem...))
}

View File

@ -2,29 +2,38 @@ package check
import (
"context"
"time"
"github.com/foomo/posh/pkg/log"
"github.com/foomo/posh/pkg/util/strings"
"github.com/pterm/pterm"
"golang.org/x/sync/errgroup"
)
func DefaultCheck(ctx context.Context, l log.Logger, checkers []Checker) error {
var data pterm.TableData
var wg errgroup.Group
wg.SetLimit(3)
for _, checker := range checkers {
info := checker(ctx, l)
var color pterm.Color
switch info.Status {
case StatusFailure:
color = pterm.FgRed
case StatusSuccess:
color = pterm.FgGreen
default:
color = pterm.FgGray
}
data = append(data, []string{
info.Status.String(),
strings.PadEnd(info.Name, " ", 20),
color.Sprint(info.Note),
wg.Go(func() error {
cancelCtx, cancel := context.WithTimeout(ctx, 10*time.Second)
defer cancel()
info := checker(cancelCtx, l)
var color pterm.Color
switch info.Status {
case StatusFailure:
color = pterm.FgRed
case StatusSuccess:
color = pterm.FgGreen
default:
color = pterm.FgGray
}
data = append(data, []string{
info.Status.String(),
strings.PadEnd(info.Name, " ", 20),
color.Sprint(info.Note),
})
return nil
})
}
table := pterm.DefaultTable