mirror of
https://github.com/mudler/luet.git
synced 2025-09-25 14:38:50 +00:00
Add machine readable output to pkglist
This commit is contained in:
@@ -21,6 +21,8 @@ import (
|
|||||||
"sort"
|
"sort"
|
||||||
|
|
||||||
//. "github.com/mudler/luet/pkg/config"
|
//. "github.com/mudler/luet/pkg/config"
|
||||||
|
"github.com/ghodss/yaml"
|
||||||
|
. "github.com/mudler/luet/pkg/config"
|
||||||
helpers "github.com/mudler/luet/pkg/helpers"
|
helpers "github.com/mudler/luet/pkg/helpers"
|
||||||
. "github.com/mudler/luet/pkg/logger"
|
. "github.com/mudler/luet/pkg/logger"
|
||||||
pkg "github.com/mudler/luet/pkg/package"
|
pkg "github.com/mudler/luet/pkg/package"
|
||||||
@@ -29,6 +31,16 @@ import (
|
|||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type PackageResult struct {
|
||||||
|
Name string `json:"name"`
|
||||||
|
Category string `json:"category"`
|
||||||
|
Version string `json:"version"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type Results struct {
|
||||||
|
Packages []PackageResult `json:"packages"`
|
||||||
|
}
|
||||||
|
|
||||||
func pkgDetail(pkg pkg.Package) string {
|
func pkgDetail(pkg pkg.Package) string {
|
||||||
ans := fmt.Sprintf(`
|
ans := fmt.Sprintf(`
|
||||||
@@ Package: %s/%s-%s
|
@@ Package: %s/%s-%s
|
||||||
@@ -63,11 +75,16 @@ func NewTreePkglistCommand() *cobra.Command {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
Run: func(cmd *cobra.Command, args []string) {
|
Run: func(cmd *cobra.Command, args []string) {
|
||||||
|
var results Results
|
||||||
|
|
||||||
treePath, _ := cmd.Flags().GetString("tree")
|
treePath, _ := cmd.Flags().GetString("tree")
|
||||||
verbose, _ := cmd.Flags().GetBool("verbose")
|
verbose, _ := cmd.Flags().GetBool("verbose")
|
||||||
buildtime, _ := cmd.Flags().GetBool("buildtime")
|
buildtime, _ := cmd.Flags().GetBool("buildtime")
|
||||||
full, _ := cmd.Flags().GetBool("full")
|
full, _ := cmd.Flags().GetBool("full")
|
||||||
|
out, _ := cmd.Flags().GetString("output")
|
||||||
|
if out != "terminal" {
|
||||||
|
LuetCfg.GetLogging().SetLogLevel("error")
|
||||||
|
}
|
||||||
|
|
||||||
var reciper tree.Builder
|
var reciper tree.Builder
|
||||||
if buildtime {
|
if buildtime {
|
||||||
@@ -126,17 +143,41 @@ func NewTreePkglistCommand() *cobra.Command {
|
|||||||
|
|
||||||
if addPkg {
|
if addPkg {
|
||||||
plist = append(plist, pkgstr)
|
plist = append(plist, pkgstr)
|
||||||
|
results.Packages = append(results.Packages, PackageResult{
|
||||||
|
Name: p.GetName(),
|
||||||
|
Version: p.GetVersion(),
|
||||||
|
Category: p.GetCategory(),
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
y, err := yaml.Marshal(results)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Printf("err: %v\n", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
switch out {
|
||||||
|
case "yaml":
|
||||||
|
fmt.Println(string(y))
|
||||||
|
case "json":
|
||||||
|
j2, err := yaml.YAMLToJSON(y)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Printf("err: %v\n", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
fmt.Println(string(j2))
|
||||||
|
default:
|
||||||
sort.Strings(plist)
|
sort.Strings(plist)
|
||||||
for _, p := range plist {
|
for _, p := range plist {
|
||||||
fmt.Println(p)
|
fmt.Println(p)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
ans.Flags().BoolP("buildtime", "b", false, "Build time match")
|
ans.Flags().BoolP("buildtime", "b", false, "Build time match")
|
||||||
|
ans.Flags().StringP("output", "o", "terminal", "Output format ( Defaults: terminal, available: json,yaml )")
|
||||||
|
|
||||||
ans.Flags().BoolP("verbose", "v", false, "Add package version")
|
ans.Flags().BoolP("verbose", "v", false, "Add package version")
|
||||||
ans.Flags().BoolP("full", "f", false, "Show package detail")
|
ans.Flags().BoolP("full", "f", false, "Show package detail")
|
||||||
|
Reference in New Issue
Block a user