mirror of
https://github.com/safedep/pmg.git
synced 2026-08-03 07:24:09 +02:00
* follow proper consistent naming in pypi packagemanager * follow proper consistent naming in pypi packagemanager - 2 * feat: add specialized command parsers to handle pip and uv command formats * add uv support & modify extractor to be more robust * add uv alias * refactor var name & add error handling * update readme & add support for `uv pip sync` cmd
44 lines
1.1 KiB
Go
44 lines
1.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 (n *PipExtractor) Extract(lockfilePath, scanDir string) ([]*packagev1.PackageVersion, error) {
|
|
return parseLockfile(lockfilePath, scanDir, n.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())
|
|
}
|