Skip to content

Commit 89c725e

Browse files
committed
feat(library/pylock): add pylock.toml support
1 parent 1a8a32d commit 89c725e

9 files changed

Lines changed: 23 additions & 23 deletions

File tree

.github/workflows/test.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ jobs:
2626
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
2727
with:
2828
repository: vulsio/integration
29-
ref: 6dfd74510f5944e7c973e40d7844020d53dbb3a7
29+
ref: 9b7a17582cd4f4521f71fe64757c7397a47a36c3
3030
path: integration
3131
persist-credentials: false
3232
- name: Set up Go 1.x

GNUmakefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ NOW=$(shell date '+%Y-%m-%dT%H-%M-%S%z')
9191
NOW_JSON_DIR := '${BASE_DIR}/$(NOW)'
9292
ONE_SEC_AFTER=$(shell date -d '+1 second' '+%Y-%m-%dT%H-%M-%S%z')
9393
ONE_SEC_AFTER_JSON_DIR := '${BASE_DIR}/$(ONE_SEC_AFTER)'
94-
LIBS := 'bundler' 'dart' 'elixir' 'pip' 'pipenv' 'poetry-v1' 'poetry-v2' 'uv' 'composer' 'composer-vendor-pear' 'composer-vendor-packagist' 'npm-v1' 'npm-v2' 'npm-v3' 'yarn' 'pnpm' 'pnpm-v9' 'bun' 'cargo' 'gomod' 'gosum' 'gobinary' 'jar' 'jar-wrong-name-log4j-core' 'war' 'pom' 'gradle' 'nuget-lock' 'nuget-config' 'dotnet-deps' 'dotnet-package-props' 'conan-v1' 'conan-v2' 'swift-cocoapods' 'swift-swift' 'rust-binary'
94+
LIBS := 'bundler' 'dart' 'elixir' 'pip' 'pipenv' 'poetry-v1' 'poetry-v2' 'pylock' 'uv' 'composer' 'composer-vendor-pear' 'composer-vendor-packagist' 'npm-v1' 'npm-v2' 'npm-v3' 'yarn' 'pnpm' 'pnpm-v9' 'bun' 'cargo' 'gomod' 'gosum' 'gobinary' 'jar' 'jar-wrong-name-log4j-core' 'war' 'pom' 'gradle' 'nuget-lock' 'nuget-config' 'dotnet-deps' 'dotnet-package-props' 'conan-v1' 'conan-v2' 'swift-cocoapods' 'swift-swift' 'rust-binary'
9595

9696
diff:
9797
# git clone git@github.com:vulsio/vulsctl.git

integration

models/library.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ var FindLockFiles = []string{
6868
// php
6969
ftypes.ComposerLock, ftypes.ComposerInstalledJson,
7070
// python
71-
ftypes.PipRequirements, ftypes.PipfileLock, ftypes.PoetryLock, ftypes.UvLock,
71+
ftypes.PipRequirements, ftypes.PipfileLock, ftypes.PoetryLock, ftypes.PyLockFile, "pylock.*.toml", ftypes.UvLock,
7272
// .net
7373
ftypes.NuGetPkgsLock, ftypes.NuGetPkgsConfig, "*.deps.json", "*Packages.props",
7474
// gomod
@@ -98,7 +98,7 @@ func (s LibraryScanner) GetLibraryKey() string {
9898
return "node"
9999
case ftypes.NuGet, ftypes.DotNetCore:
100100
return ".net"
101-
case ftypes.Pipenv, ftypes.Poetry, ftypes.Uv, ftypes.Pip, ftypes.PythonPkg:
101+
case ftypes.Pip, ftypes.Pipenv, ftypes.Poetry, ftypes.PyLock, ftypes.PythonPkg, ftypes.Uv:
102102
return "python"
103103
case ftypes.Conan:
104104
return "c"

scanner/analyze_golden_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,8 @@ var lockfiles = []lockfileEntry{
4242
{"Pipfile.lock", 0644, false},
4343
{"poetry-v1/poetry.lock", 0644, false},
4444
{"poetry-v2/poetry.lock", 0644, false},
45-
{"uv.lock", 0644, false},
4645
{"pylock.toml", 0644, false},
46+
{"uv.lock", 0644, false},
4747

4848
// Ruby
4949
{"Gemfile.lock", 0644, false},

scanner/base.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -780,10 +780,10 @@ func parseByType(ctx context.Context, pt parserType, filePath string, r xio.Read
780780
return parseLockfile(ctx, ftypes.Pipenv, filePath, r, pipenv.NewParser())
781781
case parserPoetry:
782782
return parseLockfile(ctx, ftypes.Poetry, filePath, r, poetry.NewParser())
783-
case parserUv:
784-
return parseLockfile(ctx, ftypes.Uv, filePath, r, uv.NewParser())
785783
case parserPylock:
786784
return parseLockfile(ctx, ftypes.PyLock, filePath, r, pylock.NewParser())
785+
case parserUv:
786+
return parseLockfile(ctx, ftypes.Uv, filePath, r, uv.NewParser())
787787

788788
// Ruby
789789
case parserBundler:

scanner/dispatch.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ const (
2222
parserPip parserType = "pip"
2323
parserPipenv parserType = "pipenv"
2424
parserPoetry parserType = "poetry"
25-
parserUv parserType = "uv"
2625
parserPylock parserType = "pylock"
26+
parserUv parserType = "uv"
2727
parserBundler parserType = "bundler"
2828
parserCargo parserType = "cargo"
2929
parserComposer parserType = "composer"
@@ -75,10 +75,10 @@ func detectParserType(filePath string, filemode os.FileMode) parserType {
7575
return parserPipenv
7676
case ftypes.PoetryLock: // poetry.lock
7777
return parserPoetry
78-
case ftypes.UvLock: // uv.lock
79-
return parserUv
8078
case ftypes.PyLockFile: // pylock.toml
8179
return parserPylock
80+
case ftypes.UvLock: // uv.lock
81+
return parserUv
8282

8383
// Ruby
8484
case ftypes.GemfileLock: // Gemfile.lock

scanner/dispatch_test.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,12 @@ func TestDetectParserType(t *testing.T) {
2929
{"uv.lock", 0644, parserUv},
3030
{"pylock.toml", 0644, parserPylock},
3131
{"app/pylock.toml", 0644, parserPylock},
32-
{"pylock.uv.toml", 0644, parserPylock}, // PEP 751 named variant
33-
{"pylock.dev.toml", 0644, parserPylock}, // PEP 751 named variant
34-
{"pylock..toml", 0644, parserNone}, // empty identifier → invalid
35-
{"pylock.foo.bar.toml", 0644, parserNone}, // identifier with a dot → invalid
36-
{"my-pylock.toml", 0644, parserNone}, // no `pylock.` prefix → invalid
37-
{"pylock.toml.bak", 0644, parserNone}, // wrong suffix → invalid
32+
{"pylock.uv.toml", 0644, parserPylock}, // PEP 751 named variant
33+
{"pylock.dev.toml", 0644, parserPylock}, // PEP 751 named variant
34+
{"pylock..toml", 0644, parserNone}, // empty identifier → invalid
35+
{"pylock.foo.bar.toml", 0644, parserNone}, // identifier with a dot → invalid
36+
{"my-pylock.toml", 0644, parserNone}, // no `pylock.` prefix → invalid
37+
{"pylock.toml.bak", 0644, parserNone}, // wrong suffix → invalid
3838

3939
// === Ruby ===
4040
{"Gemfile.lock", 0644, parserBundler},

scanner/testdata/golden/pylock.toml.json

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,8 @@
5050
},
5151
{
5252
"name": "jinja2",
53-
"version": "3.1.6",
54-
"purl": "pkg:pypi/jinja2@3.1.6"
53+
"version": "3.1.4",
54+
"purl": "pkg:pypi/jinja2@3.1.4"
5555
},
5656
{
5757
"name": "linklint",
@@ -80,8 +80,8 @@
8080
},
8181
{
8282
"name": "requests",
83-
"version": "2.33.1",
84-
"purl": "pkg:pypi/requests@2.33.1"
83+
"version": "2.31.0",
84+
"purl": "pkg:pypi/requests@2.31.0"
8585
},
8686
{
8787
"name": "roman-numerals",
@@ -145,8 +145,8 @@
145145
},
146146
{
147147
"name": "urllib3",
148-
"version": "2.6.3",
149-
"purl": "pkg:pypi/urllib3@2.6.3"
148+
"version": "2.2.1",
149+
"purl": "pkg:pypi/urllib3@2.2.1"
150150
}
151151
]
152152
}

0 commit comments

Comments
 (0)