mirror of
https://github.com/foomo/posh.git
synced 2025-10-16 12:45:38 +00:00
feat: extend env helper
This commit is contained in:
parent
0b37b905a0
commit
672cb1e24b
@ -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,
|
||||
}),
|
||||
)
|
||||
|
||||
4
internal/env/init.go
vendored
4
internal/env/init.go
vendored
@ -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
19
pkg/env/env.go
vendored
@ -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...))
|
||||
}
|
||||
|
||||
@ -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
|
||||
|
||||
Loading…
Reference in New Issue
Block a user