Add list command

This commit is contained in:
Elara 2022-09-28 01:35:17 -07:00
parent 16bb936db7
commit 00c5ea3b5e
2 changed files with 74 additions and 1 deletions

68
list.go Normal file
View File

@ -0,0 +1,68 @@
package main
import (
"fmt"
"os"
"github.com/urfave/cli/v2"
"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 {
info, err := distro.ParseOSRelease(c.Context)
if err != nil {
log.Fatal("Error parsing os-release").Err(err).Send()
}
pkgs, err := findPkg("*")
if err != nil {
log.Fatal("Error finding packages").Err(err).Send()
}
for _, script := range pkgs {
fl, err := os.Open(script)
if err != nil {
log.Fatal("Error opening script").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)
}
return nil
}

View File

@ -67,9 +67,14 @@ func main() {
{
Name: "info",
Usage: "Print information about a package",
Aliases: []string{"up"},
Action: infoCmd,
},
{
Name: "list",
Usage: "List LURE repo packages",
Aliases: []string{"ls"},
Action: listCmd,
},
{
Flags: []cli.Flag{
&cli.StringFlag{