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 package cmd
import ( import (
"os"
"path" "path"
"github.com/foomo/posh/embed" "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 // define module
if value, err := git.OriginURL(); err != nil { if value, err := git.OriginURL(); err != nil {
l.Debug("failed to retrieve git origin url:", err.Error()) 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 { } else {
data["module"] = value 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.WithOverride(initCmdFlagOverride),
scaffold2.WithDirectories(scaffold2.Directory{ scaffold2.WithDirectories(scaffold2.Directory{
Source: fs, Source: fs,
Target: os.Getenv(env.ProjectRoot), Target: env.ProjectRoot(),
Data: data, Data: data,
}), }),
) )

View File

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

19
pkg/env/env.go vendored
View File

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