mirror of
https://github.com/anchore/syft.git
synced 2025-11-17 08:23:15 +01:00
migrate json schema generation (#4270)
Signed-off-by: Alex Goodman <wagoodman@users.noreply.github.com>
This commit is contained in:
parent
18e789c4fd
commit
4ae8f73583
@ -502,7 +502,7 @@ tasks:
|
|||||||
generate-json-schema:
|
generate-json-schema:
|
||||||
desc: Generate a new JSON schema
|
desc: Generate a new JSON schema
|
||||||
cmds:
|
cmds:
|
||||||
- "cd syft/internal && go generate . && cd jsonschema && go run . && go fmt ../..."
|
- "cd ./internal && go generate . && cd ./jsonschema && go run . && go fmt ../..."
|
||||||
|
|
||||||
generate-license-list:
|
generate-license-list:
|
||||||
desc: Generate an updated license processing code off of the latest available SPDX license list
|
desc: Generate an updated license processing code off of the latest available SPDX license list
|
||||||
|
|||||||
1
internal/jsonschema/README.md
Normal file
1
internal/jsonschema/README.md
Normal file
@ -0,0 +1 @@
|
|||||||
|
Please see [schema/json/README.md](../../schema/json/README.md) for more information on the JSON schema files in this directory.
|
||||||
@ -15,8 +15,8 @@ import (
|
|||||||
"github.com/invopop/jsonschema"
|
"github.com/invopop/jsonschema"
|
||||||
|
|
||||||
"github.com/anchore/syft/internal"
|
"github.com/anchore/syft/internal"
|
||||||
|
"github.com/anchore/syft/internal/packagemetadata"
|
||||||
syftJsonModel "github.com/anchore/syft/syft/format/syftjson/model"
|
syftJsonModel "github.com/anchore/syft/syft/format/syftjson/model"
|
||||||
"github.com/anchore/syft/syft/internal/packagemetadata"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -26,6 +26,17 @@ are not captured (empty interfaces). This means that pkg.Package.Metadata is not
|
|||||||
can be extended to include specific package metadata struct shapes in the future.
|
can be extended to include specific package metadata struct shapes in the future.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
var repoRoot string
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
var err error
|
||||||
|
repoRoot, err = packagemetadata.RepoRoot()
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("unable to determine repo root")
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
write(encode(build()))
|
write(encode(build()))
|
||||||
}
|
}
|
||||||
@ -60,7 +71,7 @@ func assembleTypeContainer(items []any) (any, map[string]string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if len(typesMissingNames) > 0 {
|
if len(typesMissingNames) > 0 {
|
||||||
fmt.Println("the following types are missing JSON names (manually curated in ./syft/internal/packagemetadata/names.go):")
|
fmt.Println("the following types are missing JSON names (manually curated in ./internal/packagemetadata/names.go):")
|
||||||
for _, t := range typesMissingNames {
|
for _, t := range typesMissingNames {
|
||||||
fmt.Println(" - ", t.Name())
|
fmt.Println(" - ", t.Name())
|
||||||
}
|
}
|
||||||
@ -86,25 +97,30 @@ func build() *jsonschema.Schema {
|
|||||||
// note: AddGoComments parses from the module root and creates keys like "syft/pkg.TypeName",
|
// note: AddGoComments parses from the module root and creates keys like "syft/pkg.TypeName",
|
||||||
// but the reflector expects fully qualified paths like "github.com/anchore/syft/syft/pkg.TypeName".
|
// but the reflector expects fully qualified paths like "github.com/anchore/syft/syft/pkg.TypeName".
|
||||||
// We fix up the keys after extraction to match the expected format.
|
// We fix up the keys after extraction to match the expected format.
|
||||||
if err := reflector.AddGoComments("github.com/anchore/syft", "../../.."); err != nil {
|
if err := reflector.AddGoComments("github.com/anchore/syft", repoRoot); err != nil {
|
||||||
fmt.Fprintf(os.Stderr, "warning: failed to extract Go comments: %v\n", err)
|
fmt.Fprintf(os.Stderr, "warning: failed to extract Go comments: %v\n", err)
|
||||||
} else {
|
} else {
|
||||||
// fix up comment map keys to use fully qualified import paths
|
// fix up comment map keys to use fully qualified import paths
|
||||||
|
// note: AddGoComments includes the absolute repo path WITHOUT the leading slash
|
||||||
|
repoRootNoSlash := strings.TrimPrefix(repoRoot, "/")
|
||||||
fixedMap := make(map[string]string)
|
fixedMap := make(map[string]string)
|
||||||
for k, v := range reflector.CommentMap {
|
for k, v := range reflector.CommentMap {
|
||||||
newKey := k
|
newKey := k
|
||||||
if !strings.HasPrefix(k, "github.com/") {
|
if !strings.HasPrefix(k, "github.com/") {
|
||||||
|
// key doesn't have module prefix, add it
|
||||||
newKey = "github.com/anchore/syft/" + k
|
newKey = "github.com/anchore/syft/" + k
|
||||||
|
} else if strings.Contains(k, repoRootNoSlash) {
|
||||||
|
// key has the absolute repo path embedded, strip it
|
||||||
|
// format: github.com/anchore/syft/Users/wagoodman/code/syft-manual/syft/pkg.Type
|
||||||
|
// should be: github.com/anchore/syft/syft/pkg.Type
|
||||||
|
newKey = strings.Replace(k, repoRootNoSlash+"/", "", 1)
|
||||||
}
|
}
|
||||||
fixedMap[newKey] = v
|
fixedMap[newKey] = v
|
||||||
}
|
}
|
||||||
reflector.CommentMap = fixedMap
|
reflector.CommentMap = fixedMap
|
||||||
|
|
||||||
// copy field comments for type aliases (e.g., type RpmArchive RpmDBEntry)
|
// copy field comments for type aliases (e.g., type RpmArchive RpmDBEntry)
|
||||||
repoRoot, err := packagemetadata.RepoRoot()
|
copyAliasFieldComments(reflector.CommentMap, repoRoot)
|
||||||
if err == nil {
|
|
||||||
copyAliasFieldComments(reflector.CommentMap, repoRoot)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pkgMetadataContainer, pkgMetadataMapping := assembleTypeContainer(packagemetadata.AllTypes())
|
pkgMetadataContainer, pkgMetadataMapping := assembleTypeContainer(packagemetadata.AllTypes())
|
||||||
@ -178,11 +194,6 @@ func encode(schema *jsonschema.Schema) []byte {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func write(schema []byte) {
|
func write(schema []byte) {
|
||||||
repoRoot, err := packagemetadata.RepoRoot()
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println("unable to determine repo root")
|
|
||||||
os.Exit(1)
|
|
||||||
}
|
|
||||||
schemaPath := filepath.Join(repoRoot, "schema", "json", fmt.Sprintf("schema-%s.json", internal.JSONSchemaVersion))
|
schemaPath := filepath.Join(repoRoot, "schema", "json", fmt.Sprintf("schema-%s.json", internal.JSONSchemaVersion))
|
||||||
latestSchemaPath := filepath.Join(repoRoot, "schema", "json", "schema-latest.json")
|
latestSchemaPath := filepath.Join(repoRoot, "schema", "json", "schema-latest.json")
|
||||||
|
|
||||||
@ -5,9 +5,8 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"github.com/anchore/syft/internal/packagemetadata"
|
||||||
"github.com/dave/jennifer/jen"
|
"github.com/dave/jennifer/jen"
|
||||||
|
|
||||||
"github.com/anchore/syft/syft/internal/packagemetadata"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// This program is invoked from syft/internal and generates packagemetadata/generated.go
|
// This program is invoked from syft/internal and generates packagemetadata/generated.go
|
||||||
@ -31,7 +30,7 @@ func main() {
|
|||||||
fmt.Printf("updating package metadata type list with %+v types\n", len(typeNames))
|
fmt.Printf("updating package metadata type list with %+v types\n", len(typeNames))
|
||||||
|
|
||||||
f := jen.NewFile("packagemetadata")
|
f := jen.NewFile("packagemetadata")
|
||||||
f.HeaderComment("DO NOT EDIT: generated by syft/internal/packagemetadata/generate/main.go")
|
f.HeaderComment("DO NOT EDIT: generated by internal/packagemetadata/generate/main.go")
|
||||||
f.ImportName(pkgImport, "pkg")
|
f.ImportName(pkgImport, "pkg")
|
||||||
f.Comment("AllTypes returns a list of all pkg metadata types that syft supports (that are represented in the pkg.Package.Metadata field).")
|
f.Comment("AllTypes returns a list of all pkg metadata types that syft supports (that are represented in the pkg.Package.Metadata field).")
|
||||||
|
|
||||||
@ -1,4 +1,4 @@
|
|||||||
// DO NOT EDIT: generated by syft/internal/packagemetadata/generate/main.go
|
// DO NOT EDIT: generated by internal/packagemetadata/generate/main.go
|
||||||
|
|
||||||
package packagemetadata
|
package packagemetadata
|
||||||
|
|
||||||
@ -4,9 +4,8 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
"github.com/anchore/syft/internal/sourcemetadata"
|
||||||
"github.com/dave/jennifer/jen"
|
"github.com/dave/jennifer/jen"
|
||||||
|
|
||||||
"github.com/anchore/syft/syft/internal/sourcemetadata"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// This program is invoked from syft/internal and generates sourcemetadata/generated.go
|
// This program is invoked from syft/internal and generates sourcemetadata/generated.go
|
||||||
@ -25,7 +24,7 @@ func main() {
|
|||||||
fmt.Printf("updating source metadata type list with %+v types\n", len(typeNames))
|
fmt.Printf("updating source metadata type list with %+v types\n", len(typeNames))
|
||||||
|
|
||||||
f := jen.NewFile("sourcemetadata")
|
f := jen.NewFile("sourcemetadata")
|
||||||
f.HeaderComment("DO NOT EDIT: generated by syft/internal/sourcemetadata/generate/main.go")
|
f.HeaderComment("DO NOT EDIT: generated by internal/sourcemetadata/generate/main.go")
|
||||||
f.ImportName(srcImport, "source")
|
f.ImportName(srcImport, "source")
|
||||||
f.Comment("AllTypes returns a list of all source metadata types that syft supports (that are represented in the source.Description.Metadata field).")
|
f.Comment("AllTypes returns a list of all source metadata types that syft supports (that are represented in the source.Description.Metadata field).")
|
||||||
|
|
||||||
@ -1,4 +1,4 @@
|
|||||||
// DO NOT EDIT: generated by syft/internal/sourcemetadata/generate/main.go
|
// DO NOT EDIT: generated by internal/sourcemetadata/generate/main.go
|
||||||
|
|
||||||
package sourcemetadata
|
package sourcemetadata
|
||||||
|
|
||||||
@ -7,6 +7,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"github.com/anchore/syft/internal/sourcemetadata"
|
||||||
"github.com/google/go-cmp/cmp"
|
"github.com/google/go-cmp/cmp"
|
||||||
"github.com/google/go-cmp/cmp/cmpopts"
|
"github.com/google/go-cmp/cmp/cmpopts"
|
||||||
"github.com/spdx/tools-golang/spdx"
|
"github.com/spdx/tools-golang/spdx"
|
||||||
@ -18,7 +19,6 @@ import (
|
|||||||
"github.com/anchore/syft/syft/artifact"
|
"github.com/anchore/syft/syft/artifact"
|
||||||
"github.com/anchore/syft/syft/file"
|
"github.com/anchore/syft/syft/file"
|
||||||
"github.com/anchore/syft/syft/format/internal/spdxutil/helpers"
|
"github.com/anchore/syft/syft/format/internal/spdxutil/helpers"
|
||||||
"github.com/anchore/syft/syft/internal/sourcemetadata"
|
|
||||||
"github.com/anchore/syft/syft/pkg"
|
"github.com/anchore/syft/syft/pkg"
|
||||||
"github.com/anchore/syft/syft/sbom"
|
"github.com/anchore/syft/syft/sbom"
|
||||||
"github.com/anchore/syft/syft/source"
|
"github.com/anchore/syft/syft/source"
|
||||||
|
|||||||
@ -3,13 +3,13 @@ package model
|
|||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"github.com/anchore/syft/internal/sourcemetadata"
|
||||||
"github.com/google/go-cmp/cmp"
|
"github.com/google/go-cmp/cmp"
|
||||||
"github.com/google/go-cmp/cmp/cmpopts"
|
"github.com/google/go-cmp/cmp/cmpopts"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
|
|
||||||
"github.com/anchore/packageurl-go"
|
"github.com/anchore/packageurl-go"
|
||||||
"github.com/anchore/syft/syft/file"
|
"github.com/anchore/syft/syft/file"
|
||||||
"github.com/anchore/syft/syft/internal/sourcemetadata"
|
|
||||||
"github.com/anchore/syft/syft/linux"
|
"github.com/anchore/syft/syft/linux"
|
||||||
"github.com/anchore/syft/syft/pkg"
|
"github.com/anchore/syft/syft/pkg"
|
||||||
"github.com/anchore/syft/syft/sbom"
|
"github.com/anchore/syft/syft/sbom"
|
||||||
|
|||||||
@ -6,11 +6,11 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/CycloneDX/cyclonedx-go"
|
"github.com/CycloneDX/cyclonedx-go"
|
||||||
|
"github.com/anchore/syft/internal/packagemetadata"
|
||||||
|
|
||||||
"github.com/anchore/packageurl-go"
|
"github.com/anchore/packageurl-go"
|
||||||
"github.com/anchore/syft/syft/file"
|
"github.com/anchore/syft/syft/file"
|
||||||
"github.com/anchore/syft/syft/format/internal"
|
"github.com/anchore/syft/syft/format/internal"
|
||||||
"github.com/anchore/syft/syft/internal/packagemetadata"
|
|
||||||
"github.com/anchore/syft/syft/pkg"
|
"github.com/anchore/syft/syft/pkg"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@ -5,9 +5,9 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"github.com/anchore/syft/internal/sourcemetadata"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
|
|
||||||
"github.com/anchore/syft/syft/internal/sourcemetadata"
|
|
||||||
"github.com/anchore/syft/syft/source"
|
"github.com/anchore/syft/syft/source"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@ -5,9 +5,9 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"github.com/anchore/syft/internal/sourcemetadata"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
|
|
||||||
"github.com/anchore/syft/syft/internal/sourcemetadata"
|
|
||||||
"github.com/anchore/syft/syft/sbom"
|
"github.com/anchore/syft/syft/sbom"
|
||||||
"github.com/anchore/syft/syft/source"
|
"github.com/anchore/syft/syft/source"
|
||||||
)
|
)
|
||||||
|
|||||||
@ -3,9 +3,9 @@ package helpers
|
|||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"github.com/anchore/syft/internal/packagemetadata"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
|
|
||||||
"github.com/anchore/syft/syft/internal/packagemetadata"
|
|
||||||
"github.com/anchore/syft/syft/pkg"
|
"github.com/anchore/syft/syft/pkg"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@ -8,8 +8,8 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/anchore/syft/internal/log"
|
"github.com/anchore/syft/internal/log"
|
||||||
|
"github.com/anchore/syft/internal/packagemetadata"
|
||||||
"github.com/anchore/syft/syft/file"
|
"github.com/anchore/syft/syft/file"
|
||||||
"github.com/anchore/syft/syft/internal/packagemetadata"
|
|
||||||
"github.com/anchore/syft/syft/license"
|
"github.com/anchore/syft/syft/license"
|
||||||
"github.com/anchore/syft/syft/pkg"
|
"github.com/anchore/syft/syft/pkg"
|
||||||
)
|
)
|
||||||
|
|||||||
@ -7,7 +7,7 @@ import (
|
|||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/anchore/syft/syft/internal/sourcemetadata"
|
"github.com/anchore/syft/internal/sourcemetadata"
|
||||||
"github.com/anchore/syft/syft/source"
|
"github.com/anchore/syft/syft/source"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@ -4,12 +4,12 @@ import (
|
|||||||
"encoding/json"
|
"encoding/json"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"github.com/anchore/syft/internal/sourcemetadata"
|
||||||
"github.com/google/go-cmp/cmp"
|
"github.com/google/go-cmp/cmp"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
|
|
||||||
"github.com/anchore/syft/syft/file"
|
"github.com/anchore/syft/syft/file"
|
||||||
"github.com/anchore/syft/syft/internal/sourcemetadata"
|
|
||||||
"github.com/anchore/syft/syft/source"
|
"github.com/anchore/syft/syft/source"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@ -6,10 +6,9 @@ import (
|
|||||||
"path/filepath"
|
"path/filepath"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"github.com/anchore/syft/internal/packagemetadata"
|
||||||
"github.com/iancoleman/strcase"
|
"github.com/iancoleman/strcase"
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
|
|
||||||
"github.com/anchore/syft/syft/internal/packagemetadata"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type schema struct {
|
type schema struct {
|
||||||
|
|||||||
@ -8,12 +8,12 @@ import (
|
|||||||
stereoscopeFile "github.com/anchore/stereoscope/pkg/file"
|
stereoscopeFile "github.com/anchore/stereoscope/pkg/file"
|
||||||
"github.com/anchore/syft/internal"
|
"github.com/anchore/syft/internal"
|
||||||
"github.com/anchore/syft/internal/log"
|
"github.com/anchore/syft/internal/log"
|
||||||
|
"github.com/anchore/syft/internal/packagemetadata"
|
||||||
|
"github.com/anchore/syft/internal/sourcemetadata"
|
||||||
"github.com/anchore/syft/syft/artifact"
|
"github.com/anchore/syft/syft/artifact"
|
||||||
"github.com/anchore/syft/syft/file"
|
"github.com/anchore/syft/syft/file"
|
||||||
formatInternal "github.com/anchore/syft/syft/format/internal"
|
formatInternal "github.com/anchore/syft/syft/format/internal"
|
||||||
"github.com/anchore/syft/syft/format/syftjson/model"
|
"github.com/anchore/syft/syft/format/syftjson/model"
|
||||||
"github.com/anchore/syft/syft/internal/packagemetadata"
|
|
||||||
"github.com/anchore/syft/syft/internal/sourcemetadata"
|
|
||||||
"github.com/anchore/syft/syft/linux"
|
"github.com/anchore/syft/syft/linux"
|
||||||
"github.com/anchore/syft/syft/pkg"
|
"github.com/anchore/syft/syft/pkg"
|
||||||
"github.com/anchore/syft/syft/sbom"
|
"github.com/anchore/syft/syft/sbom"
|
||||||
|
|||||||
@ -4,6 +4,7 @@ import (
|
|||||||
"encoding/json"
|
"encoding/json"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"github.com/anchore/syft/internal/sourcemetadata"
|
||||||
"github.com/google/go-cmp/cmp"
|
"github.com/google/go-cmp/cmp"
|
||||||
"github.com/google/go-cmp/cmp/cmpopts"
|
"github.com/google/go-cmp/cmp/cmpopts"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
@ -12,7 +13,6 @@ import (
|
|||||||
stereoscopeFile "github.com/anchore/stereoscope/pkg/file"
|
stereoscopeFile "github.com/anchore/stereoscope/pkg/file"
|
||||||
"github.com/anchore/syft/syft/file"
|
"github.com/anchore/syft/syft/file"
|
||||||
"github.com/anchore/syft/syft/format/syftjson/model"
|
"github.com/anchore/syft/syft/format/syftjson/model"
|
||||||
"github.com/anchore/syft/syft/internal/sourcemetadata"
|
|
||||||
"github.com/anchore/syft/syft/pkg"
|
"github.com/anchore/syft/syft/pkg"
|
||||||
"github.com/anchore/syft/syft/source"
|
"github.com/anchore/syft/syft/source"
|
||||||
)
|
)
|
||||||
|
|||||||
@ -7,6 +7,7 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"github.com/anchore/syft/internal/sourcemetadata"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
|
|
||||||
@ -14,7 +15,6 @@ import (
|
|||||||
"github.com/anchore/syft/syft/artifact"
|
"github.com/anchore/syft/syft/artifact"
|
||||||
"github.com/anchore/syft/syft/file"
|
"github.com/anchore/syft/syft/file"
|
||||||
"github.com/anchore/syft/syft/format/syftjson/model"
|
"github.com/anchore/syft/syft/format/syftjson/model"
|
||||||
"github.com/anchore/syft/syft/internal/sourcemetadata"
|
|
||||||
"github.com/anchore/syft/syft/pkg"
|
"github.com/anchore/syft/syft/pkg"
|
||||||
"github.com/anchore/syft/syft/sbom"
|
"github.com/anchore/syft/syft/sbom"
|
||||||
"github.com/anchore/syft/syft/source"
|
"github.com/anchore/syft/syft/source"
|
||||||
|
|||||||
@ -3,10 +3,10 @@ package syft
|
|||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"github.com/anchore/syft/internal/sourcemetadata"
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
|
|
||||||
"github.com/anchore/stereoscope/pkg/image"
|
"github.com/anchore/stereoscope/pkg/image"
|
||||||
"github.com/anchore/syft/syft/internal/sourcemetadata"
|
|
||||||
"github.com/anchore/syft/syft/source"
|
"github.com/anchore/syft/syft/source"
|
||||||
"github.com/anchore/syft/syft/source/sourceproviders"
|
"github.com/anchore/syft/syft/source/sourceproviders"
|
||||||
)
|
)
|
||||||
|
|||||||
@ -1 +0,0 @@
|
|||||||
Please see [schema/json/README.md](../../../schema/json/README.md) for more information on the JSON schema files in this directory.
|
|
||||||
@ -3,8 +3,8 @@ package testutil
|
|||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/anchore/syft/syft/internal/packagemetadata"
|
"github.com/anchore/syft/internal/packagemetadata"
|
||||||
"github.com/anchore/syft/syft/internal/sourcemetadata"
|
"github.com/anchore/syft/internal/sourcemetadata"
|
||||||
)
|
)
|
||||||
|
|
||||||
type PackageMetadataCompletionTester struct {
|
type PackageMetadataCompletionTester struct {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user