Move reading build vars to separate function
This commit is contained in:
parent
35046566a1
commit
6012f0f505
42
build.go
42
build.go
|
@ -41,6 +41,7 @@ import (
|
||||||
"github.com/goreleaser/nfpm/v2/files"
|
"github.com/goreleaser/nfpm/v2/files"
|
||||||
"go.arsenm.dev/lure/distro"
|
"go.arsenm.dev/lure/distro"
|
||||||
"go.arsenm.dev/lure/download"
|
"go.arsenm.dev/lure/download"
|
||||||
|
"go.arsenm.dev/lure/internal/shutils"
|
||||||
"go.arsenm.dev/lure/internal/shutils/decoder"
|
"go.arsenm.dev/lure/internal/shutils/decoder"
|
||||||
"go.arsenm.dev/lure/manager"
|
"go.arsenm.dev/lure/manager"
|
||||||
"mvdan.cc/sh/v3/expand"
|
"mvdan.cc/sh/v3/expand"
|
||||||
|
@ -492,6 +493,47 @@ func setScripts(vars *BuildVars, info *nfpm.Info, scriptDir string) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// getBuildVars only gets the build variables, while disabling exec, stat, open, and readdir
|
||||||
|
func getBuildVars(ctx context.Context, script string, info *distro.OSRelease) (*BuildVars, error) {
|
||||||
|
fl, err := os.Open(script)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
file, err := syntax.NewParser().Parse(fl, "lure.sh")
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
fl.Close()
|
||||||
|
|
||||||
|
runner, err := interp.New(
|
||||||
|
interp.Env(expand.ListEnviron()),
|
||||||
|
interp.ExecHandler(shutils.NopExec),
|
||||||
|
interp.StatHandler(shutils.NopStat),
|
||||||
|
interp.OpenHandler(shutils.NopOpen),
|
||||||
|
interp.ReadDirHandler(shutils.NopReadDir),
|
||||||
|
)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = runner.Run(ctx, file)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
dec := decoder.New(info, runner)
|
||||||
|
|
||||||
|
var vars BuildVars
|
||||||
|
err = dec.DecodeVars(&vars)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return &vars, nil
|
||||||
|
}
|
||||||
|
|
||||||
func uniq(ss ...*[]string) {
|
func uniq(ss ...*[]string) {
|
||||||
for _, s := range ss {
|
for _, s := range ss {
|
||||||
slices.Sort(*s)
|
slices.Sort(*s)
|
||||||
|
|
40
info.go
40
info.go
|
@ -23,12 +23,7 @@ import (
|
||||||
|
|
||||||
"github.com/urfave/cli/v2"
|
"github.com/urfave/cli/v2"
|
||||||
"go.arsenm.dev/lure/distro"
|
"go.arsenm.dev/lure/distro"
|
||||||
"go.arsenm.dev/lure/internal/shutils"
|
|
||||||
"go.arsenm.dev/lure/internal/shutils/decoder"
|
|
||||||
"gopkg.in/yaml.v3"
|
"gopkg.in/yaml.v3"
|
||||||
"mvdan.cc/sh/v3/expand"
|
|
||||||
"mvdan.cc/sh/v3/interp"
|
|
||||||
"mvdan.cc/sh/v3/syntax"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func infoCmd(c *cli.Context) error {
|
func infoCmd(c *cli.Context) error {
|
||||||
|
@ -50,40 +45,9 @@ func infoCmd(c *cli.Context) error {
|
||||||
// if multiple are matched, only use the first one
|
// if multiple are matched, only use the first one
|
||||||
script := found[0]
|
script := found[0]
|
||||||
|
|
||||||
fl, err := os.Open(script)
|
vars, err := getBuildVars(c.Context, script, info)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal("Error opening script").Err(err).Send()
|
log.Fatal("Error getting build variables").Err(err).Send()
|
||||||
}
|
|
||||||
|
|
||||||
file, err := syntax.NewParser().Parse(fl, "lure.sh")
|
|
||||||
if err != nil {
|
|
||||||
log.Fatal("Error parsing script").Err(err).Send()
|
|
||||||
}
|
|
||||||
|
|
||||||
fl.Close()
|
|
||||||
|
|
||||||
runner, err := interp.New(
|
|
||||||
interp.Env(expand.ListEnviron()),
|
|
||||||
interp.ExecHandler(shutils.NopExec),
|
|
||||||
interp.StatHandler(shutils.NopStat),
|
|
||||||
interp.OpenHandler(shutils.NopOpen),
|
|
||||||
interp.ReadDirHandler(shutils.NopReadDir),
|
|
||||||
)
|
|
||||||
if err != nil {
|
|
||||||
log.Fatal("Error creating runner").Err(err).Send()
|
|
||||||
}
|
|
||||||
|
|
||||||
err = runner.Run(c.Context, file)
|
|
||||||
if err != nil {
|
|
||||||
log.Fatal("Error running script").Err(err).Send()
|
|
||||||
}
|
|
||||||
|
|
||||||
dec := decoder.New(info, runner)
|
|
||||||
|
|
||||||
var vars BuildVars
|
|
||||||
err = dec.DecodeVars(&vars)
|
|
||||||
if err != nil {
|
|
||||||
log.Fatal("Error decoding script variables").Err(err).Send()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
err = yaml.NewEncoder(os.Stdout).Encode(vars)
|
err = yaml.NewEncoder(os.Stdout).Encode(vars)
|
||||||
|
|
41
list.go
41
list.go
|
@ -2,15 +2,9 @@ package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
|
||||||
|
|
||||||
"github.com/urfave/cli/v2"
|
"github.com/urfave/cli/v2"
|
||||||
"go.arsenm.dev/lure/distro"
|
"go.arsenm.dev/lure/distro"
|
||||||
"go.arsenm.dev/lure/internal/shutils"
|
|
||||||
"go.arsenm.dev/lure/internal/shutils/decoder"
|
|
||||||
"mvdan.cc/sh/v3/expand"
|
|
||||||
"mvdan.cc/sh/v3/interp"
|
|
||||||
"mvdan.cc/sh/v3/syntax"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func listCmd(c *cli.Context) error {
|
func listCmd(c *cli.Context) error {
|
||||||
|
@ -25,40 +19,9 @@ func listCmd(c *cli.Context) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, script := range pkgs {
|
for _, script := range pkgs {
|
||||||
fl, err := os.Open(script)
|
vars, err := getBuildVars(c.Context, script, info)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal("Error opening script").Err(err).Send()
|
log.Fatal("Error getting build variables").Err(err).Send()
|
||||||
}
|
|
||||||
|
|
||||||
file, err := syntax.NewParser().Parse(fl, "lure.sh")
|
|
||||||
if err != nil {
|
|
||||||
log.Fatal("Error parsing script").Err(err).Send()
|
|
||||||
}
|
|
||||||
|
|
||||||
fl.Close()
|
|
||||||
|
|
||||||
runner, err := interp.New(
|
|
||||||
interp.Env(expand.ListEnviron()),
|
|
||||||
interp.ExecHandler(shutils.NopExec),
|
|
||||||
interp.StatHandler(shutils.NopStat),
|
|
||||||
interp.OpenHandler(shutils.NopOpen),
|
|
||||||
interp.ReadDirHandler(shutils.NopReadDir),
|
|
||||||
)
|
|
||||||
if err != nil {
|
|
||||||
log.Fatal("Error creating runner").Err(err).Send()
|
|
||||||
}
|
|
||||||
|
|
||||||
err = runner.Run(c.Context, file)
|
|
||||||
if err != nil {
|
|
||||||
log.Fatal("Error running script").Err(err).Send()
|
|
||||||
}
|
|
||||||
|
|
||||||
dec := decoder.New(info, runner)
|
|
||||||
|
|
||||||
var vars BuildVars
|
|
||||||
err = dec.DecodeVars(&vars)
|
|
||||||
if err != nil {
|
|
||||||
log.Fatal("Error decoding script variables").Err(err).Send()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Println(vars.Name, vars.Version)
|
fmt.Println(vars.Name, vars.Version)
|
||||||
|
|
39
upgrade.go
39
upgrade.go
|
@ -21,16 +21,10 @@ package main
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
|
||||||
|
|
||||||
"github.com/urfave/cli/v2"
|
"github.com/urfave/cli/v2"
|
||||||
"go.arsenm.dev/lure/distro"
|
"go.arsenm.dev/lure/distro"
|
||||||
"go.arsenm.dev/lure/internal/shutils"
|
|
||||||
"go.arsenm.dev/lure/internal/shutils/decoder"
|
|
||||||
"go.arsenm.dev/lure/manager"
|
"go.arsenm.dev/lure/manager"
|
||||||
"mvdan.cc/sh/v3/expand"
|
|
||||||
"mvdan.cc/sh/v3/interp"
|
|
||||||
"mvdan.cc/sh/v3/syntax"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func upgradeCmd(c *cli.Context) error {
|
func upgradeCmd(c *cli.Context) error {
|
||||||
|
@ -74,38 +68,9 @@ func checkForUpdates(ctx context.Context, mgr manager.Manager, info *distro.OSRe
|
||||||
// since we're not using a glob, we can assume a single item
|
// since we're not using a glob, we can assume a single item
|
||||||
script := scripts[0]
|
script := scripts[0]
|
||||||
|
|
||||||
fl, err := os.Open(script)
|
vars, err := getBuildVars(ctx, script, info)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
log.Fatal("Error getting build variables").Err(err).Send()
|
||||||
}
|
|
||||||
|
|
||||||
file, err := syntax.NewParser().Parse(fl, "lure.sh")
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
runner, err := interp.New(
|
|
||||||
interp.Env(expand.ListEnviron()),
|
|
||||||
interp.ExecHandler(shutils.NopExec),
|
|
||||||
interp.StatHandler(shutils.NopStat),
|
|
||||||
interp.OpenHandler(shutils.NopOpen),
|
|
||||||
interp.ReadDirHandler(shutils.NopReadDir),
|
|
||||||
)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
err = runner.Run(ctx, file)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
dec := decoder.New(info, runner)
|
|
||||||
|
|
||||||
var vars BuildVars
|
|
||||||
err = dec.DecodeVars(&vars)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
}
|
||||||
|
|
||||||
repoVer := vars.Version
|
repoVer := vars.Version
|
||||||
|
|
Loading…
Reference in New Issue