github.com/noqcks/syft@v0.0.0-20230920222752-a9e2c4e288e5/syft/pkg/metadata.go (about)

     1  package pkg
     2  
     3  import (
     4  	"reflect"
     5  )
     6  
     7  // MetadataType represents the data shape stored within pkg.Package.Metadata.
     8  type MetadataType string
     9  
    10  const (
    11  	// this is the full set of data shapes that can be represented within the pkg.Package.Metadata field
    12  
    13  	UnknownMetadataType                  MetadataType = "UnknownMetadata"
    14  	AlpmMetadataType                     MetadataType = "AlpmMetadata"
    15  	ApkMetadataType                      MetadataType = "ApkMetadata"
    16  	BinaryMetadataType                   MetadataType = "BinaryMetadata"
    17  	CocoapodsMetadataType                MetadataType = "CocoapodsMetadataType"
    18  	ConanLockMetadataType                MetadataType = "ConanLockMetadataType"
    19  	ConanMetadataType                    MetadataType = "ConanMetadataType"
    20  	DartPubMetadataType                  MetadataType = "DartPubMetadata"
    21  	DotnetDepsMetadataType               MetadataType = "DotnetDepsMetadata"
    22  	DotnetPortableExecutableMetadataType MetadataType = "DotnetPortableExecutableMetadata"
    23  	DpkgMetadataType                     MetadataType = "DpkgMetadata"
    24  	GemMetadataType                      MetadataType = "GemMetadata"
    25  	GolangBinMetadataType                MetadataType = "GolangBinMetadata"
    26  	GolangModMetadataType                MetadataType = "GolangModMetadata"
    27  	HackageMetadataType                  MetadataType = "HackageMetadataType"
    28  	JavaMetadataType                     MetadataType = "JavaMetadata"
    29  	KbPackageMetadataType                MetadataType = "KbPackageMetadata"
    30  	LinuxKernelMetadataType              MetadataType = "LinuxKernelMetadata"
    31  	LinuxKernelModuleMetadataType        MetadataType = "LinuxKernelModuleMetadata"
    32  	MixLockMetadataType                  MetadataType = "MixLockMetadataType"
    33  	NixStoreMetadataType                 MetadataType = "NixStoreMetadata"
    34  	NpmPackageJSONMetadataType           MetadataType = "NpmPackageJsonMetadata"
    35  	NpmPackageLockJSONMetadataType       MetadataType = "NpmPackageLockJsonMetadata"
    36  	PhpComposerJSONMetadataType          MetadataType = "PhpComposerJsonMetadata"
    37  	PortageMetadataType                  MetadataType = "PortageMetadata"
    38  	PythonPackageMetadataType            MetadataType = "PythonPackageMetadata"
    39  	PythonPipfileLockMetadataType        MetadataType = "PythonPipfileLockMetadata"
    40  	PythonRequirementsMetadataType       MetadataType = "PythonRequirementsMetadata"
    41  	RebarLockMetadataType                MetadataType = "RebarLockMetadataType"
    42  	RDescriptionFileMetadataType         MetadataType = "RDescriptionFileMetadataType"
    43  	RpmMetadataType                      MetadataType = "RpmMetadata"
    44  	RustCargoPackageMetadataType         MetadataType = "RustCargoPackageMetadata"
    45  	SwiftPackageManagerMetadataType      MetadataType = "SwiftPackageManagerMetadata"
    46  )
    47  
    48  var AllMetadataTypes = []MetadataType{
    49  	AlpmMetadataType,
    50  	ApkMetadataType,
    51  	BinaryMetadataType,
    52  	CocoapodsMetadataType,
    53  	ConanLockMetadataType,
    54  	ConanMetadataType,
    55  	DartPubMetadataType,
    56  	DotnetDepsMetadataType,
    57  	DotnetPortableExecutableMetadataType,
    58  	DpkgMetadataType,
    59  	GemMetadataType,
    60  	GolangBinMetadataType,
    61  	GolangModMetadataType,
    62  	HackageMetadataType,
    63  	JavaMetadataType,
    64  	KbPackageMetadataType,
    65  	LinuxKernelMetadataType,
    66  	LinuxKernelModuleMetadataType,
    67  	MixLockMetadataType,
    68  	NixStoreMetadataType,
    69  	NpmPackageJSONMetadataType,
    70  	NpmPackageLockJSONMetadataType,
    71  	PhpComposerJSONMetadataType,
    72  	PortageMetadataType,
    73  	PythonPackageMetadataType,
    74  	PythonPipfileLockMetadataType,
    75  	PythonRequirementsMetadataType,
    76  	RDescriptionFileMetadataType,
    77  	RebarLockMetadataType,
    78  	RpmMetadataType,
    79  	RustCargoPackageMetadataType,
    80  	SwiftPackageManagerMetadataType,
    81  }
    82  
    83  var MetadataTypeByName = map[MetadataType]reflect.Type{
    84  	AlpmMetadataType:                     reflect.TypeOf(AlpmMetadata{}),
    85  	ApkMetadataType:                      reflect.TypeOf(ApkMetadata{}),
    86  	BinaryMetadataType:                   reflect.TypeOf(BinaryMetadata{}),
    87  	CocoapodsMetadataType:                reflect.TypeOf(CocoapodsMetadata{}),
    88  	ConanLockMetadataType:                reflect.TypeOf(ConanLockMetadata{}),
    89  	ConanMetadataType:                    reflect.TypeOf(ConanMetadata{}),
    90  	DartPubMetadataType:                  reflect.TypeOf(DartPubMetadata{}),
    91  	DotnetDepsMetadataType:               reflect.TypeOf(DotnetDepsMetadata{}),
    92  	DotnetPortableExecutableMetadataType: reflect.TypeOf(DotnetPortableExecutableMetadata{}),
    93  	DpkgMetadataType:                     reflect.TypeOf(DpkgMetadata{}),
    94  	GemMetadataType:                      reflect.TypeOf(GemMetadata{}),
    95  	GolangBinMetadataType:                reflect.TypeOf(GolangBinMetadata{}),
    96  	GolangModMetadataType:                reflect.TypeOf(GolangModMetadata{}),
    97  	HackageMetadataType:                  reflect.TypeOf(HackageMetadata{}),
    98  	JavaMetadataType:                     reflect.TypeOf(JavaMetadata{}),
    99  	KbPackageMetadataType:                reflect.TypeOf(KbPackageMetadata{}),
   100  	LinuxKernelMetadataType:              reflect.TypeOf(LinuxKernelMetadata{}),
   101  	LinuxKernelModuleMetadataType:        reflect.TypeOf(LinuxKernelModuleMetadata{}),
   102  	MixLockMetadataType:                  reflect.TypeOf(MixLockMetadata{}),
   103  	NixStoreMetadataType:                 reflect.TypeOf(NixStoreMetadata{}),
   104  	NpmPackageJSONMetadataType:           reflect.TypeOf(NpmPackageJSONMetadata{}),
   105  	NpmPackageLockJSONMetadataType:       reflect.TypeOf(NpmPackageLockJSONMetadata{}),
   106  	PhpComposerJSONMetadataType:          reflect.TypeOf(PhpComposerJSONMetadata{}),
   107  	PortageMetadataType:                  reflect.TypeOf(PortageMetadata{}),
   108  	PythonPackageMetadataType:            reflect.TypeOf(PythonPackageMetadata{}),
   109  	PythonPipfileLockMetadataType:        reflect.TypeOf(PythonPipfileLockMetadata{}),
   110  	PythonRequirementsMetadataType:       reflect.TypeOf(PythonRequirementsMetadata{}),
   111  	RDescriptionFileMetadataType:         reflect.TypeOf(RDescriptionFileMetadata{}),
   112  	RebarLockMetadataType:                reflect.TypeOf(RebarLockMetadata{}),
   113  	RpmMetadataType:                      reflect.TypeOf(RpmMetadata{}),
   114  	RustCargoPackageMetadataType:         reflect.TypeOf(CargoPackageMetadata{}),
   115  	SwiftPackageManagerMetadataType:      reflect.TypeOf(SwiftPackageManagerMetadata{}),
   116  }
   117  
   118  func CleanMetadataType(typ MetadataType) MetadataType {
   119  	if typ == "RpmdbMetadata" {
   120  		return RpmMetadataType
   121  	}
   122  	if typ == "GolangMetadata" {
   123  		return GolangBinMetadataType
   124  	}
   125  	return typ
   126  }