pysentry-rs 0.1.0__tar.gz → 0.1.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of pysentry-rs might be problematic. Click here for more details.
- pysentry_rs-0.1.4/.github/dependabot.yml +27 -0
- pysentry_rs-0.1.4/.github/workflows/ci.yml +288 -0
- pysentry_rs-0.1.4/.github/workflows/release.yml +233 -0
- {pysentry_rs-0.1.0 → pysentry_rs-0.1.4}/Cargo.lock +199 -240
- {pysentry_rs-0.1.0 → pysentry_rs-0.1.4}/Cargo.toml +4 -3
- {pysentry_rs-0.1.0 → pysentry_rs-0.1.4}/PKG-INFO +89 -10
- {pysentry_rs-0.1.0 → pysentry_rs-0.1.4}/README.md +87 -9
- pysentry_rs-0.1.4/fixtures/requirements-tests/requirements-dev.txt +5 -0
- pysentry_rs-0.1.4/fixtures/requirements-tests/requirements.txt +12 -0
- pysentry_rs-0.1.4/fixtures/requirements-tests-vulnerable/requirements.txt +5 -0
- {pysentry_rs-0.1.0 → pysentry_rs-0.1.4}/pyproject.toml +4 -3
- pysentry_rs-0.1.4/python/pysentry/__init__.py +161 -0
- pysentry_rs-0.1.4/python/pysentry/__main__.py +6 -0
- {pysentry_rs-0.1.0 → pysentry_rs-0.1.4}/src/dependency/mod.rs +1 -0
- pysentry_rs-0.1.4/src/dependency/resolvers/mod.rs +157 -0
- pysentry_rs-0.1.4/src/dependency/resolvers/pip_tools.rs +257 -0
- pysentry_rs-0.1.4/src/dependency/resolvers/uv.rs +234 -0
- {pysentry_rs-0.1.0 → pysentry_rs-0.1.4}/src/dependency/scanner.rs +15 -0
- {pysentry_rs-0.1.0 → pysentry_rs-0.1.4}/src/error.rs +32 -0
- pysentry_rs-0.1.4/src/main.rs +708 -0
- {pysentry_rs-0.1.0 → pysentry_rs-0.1.4}/src/parsers/mod.rs +16 -0
- {pysentry_rs-0.1.0 → pysentry_rs-0.1.4}/src/parsers/pyproject.rs +1 -1
- pysentry_rs-0.1.4/src/parsers/requirements.rs +496 -0
- pysentry_rs-0.1.4/src/python.rs +443 -0
- {pysentry_rs-0.1.0 → pysentry_rs-0.1.4}/src/vulnerability/database.rs +2 -2
- pysentry_rs-0.1.0/CLAUDE.md +0 -145
- pysentry_rs-0.1.0/PUBLISHING.md +0 -367
- pysentry_rs-0.1.0/python/pysentry-rs/__init__.py +0 -46
- pysentry_rs-0.1.0/python/pysentry-rs/__main__.py +0 -6
- pysentry_rs-0.1.0/src/main.rs +0 -346
- pysentry_rs-0.1.0/src/python.rs +0 -110
- pysentry_rs-0.1.0/test-project/pyproject.toml +0 -74
- pysentry_rs-0.1.0/test-project/uv.lock +0 -14350
- {pysentry_rs-0.1.0 → pysentry_rs-0.1.4}/.gitignore +0 -0
- {pysentry_rs-0.1.0 → pysentry_rs-0.1.4}/LICENSE +0 -0
- {pysentry_rs-0.1.0 → pysentry_rs-0.1.4}/src/cache/audit.rs +0 -0
- {pysentry_rs-0.1.0 → pysentry_rs-0.1.4}/src/cache/mod.rs +0 -0
- {pysentry_rs-0.1.0 → pysentry_rs-0.1.4}/src/cache/storage.rs +0 -0
- {pysentry_rs-0.1.0 → pysentry_rs-0.1.4}/src/lib.rs +0 -0
- {pysentry_rs-0.1.0 → pysentry_rs-0.1.4}/src/output/mod.rs +0 -0
- {pysentry_rs-0.1.0 → pysentry_rs-0.1.4}/src/output/report.rs +0 -0
- {pysentry_rs-0.1.0 → pysentry_rs-0.1.4}/src/output/sarif.rs +0 -0
- {pysentry_rs-0.1.0 → pysentry_rs-0.1.4}/src/parsers/lock.rs +0 -0
- {pysentry_rs-0.1.0 → pysentry_rs-0.1.4}/src/providers/mod.rs +0 -0
- {pysentry_rs-0.1.0 → pysentry_rs-0.1.4}/src/providers/osv.rs +0 -0
- {pysentry_rs-0.1.0 → pysentry_rs-0.1.4}/src/providers/pypa.rs +0 -0
- {pysentry_rs-0.1.0 → pysentry_rs-0.1.4}/src/providers/pypi.rs +0 -0
- {pysentry_rs-0.1.0 → pysentry_rs-0.1.4}/src/types.rs +0 -0
- {pysentry_rs-0.1.0 → pysentry_rs-0.1.4}/src/vulnerability/matcher.rs +0 -0
- {pysentry_rs-0.1.0 → pysentry_rs-0.1.4}/src/vulnerability/mod.rs +0 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
version: 2
|
|
2
|
+
updates:
|
|
3
|
+
# Rust dependencies (Cargo.toml/Cargo.lock)
|
|
4
|
+
- package-ecosystem: "cargo"
|
|
5
|
+
directory: "/"
|
|
6
|
+
schedule:
|
|
7
|
+
interval: "weekly"
|
|
8
|
+
open-pull-requests-limit: 10
|
|
9
|
+
groups:
|
|
10
|
+
rust-dependencies:
|
|
11
|
+
patterns:
|
|
12
|
+
- "*"
|
|
13
|
+
|
|
14
|
+
# Python dependencies (pyproject.toml only)
|
|
15
|
+
- package-ecosystem: "pip"
|
|
16
|
+
directory: "/"
|
|
17
|
+
schedule:
|
|
18
|
+
interval: "weekly"
|
|
19
|
+
open-pull-requests-limit: 10
|
|
20
|
+
allow:
|
|
21
|
+
- dependency-type: "all"
|
|
22
|
+
ignore:
|
|
23
|
+
- dependency-name: "*"
|
|
24
|
+
groups:
|
|
25
|
+
python-dependencies:
|
|
26
|
+
patterns:
|
|
27
|
+
- "*"
|
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
paths-ignore:
|
|
7
|
+
- '**.md'
|
|
8
|
+
- 'LICENSE'
|
|
9
|
+
- '.gitignore'
|
|
10
|
+
- '.editorconfig'
|
|
11
|
+
- '.github/dependabot.yml'
|
|
12
|
+
pull_request:
|
|
13
|
+
branches: [main]
|
|
14
|
+
paths-ignore:
|
|
15
|
+
- '**.md'
|
|
16
|
+
- 'LICENSE'
|
|
17
|
+
- '.gitignore'
|
|
18
|
+
- '.editorconfig'
|
|
19
|
+
- '.github/dependabot.yml'
|
|
20
|
+
|
|
21
|
+
env:
|
|
22
|
+
CARGO_TERM_COLOR: always
|
|
23
|
+
RUST_BACKTRACE: 1
|
|
24
|
+
|
|
25
|
+
jobs:
|
|
26
|
+
fmt:
|
|
27
|
+
name: Format Check
|
|
28
|
+
runs-on: ubuntu-latest
|
|
29
|
+
steps:
|
|
30
|
+
- uses: actions/checkout@v4
|
|
31
|
+
- name: Install Rust
|
|
32
|
+
uses: dtolnay/rust-toolchain@stable
|
|
33
|
+
with:
|
|
34
|
+
components: rustfmt
|
|
35
|
+
- name: Check formatting
|
|
36
|
+
run: cargo fmt --all -- --check
|
|
37
|
+
|
|
38
|
+
clippy:
|
|
39
|
+
name: Clippy
|
|
40
|
+
runs-on: ${{ matrix.os }}
|
|
41
|
+
strategy:
|
|
42
|
+
matrix:
|
|
43
|
+
os: [ubuntu-latest, macos-latest, windows-latest]
|
|
44
|
+
steps:
|
|
45
|
+
- uses: actions/checkout@v4
|
|
46
|
+
|
|
47
|
+
- name: Install system dependencies (Ubuntu)
|
|
48
|
+
if: matrix.os == 'ubuntu-latest'
|
|
49
|
+
run: sudo apt-get update && sudo apt-get install -y libssl-dev pkg-config
|
|
50
|
+
|
|
51
|
+
- name: Install Rust
|
|
52
|
+
uses: dtolnay/rust-toolchain@stable
|
|
53
|
+
with:
|
|
54
|
+
components: clippy
|
|
55
|
+
|
|
56
|
+
- name: Cache cargo registry
|
|
57
|
+
uses: actions/cache@v4
|
|
58
|
+
with:
|
|
59
|
+
path: |
|
|
60
|
+
~/.cargo/registry/index/
|
|
61
|
+
~/.cargo/registry/cache/
|
|
62
|
+
~/.cargo/git/db/
|
|
63
|
+
key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }}
|
|
64
|
+
restore-keys: |
|
|
65
|
+
${{ runner.os }}-cargo-registry-
|
|
66
|
+
|
|
67
|
+
- name: Cache cargo build
|
|
68
|
+
uses: actions/cache@v4
|
|
69
|
+
with:
|
|
70
|
+
path: target
|
|
71
|
+
key: ${{ runner.os }}-cargo-clippy-${{ hashFiles('**/Cargo.lock') }}
|
|
72
|
+
restore-keys: |
|
|
73
|
+
${{ runner.os }}-cargo-clippy-
|
|
74
|
+
${{ runner.os }}-cargo-build-
|
|
75
|
+
|
|
76
|
+
- name: Run clippy
|
|
77
|
+
run: cargo clippy --all-targets --all-features -- -D warnings
|
|
78
|
+
|
|
79
|
+
check:
|
|
80
|
+
name: Check
|
|
81
|
+
runs-on: ${{ matrix.os }}
|
|
82
|
+
strategy:
|
|
83
|
+
matrix:
|
|
84
|
+
os: [ubuntu-latest, macos-latest, windows-latest]
|
|
85
|
+
steps:
|
|
86
|
+
- uses: actions/checkout@v4
|
|
87
|
+
|
|
88
|
+
- name: Install system dependencies (Ubuntu)
|
|
89
|
+
if: matrix.os == 'ubuntu-latest'
|
|
90
|
+
run: sudo apt-get update && sudo apt-get install -y libssl-dev pkg-config
|
|
91
|
+
|
|
92
|
+
- name: Install Rust
|
|
93
|
+
uses: dtolnay/rust-toolchain@stable
|
|
94
|
+
|
|
95
|
+
- name: Cache cargo registry
|
|
96
|
+
uses: actions/cache@v4
|
|
97
|
+
with:
|
|
98
|
+
path: |
|
|
99
|
+
~/.cargo/registry/index/
|
|
100
|
+
~/.cargo/registry/cache/
|
|
101
|
+
~/.cargo/git/db/
|
|
102
|
+
key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }}
|
|
103
|
+
restore-keys: |
|
|
104
|
+
${{ runner.os }}-cargo-registry-
|
|
105
|
+
|
|
106
|
+
- name: Cache cargo build
|
|
107
|
+
uses: actions/cache@v4
|
|
108
|
+
with:
|
|
109
|
+
path: target
|
|
110
|
+
key: ${{ runner.os }}-cargo-check-${{ hashFiles('**/Cargo.lock') }}
|
|
111
|
+
restore-keys: |
|
|
112
|
+
${{ runner.os }}-cargo-check-
|
|
113
|
+
${{ runner.os }}-cargo-build-
|
|
114
|
+
|
|
115
|
+
- name: Check compilation
|
|
116
|
+
run: cargo check --all-targets --all-features
|
|
117
|
+
|
|
118
|
+
build:
|
|
119
|
+
name: Build
|
|
120
|
+
runs-on: ${{ matrix.os }}
|
|
121
|
+
strategy:
|
|
122
|
+
matrix:
|
|
123
|
+
os: [ubuntu-latest, macos-latest, windows-latest]
|
|
124
|
+
steps:
|
|
125
|
+
- uses: actions/checkout@v4
|
|
126
|
+
|
|
127
|
+
- name: Install system dependencies (Ubuntu)
|
|
128
|
+
if: matrix.os == 'ubuntu-latest'
|
|
129
|
+
run: sudo apt-get update && sudo apt-get install -y libssl-dev pkg-config
|
|
130
|
+
|
|
131
|
+
- name: Install Rust
|
|
132
|
+
uses: dtolnay/rust-toolchain@stable
|
|
133
|
+
|
|
134
|
+
- name: Cache cargo registry
|
|
135
|
+
uses: actions/cache@v4
|
|
136
|
+
with:
|
|
137
|
+
path: |
|
|
138
|
+
~/.cargo/registry/index/
|
|
139
|
+
~/.cargo/registry/cache/
|
|
140
|
+
~/.cargo/git/db/
|
|
141
|
+
key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }}
|
|
142
|
+
restore-keys: |
|
|
143
|
+
${{ runner.os }}-cargo-registry-
|
|
144
|
+
|
|
145
|
+
- name: Cache cargo build
|
|
146
|
+
uses: actions/cache@v4
|
|
147
|
+
with:
|
|
148
|
+
path: target
|
|
149
|
+
key: ${{ runner.os }}-cargo-build-${{ hashFiles('**/Cargo.lock') }}
|
|
150
|
+
restore-keys: |
|
|
151
|
+
${{ runner.os }}-cargo-build-
|
|
152
|
+
|
|
153
|
+
- name: Build
|
|
154
|
+
run: cargo build --verbose
|
|
155
|
+
|
|
156
|
+
test-debug:
|
|
157
|
+
name: Test (Debug)
|
|
158
|
+
runs-on: ${{ matrix.os }}
|
|
159
|
+
strategy:
|
|
160
|
+
matrix:
|
|
161
|
+
os: [ubuntu-latest, macos-latest, windows-latest]
|
|
162
|
+
steps:
|
|
163
|
+
- uses: actions/checkout@v4
|
|
164
|
+
|
|
165
|
+
- name: Install system dependencies (Ubuntu)
|
|
166
|
+
if: matrix.os == 'ubuntu-latest'
|
|
167
|
+
run: sudo apt-get update && sudo apt-get install -y libssl-dev pkg-config
|
|
168
|
+
|
|
169
|
+
- name: Install Rust
|
|
170
|
+
uses: dtolnay/rust-toolchain@stable
|
|
171
|
+
|
|
172
|
+
- name: Cache cargo registry
|
|
173
|
+
uses: actions/cache@v4
|
|
174
|
+
with:
|
|
175
|
+
path: |
|
|
176
|
+
~/.cargo/registry/index/
|
|
177
|
+
~/.cargo/registry/cache/
|
|
178
|
+
~/.cargo/git/db/
|
|
179
|
+
key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }}
|
|
180
|
+
restore-keys: |
|
|
181
|
+
${{ runner.os }}-cargo-registry-
|
|
182
|
+
|
|
183
|
+
- name: Cache cargo build
|
|
184
|
+
uses: actions/cache@v4
|
|
185
|
+
with:
|
|
186
|
+
path: target
|
|
187
|
+
key: ${{ runner.os }}-cargo-test-debug-${{ hashFiles('**/Cargo.lock') }}
|
|
188
|
+
restore-keys: |
|
|
189
|
+
${{ runner.os }}-cargo-test-debug-
|
|
190
|
+
${{ runner.os }}-cargo-build-
|
|
191
|
+
|
|
192
|
+
- name: Run tests
|
|
193
|
+
run: cargo test --verbose
|
|
194
|
+
|
|
195
|
+
test-release:
|
|
196
|
+
name: Test (Release)
|
|
197
|
+
runs-on: ${{ matrix.os }}
|
|
198
|
+
strategy:
|
|
199
|
+
matrix:
|
|
200
|
+
os: [ubuntu-latest, macos-latest, windows-latest]
|
|
201
|
+
steps:
|
|
202
|
+
- uses: actions/checkout@v4
|
|
203
|
+
|
|
204
|
+
- name: Install system dependencies (Ubuntu)
|
|
205
|
+
if: matrix.os == 'ubuntu-latest'
|
|
206
|
+
run: sudo apt-get update && sudo apt-get install -y libssl-dev pkg-config
|
|
207
|
+
|
|
208
|
+
- name: Install Rust
|
|
209
|
+
uses: dtolnay/rust-toolchain@stable
|
|
210
|
+
|
|
211
|
+
- name: Cache cargo registry
|
|
212
|
+
uses: actions/cache@v4
|
|
213
|
+
with:
|
|
214
|
+
path: |
|
|
215
|
+
~/.cargo/registry/index/
|
|
216
|
+
~/.cargo/registry/cache/
|
|
217
|
+
~/.cargo/git/db/
|
|
218
|
+
key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }}
|
|
219
|
+
restore-keys: |
|
|
220
|
+
${{ runner.os }}-cargo-registry-
|
|
221
|
+
|
|
222
|
+
- name: Cache cargo build
|
|
223
|
+
uses: actions/cache@v4
|
|
224
|
+
with:
|
|
225
|
+
path: target
|
|
226
|
+
key: ${{ runner.os }}-cargo-test-release-${{ hashFiles('**/Cargo.lock') }}
|
|
227
|
+
restore-keys: |
|
|
228
|
+
${{ runner.os }}-cargo-test-release-
|
|
229
|
+
${{ runner.os }}-cargo-build-
|
|
230
|
+
|
|
231
|
+
- name: Run tests with release profile
|
|
232
|
+
run: cargo test --release --verbose
|
|
233
|
+
|
|
234
|
+
python-bindings:
|
|
235
|
+
name: Python Bindings
|
|
236
|
+
runs-on: ${{ matrix.os }}
|
|
237
|
+
strategy:
|
|
238
|
+
matrix:
|
|
239
|
+
os: [ubuntu-latest, macos-latest, windows-latest]
|
|
240
|
+
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"]
|
|
241
|
+
|
|
242
|
+
steps:
|
|
243
|
+
- uses: actions/checkout@v4
|
|
244
|
+
|
|
245
|
+
- name: Install system dependencies (Ubuntu)
|
|
246
|
+
if: matrix.os == 'ubuntu-latest'
|
|
247
|
+
run: sudo apt-get update && sudo apt-get install -y libssl-dev pkg-config
|
|
248
|
+
|
|
249
|
+
- name: Set up Python
|
|
250
|
+
uses: actions/setup-python@v5
|
|
251
|
+
with:
|
|
252
|
+
python-version: ${{ matrix.python-version }}
|
|
253
|
+
|
|
254
|
+
- name: Install Rust
|
|
255
|
+
uses: dtolnay/rust-toolchain@stable
|
|
256
|
+
|
|
257
|
+
- name: Cache cargo
|
|
258
|
+
uses: actions/cache@v4
|
|
259
|
+
with:
|
|
260
|
+
path: |
|
|
261
|
+
~/.cargo/registry/index/
|
|
262
|
+
~/.cargo/registry/cache/
|
|
263
|
+
~/.cargo/git/db/
|
|
264
|
+
target
|
|
265
|
+
key: ${{ runner.os }}-cargo-python-${{ hashFiles('**/Cargo.lock') }}
|
|
266
|
+
|
|
267
|
+
- name: Install maturin
|
|
268
|
+
run: pip install maturin
|
|
269
|
+
|
|
270
|
+
- name: Build Python wheel
|
|
271
|
+
run: maturin build --features python
|
|
272
|
+
|
|
273
|
+
- name: Install built wheel
|
|
274
|
+
run: pip install --find-links target/wheels pysentry-rs
|
|
275
|
+
|
|
276
|
+
- name: Test Python bindings
|
|
277
|
+
run: python -c "import pysentry; print('Python bindings work!')"
|
|
278
|
+
|
|
279
|
+
security-audit:
|
|
280
|
+
name: Security Audit
|
|
281
|
+
runs-on: ubuntu-latest
|
|
282
|
+
steps:
|
|
283
|
+
- uses: actions/checkout@v4
|
|
284
|
+
- uses: dtolnay/rust-toolchain@stable
|
|
285
|
+
- name: Install cargo-audit
|
|
286
|
+
run: cargo install cargo-audit
|
|
287
|
+
- name: Run security audit
|
|
288
|
+
run: cargo audit
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
name: Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- "v*"
|
|
7
|
+
workflow_dispatch:
|
|
8
|
+
|
|
9
|
+
env:
|
|
10
|
+
CARGO_TERM_COLOR: always
|
|
11
|
+
RUST_BACKTRACE: 1
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
create-release:
|
|
15
|
+
name: Create Release
|
|
16
|
+
runs-on: ubuntu-latest
|
|
17
|
+
permissions:
|
|
18
|
+
contents: write
|
|
19
|
+
outputs:
|
|
20
|
+
release_id: ${{ steps.create_release.outputs.id }}
|
|
21
|
+
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
|
22
|
+
steps:
|
|
23
|
+
- uses: actions/checkout@v4
|
|
24
|
+
with:
|
|
25
|
+
fetch-depth: 0
|
|
26
|
+
- name: Create Release
|
|
27
|
+
id: create_release
|
|
28
|
+
uses: softprops/action-gh-release@v1
|
|
29
|
+
with:
|
|
30
|
+
tag_name: ${{ github.ref_name }}
|
|
31
|
+
name: Release ${{ github.ref_name }}
|
|
32
|
+
draft: true
|
|
33
|
+
prerelease: ${{ contains(github.ref_name, '-') }}
|
|
34
|
+
generate_release_notes: true
|
|
35
|
+
env:
|
|
36
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
37
|
+
|
|
38
|
+
build-binaries:
|
|
39
|
+
name: Build Binaries
|
|
40
|
+
needs: create-release
|
|
41
|
+
strategy:
|
|
42
|
+
fail-fast: false
|
|
43
|
+
matrix:
|
|
44
|
+
include:
|
|
45
|
+
- target: x86_64-unknown-linux-gnu
|
|
46
|
+
os: ubuntu-latest
|
|
47
|
+
name: linux-x64
|
|
48
|
+
artifact_name: pysentry
|
|
49
|
+
- target: x86_64-unknown-linux-musl
|
|
50
|
+
os: ubuntu-latest
|
|
51
|
+
name: linux-x64-musl
|
|
52
|
+
artifact_name: pysentry
|
|
53
|
+
- target: aarch64-unknown-linux-gnu
|
|
54
|
+
os: ubuntu-latest
|
|
55
|
+
name: linux-arm64
|
|
56
|
+
artifact_name: pysentry
|
|
57
|
+
- target: x86_64-apple-darwin
|
|
58
|
+
os: macos-latest
|
|
59
|
+
name: macos-x64
|
|
60
|
+
artifact_name: pysentry
|
|
61
|
+
- target: aarch64-apple-darwin
|
|
62
|
+
os: macos-latest
|
|
63
|
+
name: macos-arm64
|
|
64
|
+
artifact_name: pysentry
|
|
65
|
+
- target: x86_64-pc-windows-msvc
|
|
66
|
+
os: windows-latest
|
|
67
|
+
name: windows-x64
|
|
68
|
+
artifact_name: pysentry.exe
|
|
69
|
+
|
|
70
|
+
runs-on: ${{ matrix.os }}
|
|
71
|
+
permissions:
|
|
72
|
+
contents: write
|
|
73
|
+
steps:
|
|
74
|
+
- uses: actions/checkout@v4
|
|
75
|
+
|
|
76
|
+
- name: Install Rust
|
|
77
|
+
uses: dtolnay/rust-toolchain@stable
|
|
78
|
+
with:
|
|
79
|
+
targets: ${{ matrix.target }}
|
|
80
|
+
|
|
81
|
+
- name: Install cross
|
|
82
|
+
if: matrix.target != 'x86_64-unknown-linux-gnu'
|
|
83
|
+
run: cargo install cross
|
|
84
|
+
|
|
85
|
+
- name: Build binary (native)
|
|
86
|
+
if: matrix.target == 'x86_64-unknown-linux-gnu'
|
|
87
|
+
run: cargo build --release --target ${{ matrix.target }} --bin pysentry
|
|
88
|
+
|
|
89
|
+
- name: Build binary (cross-compile)
|
|
90
|
+
if: matrix.target != 'x86_64-unknown-linux-gnu'
|
|
91
|
+
run: cross build --release --target ${{ matrix.target }} --bin pysentry
|
|
92
|
+
|
|
93
|
+
- name: Package binary (Unix)
|
|
94
|
+
if: matrix.os != 'windows-latest'
|
|
95
|
+
run: |
|
|
96
|
+
name=pysentry-${{ matrix.name }}
|
|
97
|
+
mkdir $name
|
|
98
|
+
cp target/${{ matrix.target }}/release/${{ matrix.artifact_name }} $name/
|
|
99
|
+
cp README.md $name/
|
|
100
|
+
cp LICENSE $name/
|
|
101
|
+
tar -czf $name.tar.gz $name
|
|
102
|
+
echo "ASSET=$name.tar.gz" >> $GITHUB_ENV
|
|
103
|
+
|
|
104
|
+
- name: Package binary (Windows)
|
|
105
|
+
if: matrix.os == 'windows-latest'
|
|
106
|
+
run: |
|
|
107
|
+
$name = "pysentry-${{ matrix.name }}"
|
|
108
|
+
mkdir $name
|
|
109
|
+
cp target/${{ matrix.target }}/release/${{ matrix.artifact_name }} $name/
|
|
110
|
+
cp README.md $name/
|
|
111
|
+
cp LICENSE $name/
|
|
112
|
+
Compress-Archive -Path $name -DestinationPath "$name.zip"
|
|
113
|
+
echo "ASSET=$name.zip" | Out-File -FilePath $env:GITHUB_ENV -Append
|
|
114
|
+
|
|
115
|
+
- name: Upload Release Asset
|
|
116
|
+
uses: softprops/action-gh-release@v1
|
|
117
|
+
with:
|
|
118
|
+
tag_name: ${{ github.ref_name }}
|
|
119
|
+
files: ${{ env.ASSET }}
|
|
120
|
+
env:
|
|
121
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
122
|
+
|
|
123
|
+
publish-crates:
|
|
124
|
+
name: Publish to Crates.io
|
|
125
|
+
runs-on: ubuntu-latest
|
|
126
|
+
needs: build-binaries
|
|
127
|
+
if: startsWith(github.ref, 'refs/tags/v')
|
|
128
|
+
steps:
|
|
129
|
+
- uses: actions/checkout@v4
|
|
130
|
+
|
|
131
|
+
- name: Install Rust
|
|
132
|
+
uses: dtolnay/rust-toolchain@stable
|
|
133
|
+
|
|
134
|
+
- name: Publish to crates.io
|
|
135
|
+
run: cargo publish --token ${{ secrets.CARGO_REGISTRY_TOKEN }}
|
|
136
|
+
|
|
137
|
+
build-python-wheels:
|
|
138
|
+
name: Build Python Wheels
|
|
139
|
+
runs-on: ${{ matrix.os }}
|
|
140
|
+
strategy:
|
|
141
|
+
matrix:
|
|
142
|
+
os: [ubuntu-latest, macos-latest]
|
|
143
|
+
|
|
144
|
+
steps:
|
|
145
|
+
- uses: actions/checkout@v4
|
|
146
|
+
|
|
147
|
+
- name: Set up Python
|
|
148
|
+
uses: actions/setup-python@v5
|
|
149
|
+
with:
|
|
150
|
+
python-version: "3.12"
|
|
151
|
+
|
|
152
|
+
- name: Install Rust
|
|
153
|
+
uses: dtolnay/rust-toolchain@stable
|
|
154
|
+
|
|
155
|
+
- name: Build wheels
|
|
156
|
+
uses: PyO3/maturin-action@v1.49.3
|
|
157
|
+
with:
|
|
158
|
+
command: build
|
|
159
|
+
args: --release --features python --out dist -i python3.8 python3.9 python3.10 python3.11 python3.12 python3.13
|
|
160
|
+
sccache: "true"
|
|
161
|
+
manylinux: auto
|
|
162
|
+
|
|
163
|
+
- name: Upload wheels
|
|
164
|
+
uses: actions/upload-artifact@v4
|
|
165
|
+
with:
|
|
166
|
+
name: wheels-${{ matrix.os }}
|
|
167
|
+
path: dist/*.whl
|
|
168
|
+
|
|
169
|
+
build-sdist:
|
|
170
|
+
name: Build Source Distribution
|
|
171
|
+
runs-on: ubuntu-latest
|
|
172
|
+
steps:
|
|
173
|
+
- uses: actions/checkout@v4
|
|
174
|
+
|
|
175
|
+
- name: Set up Python
|
|
176
|
+
uses: actions/setup-python@v5
|
|
177
|
+
with:
|
|
178
|
+
python-version: "3.12"
|
|
179
|
+
|
|
180
|
+
- name: Install Rust
|
|
181
|
+
uses: dtolnay/rust-toolchain@stable
|
|
182
|
+
|
|
183
|
+
- name: Build sdist
|
|
184
|
+
uses: PyO3/maturin-action@v1.49.3
|
|
185
|
+
with:
|
|
186
|
+
command: sdist
|
|
187
|
+
args: --out dist
|
|
188
|
+
|
|
189
|
+
- name: Upload sdist
|
|
190
|
+
uses: actions/upload-artifact@v4
|
|
191
|
+
with:
|
|
192
|
+
name: sdist
|
|
193
|
+
path: dist/*.tar.gz
|
|
194
|
+
|
|
195
|
+
publish-pypi:
|
|
196
|
+
name: Publish to PyPI
|
|
197
|
+
runs-on: ubuntu-latest
|
|
198
|
+
needs: [build-python-wheels, build-sdist]
|
|
199
|
+
if: startsWith(github.ref, 'refs/tags/v')
|
|
200
|
+
steps:
|
|
201
|
+
- name: Download artifacts
|
|
202
|
+
uses: actions/download-artifact@v4
|
|
203
|
+
with:
|
|
204
|
+
path: artifacts
|
|
205
|
+
|
|
206
|
+
- name: Prepare packages for upload
|
|
207
|
+
run: |
|
|
208
|
+
mkdir -p dist
|
|
209
|
+
find artifacts -name "*.whl" -exec cp {} dist/ \;
|
|
210
|
+
find artifacts -name "*.tar.gz" -exec cp {} dist/ \;
|
|
211
|
+
ls -la dist/
|
|
212
|
+
|
|
213
|
+
- name: Publish to PyPI
|
|
214
|
+
uses: pypa/gh-action-pypi-publish@v1.12.4
|
|
215
|
+
with:
|
|
216
|
+
password: ${{ secrets.PYPI_API_TOKEN }}
|
|
217
|
+
packages-dir: dist/
|
|
218
|
+
|
|
219
|
+
update-release:
|
|
220
|
+
name: Update Release
|
|
221
|
+
runs-on: ubuntu-latest
|
|
222
|
+
permissions:
|
|
223
|
+
contents: write
|
|
224
|
+
needs: [build-binaries, publish-crates, publish-pypi]
|
|
225
|
+
if: always()
|
|
226
|
+
steps:
|
|
227
|
+
- name: Mark release as published
|
|
228
|
+
uses: softprops/action-gh-release@v1
|
|
229
|
+
with:
|
|
230
|
+
tag_name: ${{ github.ref_name }}
|
|
231
|
+
draft: false
|
|
232
|
+
env:
|
|
233
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|