diff --git a/internal/shutils/decoder/decoder.go b/internal/shutils/decoder/decoder.go index 9f28f2f..14cbc6d 100644 --- a/internal/shutils/decoder/decoder.go +++ b/internal/shutils/decoder/decoder.go @@ -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" +} diff --git a/internal/types/build.go b/internal/types/build.go index 89b616c..18c2e43 100644 --- a/internal/types/build.go +++ b/internal/types/build.go @@ -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 { diff --git a/pkg/build/build.go b/pkg/build/build.go index a836515..7f7bb72 100644 --- a/pkg/build/build.go +++ b/pkg/build/build.go @@ -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() } } diff --git a/pkg/build/findDeps.go b/pkg/build/findDeps.go index 115e659..eda5884 100644 --- a/pkg/build/findDeps.go +++ b/pkg/build/findDeps.go @@ -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 }