github.com/google/osv-scalibr@v0.4.1/binary/proto/package_metadata.go (about) 1 // Copyright 2025 Google LLC 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 package proto 16 17 import ( 18 "reflect" 19 20 "github.com/google/osv-scalibr/extractor/filesystem/language/dotnet/depsjson" 21 javascriptmeta "github.com/google/osv-scalibr/extractor/filesystem/language/javascript/packagejson/metadata" 22 "github.com/google/osv-scalibr/extractor/filesystem/language/python/wheelegg" 23 apkmeta "github.com/google/osv-scalibr/extractor/filesystem/os/apk/metadata" 24 cosmeta "github.com/google/osv-scalibr/extractor/filesystem/os/cos/metadata" 25 dpkgmeta "github.com/google/osv-scalibr/extractor/filesystem/os/dpkg/metadata" 26 flatpakmeta "github.com/google/osv-scalibr/extractor/filesystem/os/flatpak/metadata" 27 "github.com/google/osv-scalibr/extractor/filesystem/os/macapps" 28 macportsmeta "github.com/google/osv-scalibr/extractor/filesystem/os/macports/metadata" 29 nixmeta "github.com/google/osv-scalibr/extractor/filesystem/os/nix/metadata" 30 pacmanmeta "github.com/google/osv-scalibr/extractor/filesystem/os/pacman/metadata" 31 portagemeta "github.com/google/osv-scalibr/extractor/filesystem/os/portage/metadata" 32 rpmmeta "github.com/google/osv-scalibr/extractor/filesystem/os/rpm/metadata" 33 snapmeta "github.com/google/osv-scalibr/extractor/filesystem/os/snap/metadata" 34 wingetmeta "github.com/google/osv-scalibr/extractor/filesystem/os/winget/metadata" 35 asdfmeta "github.com/google/osv-scalibr/extractor/filesystem/runtime/asdf/metadata" 36 nodeversionmeta "github.com/google/osv-scalibr/extractor/filesystem/runtime/nodejs/nodeversion/metadata" 37 nvmmeta "github.com/google/osv-scalibr/extractor/filesystem/runtime/nodejs/nvm/metadata" 38 "github.com/google/osv-scalibr/extractor/standalone/os/netports" 39 40 spb "github.com/google/osv-scalibr/binary/proto/scan_result_go_proto" 41 ) 42 43 var ( 44 metadataTypeToStructConverter = map[reflect.Type]func(*spb.Package) any{ 45 reflect.TypeFor[*spb.Package_PythonMetadata](): func(p *spb.Package) any { 46 return wheelegg.ToStruct(p.GetPythonMetadata()) 47 }, 48 reflect.TypeFor[*spb.Package_JavascriptMetadata](): func(p *spb.Package) any { 49 return javascriptmeta.ToStruct(p.GetJavascriptMetadata()) 50 }, 51 reflect.TypeFor[*spb.Package_DepsjsonMetadata](): func(p *spb.Package) any { 52 return depsjson.ToStruct(p.GetDepsjsonMetadata()) 53 }, 54 reflect.TypeFor[*spb.Package_NetportsMetadata](): func(p *spb.Package) any { 55 return netports.ToStruct(p.GetNetportsMetadata()) 56 }, 57 reflect.TypeFor[*spb.Package_ApkMetadata](): func(p *spb.Package) any { 58 return apkmeta.ToStruct(p.GetApkMetadata()) 59 }, 60 reflect.TypeFor[*spb.Package_DpkgMetadata](): func(p *spb.Package) any { 61 return dpkgmeta.ToStruct(p.GetDpkgMetadata()) 62 }, 63 reflect.TypeFor[*spb.Package_SnapMetadata](): func(p *spb.Package) any { 64 return snapmeta.ToStruct(p.GetSnapMetadata()) 65 }, 66 reflect.TypeFor[*spb.Package_RpmMetadata](): func(p *spb.Package) any { 67 return rpmmeta.ToStruct(p.GetRpmMetadata()) 68 }, 69 reflect.TypeFor[*spb.Package_CosMetadata](): func(p *spb.Package) any { 70 return cosmeta.ToStruct(p.GetCosMetadata()) 71 }, 72 reflect.TypeFor[*spb.Package_PacmanMetadata](): func(p *spb.Package) any { 73 return pacmanmeta.ToStruct(p.GetPacmanMetadata()) 74 }, 75 reflect.TypeFor[*spb.Package_PortageMetadata](): func(p *spb.Package) any { 76 return portagemeta.ToStruct(p.GetPortageMetadata()) 77 }, 78 reflect.TypeFor[*spb.Package_FlatpakMetadata](): func(p *spb.Package) any { 79 return flatpakmeta.ToStruct(p.GetFlatpakMetadata()) 80 }, 81 reflect.TypeFor[*spb.Package_NixMetadata](): func(p *spb.Package) any { 82 return nixmeta.ToStruct(p.GetNixMetadata()) 83 }, 84 reflect.TypeFor[*spb.Package_MacAppsMetadata](): func(p *spb.Package) any { 85 return macapps.ToStruct(p.GetMacAppsMetadata()) 86 }, 87 reflect.TypeFor[*spb.Package_AsdfMetadata](): func(p *spb.Package) any { 88 return asdfmeta.ToStruct(p.GetAsdfMetadata()) 89 }, 90 reflect.TypeFor[*spb.Package_NvmMetadata](): func(p *spb.Package) any { 91 return nvmmeta.ToStruct(p.GetNvmMetadata()) 92 }, 93 reflect.TypeFor[*spb.NodeVersionMetadata](): func(p *spb.Package) any { 94 return nodeversionmeta.ToStruct(p.GetNodeversionMetadata()) 95 }, 96 reflect.TypeFor[*spb.Package_MacportsMetadata](): func(p *spb.Package) any { 97 return macportsmeta.ToStruct(p.GetMacportsMetadata()) 98 }, 99 reflect.TypeFor[*spb.Package_WingetMetadata](): func(p *spb.Package) any { 100 return wingetmeta.ToStruct(p.GetWingetMetadata()) 101 }, 102 } 103 104 _ = []MetadataProtoSetter{ 105 (*wheelegg.PythonPackageMetadata)(nil), 106 (*javascriptmeta.JavascriptPackageJSONMetadata)(nil), 107 (*depsjson.Metadata)(nil), 108 (*netports.Metadata)(nil), 109 (*apkmeta.Metadata)(nil), 110 (*dpkgmeta.Metadata)(nil), 111 (*snapmeta.Metadata)(nil), 112 (*rpmmeta.Metadata)(nil), 113 (*cosmeta.Metadata)(nil), 114 (*pacmanmeta.Metadata)(nil), 115 (*portagemeta.Metadata)(nil), 116 (*flatpakmeta.Metadata)(nil), 117 (*nixmeta.Metadata)(nil), 118 (*macapps.Metadata)(nil), 119 (*asdfmeta.Metadata)(nil), 120 (*nvmmeta.Metadata)(nil), 121 (*nodeversionmeta.Metadata)(nil), 122 (*macportsmeta.Metadata)(nil), 123 (*wingetmeta.Metadata)(nil), 124 } 125 )