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.
- zoomcli-0.0.1/.github/workflows/release.yml +234 -0
- zoomcli-0.0.1/.gitignore +1 -0
- zoomcli-0.0.1/Cargo.lock +2239 -0
- zoomcli-0.0.1/Cargo.toml +36 -0
- zoomcli-0.0.1/Makefile +34 -0
- zoomcli-0.0.1/PKG-INFO +65 -0
- zoomcli-0.0.1/README.md +42 -0
- zoomcli-0.0.1/docs/superpowers/plans/2026-04-02-zoom-cli.md +2969 -0
- zoomcli-0.0.1/docs/superpowers/specs/2026-04-02-zoom-cli-design.md +135 -0
- zoomcli-0.0.1/pyproject.toml +36 -0
- zoomcli-0.0.1/src/api/client.rs +639 -0
- zoomcli-0.0.1/src/api/mod.rs +142 -0
- zoomcli-0.0.1/src/api/types.rs +496 -0
- zoomcli-0.0.1/src/commands/init.rs +468 -0
- zoomcli-0.0.1/src/commands/meetings.rs +363 -0
- zoomcli-0.0.1/src/commands/mod.rs +158 -0
- zoomcli-0.0.1/src/commands/recordings.rs +308 -0
- zoomcli-0.0.1/src/commands/reports.rs +115 -0
- zoomcli-0.0.1/src/commands/users.rs +136 -0
- zoomcli-0.0.1/src/config.rs +407 -0
- zoomcli-0.0.1/src/lib.rs +7 -0
- zoomcli-0.0.1/src/main.rs +297 -0
- zoomcli-0.0.1/src/output.rs +211 -0
- zoomcli-0.0.1/src/test_support.rs +68 -0
- zoomcli-0.0.1/zoom_cli/__init__.py +10 -0
- zoomcli-0.0.1/zoom_cli/__main__.py +52 -0
|
@@ -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
|
zoomcli-0.0.1/.gitignore
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/target
|