mirror of
https://github.com/foomo/posh.git
synced 2025-10-16 12:45:38 +00:00
feat: improve error messages
This commit is contained in:
parent
3f85bba380
commit
a65704e706
@ -25,10 +25,12 @@ func PackageExists(l log.Logger) rule.Rule[config.RequirePackage] {
|
||||
return func(ctx context.Context, v config.RequirePackage) error {
|
||||
l.Debug("validate package exists:", v.String())
|
||||
if output, err := exec.LookPath(v.Name); err != nil {
|
||||
l.Debug(err.Error(), output)
|
||||
l.Error(v.String())
|
||||
l.Error(err.Error(), output)
|
||||
return errors.Errorf(v.Help, v.Version)
|
||||
} else if output == "" {
|
||||
l.Debugf("missing executable %s", v.Name)
|
||||
l.Error(v.String())
|
||||
l.Errorf("missing executable %s", v.Name)
|
||||
return errors.Errorf(v.Help, v.Version)
|
||||
}
|
||||
return nil
|
||||
@ -38,26 +40,37 @@ func PackageExists(l log.Logger) rule.Rule[config.RequirePackage] {
|
||||
func PackageVersion(l log.Logger) rule.Rule[config.RequirePackage] {
|
||||
return func(ctx context.Context, v config.RequirePackage) error {
|
||||
l.Debug("validate package version:", v.String())
|
||||
|
||||
expected, err := semver.NewConstraint(v.Version)
|
||||
if err != nil {
|
||||
l.Error(v.String())
|
||||
return errors.Wrap(err, "failed to parse version constraint")
|
||||
}
|
||||
|
||||
output, err := exec.CommandContext(ctx, "sh", "-c", v.Command).CombinedOutput()
|
||||
if err != nil {
|
||||
l.Error("failed to validate package version:", v.String(), ", output:", string(output), ", err:", err.Error())
|
||||
l.Error(v.String())
|
||||
return errors.Wrap(err, string(output))
|
||||
}
|
||||
|
||||
actual := strings.TrimPrefix(strings.TrimSpace(string(output)), "v")
|
||||
if actual == "" {
|
||||
l.Error("failed to retrieve version: ", string(output))
|
||||
l.Error(v.String())
|
||||
return errors.Errorf(v.Help, v.Version)
|
||||
}
|
||||
|
||||
if c, err := semver.NewConstraint(v.Version); err != nil {
|
||||
return errors.Wrapf(err, "failed to create version constraint: %s", v.Version)
|
||||
} else if version, err := semver.NewVersion(actual); err != nil {
|
||||
return errors.Wrapf(err, "failed to create version")
|
||||
} else if !c.Check(version) {
|
||||
version, err := semver.NewVersion(actual)
|
||||
if err != nil {
|
||||
l.Error(v.String())
|
||||
return errors.Wrapf(err, "failed to parse version: %s", actual)
|
||||
}
|
||||
|
||||
if !expected.Check(version) {
|
||||
l.Error(v.String())
|
||||
l.Debug("wrong package version:", actual)
|
||||
return errors.Errorf(v.Help, v.Version)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user