zoomcli 0.0.1__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.
@@ -0,0 +1,234 @@
1
+ name: Release
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - 'v[0-9]*.[0-9]*.[0-9]*'
7
+ workflow_dispatch:
8
+ inputs:
9
+ dry_run:
10
+ description: 'Dry run mode (skip actual publishing)'
11
+ required: false
12
+ default: true
13
+ type: boolean
14
+ skip_crates_io:
15
+ description: 'Skip publishing to crates.io (if already published)'
16
+ required: false
17
+ default: false
18
+ type: boolean
19
+ skip_pypi:
20
+ description: 'Skip publishing to PyPI (if already published)'
21
+ required: false
22
+ default: false
23
+ type: boolean
24
+
25
+ permissions:
26
+ contents: write
27
+
28
+ env:
29
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
30
+
31
+ jobs:
32
+ test:
33
+ name: Run tests
34
+ runs-on: ubuntu-latest
35
+ steps:
36
+ - uses: actions/checkout@v4
37
+
38
+ - uses: dtolnay/rust-toolchain@stable
39
+
40
+ - name: Verify Cargo.lock is up to date
41
+ run: cargo check --locked
42
+
43
+ - name: Run tests
44
+ run: make test
45
+
46
+ build:
47
+ name: Build ${{ matrix.target }}
48
+ needs: test
49
+ strategy:
50
+ matrix:
51
+ include:
52
+ - os: ubuntu-latest
53
+ target: x86_64-unknown-linux-gnu
54
+ - os: ubuntu-latest
55
+ target: aarch64-unknown-linux-gnu
56
+ - os: windows-latest
57
+ target: x86_64-pc-windows-msvc
58
+ - os: macos-latest
59
+ target: x86_64-apple-darwin
60
+ - os: macos-latest
61
+ target: aarch64-apple-darwin
62
+ runs-on: ${{ matrix.os }}
63
+ steps:
64
+ - uses: actions/checkout@v4
65
+
66
+ - uses: dtolnay/rust-toolchain@stable
67
+ with:
68
+ targets: ${{ matrix.target }}
69
+
70
+ - name: Install cross-compilation tools
71
+ if: matrix.target == 'aarch64-unknown-linux-gnu'
72
+ run: sudo apt-get update && sudo apt-get install -y gcc-aarch64-linux-gnu
73
+
74
+ - name: Install maturin
75
+ run: pip install maturin
76
+
77
+ - name: Build wheel
78
+ shell: bash
79
+ run: |
80
+ case "${{ matrix.target }}" in
81
+ *-gnu)
82
+ pip install ziglang
83
+ maturin build --release --target ${{ matrix.target }} --compatibility manylinux_2_28 --zig
84
+ ;;
85
+ *)
86
+ maturin build --release --target ${{ matrix.target }}
87
+ ;;
88
+ esac
89
+
90
+ - name: Build binary
91
+ env:
92
+ CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER: aarch64-linux-gnu-gcc
93
+ run: cargo build --release --target ${{ matrix.target }}
94
+
95
+ - name: Verify binary
96
+ if: ${{ !contains(matrix.target, 'aarch64-unknown-linux') }}
97
+ shell: bash
98
+ run: |
99
+ if [[ "${{ runner.os }}" == "Windows" ]]; then
100
+ ./target/${{ matrix.target }}/release/zoom.exe --version
101
+ else
102
+ ./target/${{ matrix.target }}/release/zoom --version
103
+ fi
104
+
105
+ - name: Create release archive
106
+ shell: bash
107
+ run: |
108
+ VERSION=${GITHUB_REF#refs/tags/}
109
+ ARCHIVE_NAME="zoom-cli-${VERSION}-${{ matrix.target }}"
110
+
111
+ mkdir -p release-package
112
+
113
+ if [[ "${{ runner.os }}" == "Windows" ]]; then
114
+ cp "target/${{ matrix.target }}/release/zoom.exe" release-package/zoom.exe
115
+ cd release-package
116
+ powershell -command "Compress-Archive -Path zoom.exe -DestinationPath ../${ARCHIVE_NAME}.zip"
117
+ cd ..
118
+ powershell -command "Get-FileHash -Path '${ARCHIVE_NAME}.zip' -Algorithm SHA256 | Select-Object -ExpandProperty Hash" > "${ARCHIVE_NAME}.zip.sha256"
119
+ else
120
+ cp "target/${{ matrix.target }}/release/zoom" release-package/zoom
121
+ tar -czf "${ARCHIVE_NAME}.tar.gz" -C release-package zoom
122
+
123
+ if [[ "${{ runner.os }}" == "macOS" ]]; then
124
+ shasum -a 256 "${ARCHIVE_NAME}.tar.gz" > "${ARCHIVE_NAME}.tar.gz.sha256"
125
+ else
126
+ sha256sum "${ARCHIVE_NAME}.tar.gz" > "${ARCHIVE_NAME}.tar.gz.sha256"
127
+ fi
128
+ fi
129
+
130
+ rm -rf release-package
131
+
132
+ - name: Upload wheel
133
+ uses: actions/upload-artifact@v4
134
+ with:
135
+ path: target/wheels/*
136
+ name: wheel-${{ matrix.target }}
137
+
138
+ - name: Upload release archives
139
+ uses: actions/upload-artifact@v4
140
+ with:
141
+ path: |
142
+ zoom-cli-*-${{ matrix.target }}.tar.gz*
143
+ zoom-cli-*-${{ matrix.target }}.zip*
144
+ name: release-${{ matrix.target }}
145
+
146
+ sdist:
147
+ name: Build source distribution
148
+ runs-on: ubuntu-latest
149
+ needs: test
150
+ steps:
151
+ - uses: actions/checkout@v4
152
+
153
+ - name: Install maturin
154
+ run: pip install maturin
155
+
156
+ - name: Build sdist
157
+ run: maturin sdist
158
+
159
+ - uses: actions/upload-artifact@v4
160
+ with:
161
+ path: target/wheels/*.tar.gz
162
+ name: sdist
163
+
164
+ release:
165
+ runs-on: ubuntu-latest
166
+ needs: [build, sdist]
167
+ steps:
168
+ - uses: actions/checkout@v4
169
+
170
+ - uses: dtolnay/rust-toolchain@stable
171
+
172
+ - name: Install uv
173
+ uses: astral-sh/setup-uv@v5
174
+ with:
175
+ enable-cache: false
176
+
177
+ - name: Publish to crates.io
178
+ if: ${{ inputs.dry_run != true && inputs.skip_crates_io != true }}
179
+ env:
180
+ CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
181
+ run: cargo publish --locked
182
+
183
+ - name: Test crates.io publish (dry run)
184
+ if: ${{ inputs.dry_run == true && inputs.skip_crates_io != true }}
185
+ run: |
186
+ echo "DRY RUN: Would publish to crates.io"
187
+ cargo publish --dry-run --locked
188
+
189
+ - name: Skip crates.io publishing
190
+ if: ${{ inputs.skip_crates_io == true }}
191
+ run: echo "Skipping crates.io publishing as requested"
192
+
193
+ - name: Download all artifacts
194
+ uses: actions/download-artifact@v4
195
+ with:
196
+ path: artifacts
197
+
198
+ - name: Publish to PyPI
199
+ if: ${{ inputs.dry_run != true && inputs.skip_pypi != true }}
200
+ env:
201
+ TWINE_USERNAME: __token__
202
+ TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
203
+ run: |
204
+ uv tool run twine upload artifacts/wheel-*/*.whl artifacts/sdist/*.tar.gz
205
+
206
+ - name: Test PyPI upload (dry run)
207
+ if: ${{ inputs.dry_run == true && inputs.skip_pypi != true }}
208
+ run: |
209
+ echo "DRY RUN: Would upload to PyPI:"
210
+ find artifacts/wheel-* -name "*.whl" -type f | sort
211
+ find artifacts/sdist -name "*.tar.gz" -type f | sort
212
+ uv tool run twine check artifacts/wheel-*/*.whl artifacts/sdist/*.tar.gz
213
+
214
+ - name: Skip PyPI publishing
215
+ if: ${{ inputs.skip_pypi == true }}
216
+ run: echo "Skipping PyPI publishing as requested"
217
+
218
+ - name: Create Release
219
+ if: ${{ inputs.dry_run != true }}
220
+ uses: softprops/action-gh-release@v2
221
+ with:
222
+ generate_release_notes: true
223
+ files: |
224
+ artifacts/release-*/zoom-cli-*.tar.gz
225
+ artifacts/release-*/zoom-cli-*.tar.gz.sha256
226
+ artifacts/release-*/zoom-cli-*.zip
227
+ artifacts/release-*/zoom-cli-*.zip.sha256
228
+
229
+ - name: Dry Run Summary
230
+ if: ${{ inputs.dry_run == true }}
231
+ run: |
232
+ echo "Dry run complete. Artifacts built but nothing published."
233
+ echo "Archives:"
234
+ find artifacts/release-* -type f | sort
@@ -0,0 +1 @@
1
+ /target