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
|
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,
|
||||||
}),
|
}),
|
||||||
)
|
)
|
||||||
|
|||||||
4
internal/env/init.go
vendored
4
internal/env/init.go
vendored
@ -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
19
pkg/env/env.go
vendored
@ -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...))
|
||||||
|
}
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user