fix: add auto_req and auto_prov

This commit is contained in:
Maxim Slipenko 2024-12-27 21:15:37 +03:00
parent 5d1d3d7c45
commit a345a24b95
4 changed files with 29 additions and 10 deletions

@ -25,12 +25,12 @@ import (
"strings"
"github.com/mitchellh/mapstructure"
"plemya-x.ru/alr/internal/overrides"
"plemya-x.ru/alr/pkg/distro"
"golang.org/x/exp/slices"
"mvdan.cc/sh/v3/expand"
"mvdan.cc/sh/v3/interp"
"mvdan.cc/sh/v3/syntax"
"plemya-x.ru/alr/internal/overrides"
"plemya-x.ru/alr/pkg/distro"
)
var ErrNotPointerToStruct = errors.New("val must be a pointer to a struct")
@ -221,3 +221,8 @@ func (d *Decoder) getVar(name string) *expand.Variable {
}
return nil
}
func IsTruthy(value string) bool {
value = strings.ToLower(strings.TrimSpace(value))
return value == "true" || value == "yes" || value == "1"
}

@ -49,6 +49,8 @@ type BuildVars struct {
Checksums []string `sh:"checksums"`
Backup []string `sh:"backup"`
Scripts Scripts `sh:"scripts"`
AutoReq []string `sh:"auto_req"`
AutoProv []string `sh:"auto_prov"`
}
type Scripts struct {

@ -46,6 +46,7 @@ import (
_ "github.com/goreleaser/nfpm/v2/arch"
_ "github.com/goreleaser/nfpm/v2/deb"
_ "github.com/goreleaser/nfpm/v2/rpm"
"go.elara.ws/logger/log"
"mvdan.cc/sh/v3/expand"
"mvdan.cc/sh/v3/interp"
"mvdan.cc/sh/v3/syntax"
@ -543,14 +544,25 @@ func buildPkgMetadata(ctx context.Context, vars *types.BuildVars, dirs types.Dir
}
pkgInfo.Overridables.Contents = contents
if pkgFormat == "rpm" {
err = rpmFindProvides(ctx, pkgInfo, dirs)
if err != nil {
return nil, err
if len(vars.AutoProv) == 1 && decoder.IsTruthy(vars.AutoProv[0]) {
if pkgFormat == "rpm" {
err = rpmFindProvides(ctx, pkgInfo, dirs)
if err != nil {
return nil, err
}
} else {
log.Info("AutoProv is not implemented for this package format, so it's skiped").Send()
}
err = rpmFindRequires(ctx, pkgInfo, dirs)
if err != nil {
return nil, err
}
if len(vars.AutoReq) == 1 && decoder.IsTruthy(vars.AutoReq[0]) {
if pkgFormat == "rpm" {
err = rpmFindRequires(ctx, pkgInfo, dirs)
if err != nil {
return nil, err
}
} else {
log.Info("AutoReq is not implemented for this package format, so it's skiped").Send()
}
}

@ -47,7 +47,7 @@ func rpmFindDependencies(ctx context.Context, pkgInfo *nfpm.Info, dirs types.Dir
cmd.Stdout = &out
cmd.Stderr = &stderr
if err := cmd.Run(); err != nil {
log.Error(stderr.String())
log.Error(stderr.String()).Send()
return err
}