Add list command
This commit is contained in:
parent
16bb936db7
commit
00c5ea3b5e
|
@ -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
|
||||||
|
}
|
7
main.go
7
main.go
|
@ -67,9 +67,14 @@ func main() {
|
||||||
{
|
{
|
||||||
Name: "info",
|
Name: "info",
|
||||||
Usage: "Print information about a package",
|
Usage: "Print information about a package",
|
||||||
Aliases: []string{"up"},
|
|
||||||
Action: infoCmd,
|
Action: infoCmd,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
Name: "list",
|
||||||
|
Usage: "List LURE repo packages",
|
||||||
|
Aliases: []string{"ls"},
|
||||||
|
Action: listCmd,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
Flags: []cli.Flag{
|
Flags: []cli.Flag{
|
||||||
&cli.StringFlag{
|
&cli.StringFlag{
|
||||||
|
|
Loading…
Reference in New Issue