mirror of
https://github.com/anchore/syft.git
synced 2026-11-01 23:16:30 +01:00
update sterescope + add json presenter
This commit is contained in:
+31
-5
@@ -4,19 +4,45 @@ package pkg
|
||||
|
||||
type Catalog struct {
|
||||
// TODO: catalog by package ID for potential indexing
|
||||
Packages map[Type][]Package
|
||||
packages map[Type][]Package
|
||||
}
|
||||
|
||||
func NewCatalog() Catalog {
|
||||
return Catalog{
|
||||
Packages: make(map[Type][]Package),
|
||||
packages: make(map[Type][]Package),
|
||||
}
|
||||
}
|
||||
|
||||
func (c *Catalog) Add(p Package) {
|
||||
_, ok := c.Packages[p.Type]
|
||||
_, ok := c.packages[p.Type]
|
||||
if !ok {
|
||||
c.Packages[p.Type] = make([]Package, 0)
|
||||
c.packages[p.Type] = make([]Package, 0)
|
||||
}
|
||||
c.Packages[p.Type] = append(c.Packages[p.Type], p)
|
||||
c.packages[p.Type] = append(c.packages[p.Type], p)
|
||||
}
|
||||
|
||||
func (c *Catalog) Enumerate(types ...Type) <-chan Package {
|
||||
channel := make(chan Package)
|
||||
go func() {
|
||||
defer close(channel)
|
||||
for ty, packages := range c.packages {
|
||||
if len(types) != 0 {
|
||||
found := false
|
||||
typeCheck:
|
||||
for _, t := range types {
|
||||
if t == ty {
|
||||
found = true
|
||||
break typeCheck
|
||||
}
|
||||
}
|
||||
if !found {
|
||||
continue
|
||||
}
|
||||
}
|
||||
for _, p := range packages {
|
||||
channel <- p
|
||||
}
|
||||
}
|
||||
}()
|
||||
return channel
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
package pkg
|
||||
|
||||
// TODO: delete me
|
||||
type DummyPackage struct {
|
||||
Extra string
|
||||
}
|
||||
@@ -4,6 +4,7 @@ import "github.com/anchore/stereoscope/pkg/file"
|
||||
|
||||
// TODO: add package ID (random/incremental)
|
||||
|
||||
// TODO: add field to trace which analyzer detected this
|
||||
type Package struct {
|
||||
Name string
|
||||
Version string
|
||||
|
||||
+18
-1
@@ -14,4 +14,21 @@ const (
|
||||
|
||||
type Type uint
|
||||
|
||||
// TODO: stringer...
|
||||
var typeStr = []string{
|
||||
"UnknownPackage",
|
||||
"apk",
|
||||
"deb",
|
||||
"java",
|
||||
"node",
|
||||
"pacman",
|
||||
"python",
|
||||
"rpm",
|
||||
"ruby",
|
||||
}
|
||||
|
||||
func (t Type) String() string {
|
||||
if int(t) >= len(typeStr) {
|
||||
return typeStr[0]
|
||||
}
|
||||
return typeStr[t]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user