fix: add auto_req and auto_prov #7

Open
Maks1mS wants to merge 1 commits from Maks1mS/ALR:fix/make-findprovides-findrequires-optional into master
4 changed files with 29 additions and 10 deletions

@ -25,12 +25,12 @@ import (
"strings" "strings"
"github.com/mitchellh/mapstructure" "github.com/mitchellh/mapstructure"
"plemya-x.ru/alr/internal/overrides"
"plemya-x.ru/alr/pkg/distro"
"golang.org/x/exp/slices" "golang.org/x/exp/slices"
"mvdan.cc/sh/v3/expand" "mvdan.cc/sh/v3/expand"
"mvdan.cc/sh/v3/interp" "mvdan.cc/sh/v3/interp"
"mvdan.cc/sh/v3/syntax" "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") 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 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"` Checksums []string `sh:"checksums"`
Backup []string `sh:"backup"` Backup []string `sh:"backup"`
Scripts Scripts `sh:"scripts"` Scripts Scripts `sh:"scripts"`
AutoReq []string `sh:"auto_req"`
AutoProv []string `sh:"auto_prov"`
} }
type Scripts struct { type Scripts struct {

@ -46,6 +46,7 @@ import (
_ "github.com/goreleaser/nfpm/v2/arch" _ "github.com/goreleaser/nfpm/v2/arch"
_ "github.com/goreleaser/nfpm/v2/deb" _ "github.com/goreleaser/nfpm/v2/deb"
_ "github.com/goreleaser/nfpm/v2/rpm" _ "github.com/goreleaser/nfpm/v2/rpm"
"go.elara.ws/logger/log"
"mvdan.cc/sh/v3/expand" "mvdan.cc/sh/v3/expand"
"mvdan.cc/sh/v3/interp" "mvdan.cc/sh/v3/interp"
"mvdan.cc/sh/v3/syntax" "mvdan.cc/sh/v3/syntax"
@ -543,14 +544,25 @@ func buildPkgMetadata(ctx context.Context, vars *types.BuildVars, dirs types.Dir
} }
pkgInfo.Overridables.Contents = contents pkgInfo.Overridables.Contents = contents
if pkgFormat == "rpm" { if len(vars.AutoProv) == 1 && decoder.IsTruthy(vars.AutoProv[0]) {
err = rpmFindProvides(ctx, pkgInfo, dirs) if pkgFormat == "rpm" {
if err != nil { err = rpmFindProvides(ctx, pkgInfo, dirs)
return nil, err 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.Stdout = &out
cmd.Stderr = &stderr cmd.Stderr = &stderr
if err := cmd.Run(); err != nil { if err := cmd.Run(); err != nil {
log.Error(stderr.String()) log.Error(stderr.String()).Send()
return err return err
} }