diff --git a/Taskfile.yaml b/Taskfile.yaml index 500f1795b..7fb020ab5 100644 --- a/Taskfile.yaml +++ b/Taskfile.yaml @@ -502,7 +502,7 @@ tasks: generate-json-schema: desc: Generate a new JSON schema 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: desc: Generate an updated license processing code off of the latest available SPDX license list diff --git a/syft/internal/generate.go b/internal/generate.go similarity index 100% rename from syft/internal/generate.go rename to internal/generate.go diff --git a/internal/jsonschema/README.md b/internal/jsonschema/README.md new file mode 100644 index 000000000..73a6aa4e5 --- /dev/null +++ b/internal/jsonschema/README.md @@ -0,0 +1 @@ +Please see [schema/json/README.md](../../schema/json/README.md) for more information on the JSON schema files in this directory. \ No newline at end of file diff --git a/syft/internal/jsonschema/comments.go b/internal/jsonschema/comments.go similarity index 100% rename from syft/internal/jsonschema/comments.go rename to internal/jsonschema/comments.go diff --git a/syft/internal/jsonschema/comments_test.go b/internal/jsonschema/comments_test.go similarity index 100% rename from syft/internal/jsonschema/comments_test.go rename to internal/jsonschema/comments_test.go diff --git a/syft/internal/jsonschema/main.go b/internal/jsonschema/main.go similarity index 88% rename from syft/internal/jsonschema/main.go rename to internal/jsonschema/main.go index 6ba80cf0c..9f3f19d35 100644 --- a/syft/internal/jsonschema/main.go +++ b/internal/jsonschema/main.go @@ -15,8 +15,8 @@ import ( "github.com/invopop/jsonschema" "github.com/anchore/syft/internal" + "github.com/anchore/syft/internal/packagemetadata" 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. */ +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() { write(encode(build())) } @@ -60,7 +71,7 @@ func assembleTypeContainer(items []any) (any, map[string]string) { } 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 { 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", // 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. - 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) } else { // 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) for k, v := range reflector.CommentMap { newKey := k if !strings.HasPrefix(k, "github.com/") { + // key doesn't have module prefix, add it 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 } reflector.CommentMap = fixedMap // copy field comments for type aliases (e.g., type RpmArchive RpmDBEntry) - repoRoot, err := packagemetadata.RepoRoot() - if err == nil { - copyAliasFieldComments(reflector.CommentMap, repoRoot) - } + copyAliasFieldComments(reflector.CommentMap, repoRoot) } pkgMetadataContainer, pkgMetadataMapping := assembleTypeContainer(packagemetadata.AllTypes()) @@ -178,11 +194,6 @@ func encode(schema *jsonschema.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)) latestSchemaPath := filepath.Join(repoRoot, "schema", "json", "schema-latest.json") diff --git a/syft/internal/packagemetadata/completion_tester.go b/internal/packagemetadata/completion_tester.go similarity index 100% rename from syft/internal/packagemetadata/completion_tester.go rename to internal/packagemetadata/completion_tester.go diff --git a/syft/internal/packagemetadata/discover_type_names.go b/internal/packagemetadata/discover_type_names.go similarity index 100% rename from syft/internal/packagemetadata/discover_type_names.go rename to internal/packagemetadata/discover_type_names.go diff --git a/syft/internal/packagemetadata/discover_type_names_test.go b/internal/packagemetadata/discover_type_names_test.go similarity index 100% rename from syft/internal/packagemetadata/discover_type_names_test.go rename to internal/packagemetadata/discover_type_names_test.go diff --git a/syft/internal/packagemetadata/generate/main.go b/internal/packagemetadata/generate/main.go similarity index 91% rename from syft/internal/packagemetadata/generate/main.go rename to internal/packagemetadata/generate/main.go index e9dc1791c..88339abff 100644 --- a/syft/internal/packagemetadata/generate/main.go +++ b/internal/packagemetadata/generate/main.go @@ -5,9 +5,8 @@ import ( "os" "strings" + "github.com/anchore/syft/internal/packagemetadata" "github.com/dave/jennifer/jen" - - "github.com/anchore/syft/syft/internal/packagemetadata" ) // 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)) 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.Comment("AllTypes returns a list of all pkg metadata types that syft supports (that are represented in the pkg.Package.Metadata field).") diff --git a/syft/internal/packagemetadata/generated.go b/internal/packagemetadata/generated.go similarity index 96% rename from syft/internal/packagemetadata/generated.go rename to internal/packagemetadata/generated.go index f04ea2720..2315352dc 100644 --- a/syft/internal/packagemetadata/generated.go +++ b/internal/packagemetadata/generated.go @@ -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 diff --git a/syft/internal/packagemetadata/names.go b/internal/packagemetadata/names.go similarity index 100% rename from syft/internal/packagemetadata/names.go rename to internal/packagemetadata/names.go diff --git a/syft/internal/packagemetadata/names_test.go b/internal/packagemetadata/names_test.go similarity index 100% rename from syft/internal/packagemetadata/names_test.go rename to internal/packagemetadata/names_test.go diff --git a/syft/internal/sourcemetadata/completion_tester.go b/internal/sourcemetadata/completion_tester.go similarity index 100% rename from syft/internal/sourcemetadata/completion_tester.go rename to internal/sourcemetadata/completion_tester.go diff --git a/syft/internal/sourcemetadata/discover_type_names.go b/internal/sourcemetadata/discover_type_names.go similarity index 100% rename from syft/internal/sourcemetadata/discover_type_names.go rename to internal/sourcemetadata/discover_type_names.go diff --git a/syft/internal/sourcemetadata/generate/main.go b/internal/sourcemetadata/generate/main.go similarity index 90% rename from syft/internal/sourcemetadata/generate/main.go rename to internal/sourcemetadata/generate/main.go index ea40960a0..a56bfc832 100644 --- a/syft/internal/sourcemetadata/generate/main.go +++ b/internal/sourcemetadata/generate/main.go @@ -4,9 +4,8 @@ import ( "fmt" "os" + "github.com/anchore/syft/internal/sourcemetadata" "github.com/dave/jennifer/jen" - - "github.com/anchore/syft/syft/internal/sourcemetadata" ) // 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)) 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.Comment("AllTypes returns a list of all source metadata types that syft supports (that are represented in the source.Description.Metadata field).") diff --git a/syft/internal/sourcemetadata/generated.go b/internal/sourcemetadata/generated.go similarity index 82% rename from syft/internal/sourcemetadata/generated.go rename to internal/sourcemetadata/generated.go index ffcd9c882..2cfbb6e87 100644 --- a/syft/internal/sourcemetadata/generated.go +++ b/internal/sourcemetadata/generated.go @@ -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 diff --git a/syft/internal/sourcemetadata/names.go b/internal/sourcemetadata/names.go similarity index 100% rename from syft/internal/sourcemetadata/names.go rename to internal/sourcemetadata/names.go diff --git a/syft/internal/sourcemetadata/names_test.go b/internal/sourcemetadata/names_test.go similarity index 100% rename from syft/internal/sourcemetadata/names_test.go rename to internal/sourcemetadata/names_test.go diff --git a/syft/format/common/spdxhelpers/to_format_model_test.go b/syft/format/common/spdxhelpers/to_format_model_test.go index e89ab93de..ae4bc9e7b 100644 --- a/syft/format/common/spdxhelpers/to_format_model_test.go +++ b/syft/format/common/spdxhelpers/to_format_model_test.go @@ -7,6 +7,7 @@ import ( "strings" "testing" + "github.com/anchore/syft/internal/sourcemetadata" "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" "github.com/spdx/tools-golang/spdx" @@ -18,7 +19,6 @@ import ( "github.com/anchore/syft/syft/artifact" "github.com/anchore/syft/syft/file" "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/sbom" "github.com/anchore/syft/syft/source" diff --git a/syft/format/github/internal/model/model_test.go b/syft/format/github/internal/model/model_test.go index 4d0c2dcce..de6f30a6d 100644 --- a/syft/format/github/internal/model/model_test.go +++ b/syft/format/github/internal/model/model_test.go @@ -3,13 +3,13 @@ package model import ( "testing" + "github.com/anchore/syft/internal/sourcemetadata" "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" "github.com/stretchr/testify/assert" "github.com/anchore/packageurl-go" "github.com/anchore/syft/syft/file" - "github.com/anchore/syft/syft/internal/sourcemetadata" "github.com/anchore/syft/syft/linux" "github.com/anchore/syft/syft/pkg" "github.com/anchore/syft/syft/sbom" diff --git a/syft/format/internal/cyclonedxutil/helpers/component.go b/syft/format/internal/cyclonedxutil/helpers/component.go index 486128321..e0e9ab774 100644 --- a/syft/format/internal/cyclonedxutil/helpers/component.go +++ b/syft/format/internal/cyclonedxutil/helpers/component.go @@ -6,11 +6,11 @@ import ( "strings" "github.com/CycloneDX/cyclonedx-go" + "github.com/anchore/syft/internal/packagemetadata" "github.com/anchore/packageurl-go" "github.com/anchore/syft/syft/file" "github.com/anchore/syft/syft/format/internal" - "github.com/anchore/syft/syft/internal/packagemetadata" "github.com/anchore/syft/syft/pkg" ) diff --git a/syft/format/internal/spdxutil/helpers/document_name_test.go b/syft/format/internal/spdxutil/helpers/document_name_test.go index 1d73ecf38..cd6f5b4f7 100644 --- a/syft/format/internal/spdxutil/helpers/document_name_test.go +++ b/syft/format/internal/spdxutil/helpers/document_name_test.go @@ -5,9 +5,9 @@ import ( "strings" "testing" + "github.com/anchore/syft/internal/sourcemetadata" "github.com/stretchr/testify/assert" - "github.com/anchore/syft/syft/internal/sourcemetadata" "github.com/anchore/syft/syft/source" ) diff --git a/syft/format/internal/spdxutil/helpers/document_namespace_test.go b/syft/format/internal/spdxutil/helpers/document_namespace_test.go index 3deeb807a..c39723ae3 100644 --- a/syft/format/internal/spdxutil/helpers/document_namespace_test.go +++ b/syft/format/internal/spdxutil/helpers/document_namespace_test.go @@ -5,9 +5,9 @@ import ( "strings" "testing" + "github.com/anchore/syft/internal/sourcemetadata" "github.com/stretchr/testify/assert" - "github.com/anchore/syft/syft/internal/sourcemetadata" "github.com/anchore/syft/syft/sbom" "github.com/anchore/syft/syft/source" ) diff --git a/syft/format/internal/spdxutil/helpers/originator_supplier_test.go b/syft/format/internal/spdxutil/helpers/originator_supplier_test.go index b2ab258a4..b7ee3d6f7 100644 --- a/syft/format/internal/spdxutil/helpers/originator_supplier_test.go +++ b/syft/format/internal/spdxutil/helpers/originator_supplier_test.go @@ -3,9 +3,9 @@ package helpers import ( "testing" + "github.com/anchore/syft/internal/packagemetadata" "github.com/stretchr/testify/assert" - "github.com/anchore/syft/syft/internal/packagemetadata" "github.com/anchore/syft/syft/pkg" ) diff --git a/syft/format/syftjson/model/package.go b/syft/format/syftjson/model/package.go index c87ef6c62..420376e29 100644 --- a/syft/format/syftjson/model/package.go +++ b/syft/format/syftjson/model/package.go @@ -8,8 +8,8 @@ import ( "strings" "github.com/anchore/syft/internal/log" + "github.com/anchore/syft/internal/packagemetadata" "github.com/anchore/syft/syft/file" - "github.com/anchore/syft/syft/internal/packagemetadata" "github.com/anchore/syft/syft/license" "github.com/anchore/syft/syft/pkg" ) diff --git a/syft/format/syftjson/model/source.go b/syft/format/syftjson/model/source.go index 12ccdceed..750e31956 100644 --- a/syft/format/syftjson/model/source.go +++ b/syft/format/syftjson/model/source.go @@ -7,7 +7,7 @@ import ( "strconv" "strings" - "github.com/anchore/syft/syft/internal/sourcemetadata" + "github.com/anchore/syft/internal/sourcemetadata" "github.com/anchore/syft/syft/source" ) diff --git a/syft/format/syftjson/model/source_test.go b/syft/format/syftjson/model/source_test.go index bd2b7034f..ec45166a7 100644 --- a/syft/format/syftjson/model/source_test.go +++ b/syft/format/syftjson/model/source_test.go @@ -4,12 +4,12 @@ import ( "encoding/json" "testing" + "github.com/anchore/syft/internal/sourcemetadata" "github.com/google/go-cmp/cmp" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/anchore/syft/syft/file" - "github.com/anchore/syft/syft/internal/sourcemetadata" "github.com/anchore/syft/syft/source" ) diff --git a/syft/format/syftjson/schema_test.go b/syft/format/syftjson/schema_test.go index b38c98ce3..fafbc9c20 100644 --- a/syft/format/syftjson/schema_test.go +++ b/syft/format/syftjson/schema_test.go @@ -6,10 +6,9 @@ import ( "path/filepath" "testing" + "github.com/anchore/syft/internal/packagemetadata" "github.com/iancoleman/strcase" "github.com/stretchr/testify/require" - - "github.com/anchore/syft/syft/internal/packagemetadata" ) type schema struct { diff --git a/syft/format/syftjson/to_format_model.go b/syft/format/syftjson/to_format_model.go index 782597345..fa205c5b6 100644 --- a/syft/format/syftjson/to_format_model.go +++ b/syft/format/syftjson/to_format_model.go @@ -8,12 +8,12 @@ import ( stereoscopeFile "github.com/anchore/stereoscope/pkg/file" "github.com/anchore/syft/internal" "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/file" formatInternal "github.com/anchore/syft/syft/format/internal" "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/pkg" "github.com/anchore/syft/syft/sbom" diff --git a/syft/format/syftjson/to_format_model_test.go b/syft/format/syftjson/to_format_model_test.go index 3987b0ea5..83f8f526b 100644 --- a/syft/format/syftjson/to_format_model_test.go +++ b/syft/format/syftjson/to_format_model_test.go @@ -4,6 +4,7 @@ import ( "encoding/json" "testing" + "github.com/anchore/syft/internal/sourcemetadata" "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" "github.com/stretchr/testify/assert" @@ -12,7 +13,6 @@ import ( stereoscopeFile "github.com/anchore/stereoscope/pkg/file" "github.com/anchore/syft/syft/file" "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/source" ) diff --git a/syft/format/syftjson/to_syft_model_test.go b/syft/format/syftjson/to_syft_model_test.go index 3aed50c0d..dfba66d5d 100644 --- a/syft/format/syftjson/to_syft_model_test.go +++ b/syft/format/syftjson/to_syft_model_test.go @@ -7,6 +7,7 @@ import ( "os" "testing" + "github.com/anchore/syft/internal/sourcemetadata" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -14,7 +15,6 @@ import ( "github.com/anchore/syft/syft/artifact" "github.com/anchore/syft/syft/file" "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/sbom" "github.com/anchore/syft/syft/source" diff --git a/syft/get_source_test.go b/syft/get_source_test.go index dcef0edcc..a5b17e899 100644 --- a/syft/get_source_test.go +++ b/syft/get_source_test.go @@ -3,10 +3,10 @@ package syft import ( "testing" + "github.com/anchore/syft/internal/sourcemetadata" "github.com/stretchr/testify/require" "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/sourceproviders" ) diff --git a/syft/internal/jsonschema/README.md b/syft/internal/jsonschema/README.md deleted file mode 100644 index dc7b76c91..000000000 --- a/syft/internal/jsonschema/README.md +++ /dev/null @@ -1 +0,0 @@ -Please see [schema/json/README.md](../../../schema/json/README.md) for more information on the JSON schema files in this directory. \ No newline at end of file diff --git a/syft/testutil/completion_testing.go b/syft/testutil/completion_testing.go index 6b9ec11c6..94ab75012 100644 --- a/syft/testutil/completion_testing.go +++ b/syft/testutil/completion_testing.go @@ -3,8 +3,8 @@ package testutil import ( "testing" - "github.com/anchore/syft/syft/internal/packagemetadata" - "github.com/anchore/syft/syft/internal/sourcemetadata" + "github.com/anchore/syft/internal/packagemetadata" + "github.com/anchore/syft/internal/sourcemetadata" ) type PackageMetadataCompletionTester struct {