mirror of
https://github.com/safedep/pmg.git
synced 2026-08-03 07:24:09 +02:00
82 lines
2.1 KiB
Go
82 lines
2.1 KiB
Go
package extractor
|
|
|
|
import (
|
|
packagev1 "buf.build/gen/go/safedep/api/protocolbuffers/go/safedep/messages/package/v1"
|
|
)
|
|
|
|
// PipExtractor handles requirements.txt files
|
|
type PipExtractor struct{}
|
|
|
|
func (p *PipExtractor) GetSupportedFiles() []string {
|
|
return []string{"requirements.txt"}
|
|
}
|
|
|
|
func (p *PipExtractor) GetEcosystem() packagev1.Ecosystem {
|
|
return packagev1.Ecosystem_ECOSYSTEM_PYPI
|
|
}
|
|
|
|
func (p *PipExtractor) GetPackageManager() PackageManagerName {
|
|
return Pip
|
|
}
|
|
|
|
func (p *PipExtractor) Extract(lockfilePath, scanDir string) ([]*packagev1.PackageVersion, error) {
|
|
return parseLockfile(lockfilePath, scanDir, p.GetEcosystem())
|
|
}
|
|
|
|
// UvExtractor handles uv.lock files
|
|
type UvExtractor struct{}
|
|
|
|
func (u *UvExtractor) GetSupportedFiles() []string {
|
|
return []string{"uv.lock"}
|
|
}
|
|
|
|
func (u *UvExtractor) GetEcosystem() packagev1.Ecosystem {
|
|
return packagev1.Ecosystem_ECOSYSTEM_PYPI
|
|
}
|
|
|
|
func (u *UvExtractor) GetPackageManager() PackageManagerName {
|
|
return Uv
|
|
}
|
|
|
|
func (u *UvExtractor) Extract(lockfilePath, scanDir string) ([]*packagev1.PackageVersion, error) {
|
|
return parseLockfile(lockfilePath, scanDir, u.GetEcosystem())
|
|
}
|
|
|
|
// PoetryExtractor handles poetry.lock files
|
|
type PoetryExtractor struct{}
|
|
|
|
func (p *PoetryExtractor) GetSupportedFiles() []string {
|
|
return []string{"poetry.lock"}
|
|
}
|
|
|
|
func (p *PoetryExtractor) GetEcosystem() packagev1.Ecosystem {
|
|
return packagev1.Ecosystem_ECOSYSTEM_PYPI
|
|
}
|
|
|
|
func (p *PoetryExtractor) GetPackageManager() PackageManagerName {
|
|
return Poetry
|
|
}
|
|
|
|
func (p *PoetryExtractor) Extract(lockfilePath, scanDir string) ([]*packagev1.PackageVersion, error) {
|
|
return parseLockfile(lockfilePath, scanDir, p.GetEcosystem())
|
|
}
|
|
|
|
// Pip3Extractor handles requirements.txt files
|
|
type Pip3Extractor struct{}
|
|
|
|
func (p *Pip3Extractor) GetSupportedFiles() []string {
|
|
return []string{"requirements.txt"}
|
|
}
|
|
|
|
func (p *Pip3Extractor) GetEcosystem() packagev1.Ecosystem {
|
|
return packagev1.Ecosystem_ECOSYSTEM_PYPI
|
|
}
|
|
|
|
func (p *Pip3Extractor) GetPackageManager() PackageManagerName {
|
|
return Pip3
|
|
}
|
|
|
|
func (p *Pip3Extractor) Extract(lockfilePath, scanDir string) ([]*packagev1.PackageVersion, error) {
|
|
return parseLockfile(lockfilePath, scanDir, p.GetEcosystem())
|
|
}
|