teams-cli 0.1.0__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,6 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: github-actions
4
+ directory: /
5
+ schedule:
6
+ interval: weekly
@@ -0,0 +1,47 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ pull_request:
6
+ workflow_call:
7
+
8
+ permissions:
9
+ contents: read
10
+
11
+ jobs:
12
+ test:
13
+ name: Test (${{ matrix.os }})
14
+ strategy:
15
+ fail-fast: false
16
+ matrix:
17
+ os: [ubuntu-latest, macos-latest, windows-latest]
18
+ runs-on: ${{ matrix.os }}
19
+ steps:
20
+ - uses: actions/checkout@v7
21
+ - uses: dtolnay/rust-toolchain@stable
22
+ - uses: Swatinem/rust-cache@v2
23
+ - run: cargo test --locked --all-targets
24
+
25
+ quality:
26
+ name: Formatting and lints
27
+ runs-on: ubuntu-latest
28
+ steps:
29
+ - uses: actions/checkout@v7
30
+ - uses: dtolnay/rust-toolchain@stable
31
+ with:
32
+ components: rustfmt, clippy
33
+ - uses: Swatinem/rust-cache@v2
34
+ - run: cargo fmt -- --check
35
+ - run: cargo clippy --locked --all-targets -- -D warnings
36
+
37
+ security:
38
+ name: Dependency audit
39
+ runs-on: ubuntu-latest
40
+ steps:
41
+ - uses: actions/checkout@v7
42
+ - uses: dtolnay/rust-toolchain@stable
43
+ - uses: Swatinem/rust-cache@v2
44
+ - name: Install cargo-audit
45
+ run: cargo install cargo-audit --version 0.22.2 --locked
46
+ - name: Audit Cargo.lock
47
+ run: cargo audit
@@ -0,0 +1,258 @@
1
+ name: Release
2
+
3
+ on:
4
+ push:
5
+ tags: ["v[0-9]*.[0-9]*.[0-9]*"]
6
+
7
+ permissions:
8
+ contents: read
9
+
10
+ jobs:
11
+ version:
12
+ name: Verify release version
13
+ runs-on: ubuntu-latest
14
+ steps:
15
+ - uses: actions/checkout@v7
16
+ - name: Match tag to package version
17
+ run: |
18
+ version="$(sed -n 's/^version = "\([^"]*\)"/\1/p' Cargo.toml | head -1)"
19
+ test "v${version}" = "$GITHUB_REF_NAME"
20
+
21
+ verify:
22
+ uses: ./.github/workflows/ci.yml
23
+
24
+ binaries:
25
+ name: Binary (${{ matrix.target }})
26
+ needs: [version, verify]
27
+ strategy:
28
+ fail-fast: false
29
+ matrix:
30
+ include:
31
+ - os: ubuntu-latest
32
+ target: x86_64-unknown-linux-gnu
33
+ binary: teams
34
+ - os: macos-15-intel
35
+ target: x86_64-apple-darwin
36
+ binary: teams
37
+ - os: macos-latest
38
+ target: aarch64-apple-darwin
39
+ binary: teams
40
+ - os: windows-latest
41
+ target: x86_64-pc-windows-msvc
42
+ binary: teams.exe
43
+ runs-on: ${{ matrix.os }}
44
+ permissions:
45
+ contents: read
46
+ id-token: write
47
+ attestations: write
48
+ steps:
49
+ - uses: actions/checkout@v7
50
+ - uses: dtolnay/rust-toolchain@stable
51
+ with:
52
+ targets: ${{ matrix.target }}
53
+ - uses: Swatinem/rust-cache@v2
54
+ with:
55
+ key: ${{ matrix.target }}
56
+ - run: cargo build --locked --release --target ${{ matrix.target }}
57
+ - name: Package binary
58
+ shell: bash
59
+ run: |
60
+ mkdir -p dist/package
61
+ cp "target/${{ matrix.target }}/release/${{ matrix.binary }}" dist/package/
62
+ cp README.md LICENSE CHANGELOG.md dist/package/
63
+ tar -C dist/package -czf "dist/teams-cli-${GITHUB_REF_NAME}-${{ matrix.target }}.tar.gz" .
64
+ rm -rf dist/package
65
+ - name: Attest build provenance
66
+ uses: actions/attest@v4
67
+ with:
68
+ subject-path: dist/*.tar.gz
69
+ - uses: actions/upload-artifact@v7
70
+ with:
71
+ name: binary-${{ matrix.target }}
72
+ path: dist/*.tar.gz
73
+ if-no-files-found: error
74
+
75
+ python-wheels:
76
+ name: Python wheel (${{ matrix.target }})
77
+ needs: [version, verify]
78
+ strategy:
79
+ fail-fast: false
80
+ matrix:
81
+ include:
82
+ - os: ubuntu-latest
83
+ target: x86_64
84
+ manylinux: "2_28"
85
+ - os: ubuntu-latest
86
+ target: aarch64
87
+ manylinux: "2_28"
88
+ - os: macos-latest
89
+ target: universal2-apple-darwin
90
+ manylinux: auto
91
+ - os: windows-latest
92
+ target: x64
93
+ manylinux: auto
94
+ runs-on: ${{ matrix.os }}
95
+ steps:
96
+ - uses: actions/checkout@v7
97
+ - uses: PyO3/maturin-action@e83996d129638aa358a18fbd1dfb82f0b0fb5d3b # v1.51.0
98
+ with:
99
+ maturin-version: v1.14.1
100
+ command: build
101
+ target: ${{ matrix.target }}
102
+ manylinux: ${{ matrix.manylinux }}
103
+ args: --release --locked --compatibility pypi --out dist
104
+ - uses: actions/upload-artifact@v7
105
+ with:
106
+ name: wheel-${{ matrix.target }}
107
+ path: dist/*.whl
108
+ if-no-files-found: error
109
+
110
+ source-distributions:
111
+ name: Source distributions
112
+ needs: [version, verify]
113
+ runs-on: ubuntu-latest
114
+ steps:
115
+ - uses: actions/checkout@v7
116
+ - uses: dtolnay/rust-toolchain@stable
117
+ - run: cargo package --locked
118
+ - uses: PyO3/maturin-action@e83996d129638aa358a18fbd1dfb82f0b0fb5d3b # v1.51.0
119
+ with:
120
+ maturin-version: v1.14.1
121
+ command: sdist
122
+ args: --out dist
123
+ - run: cp target/package/*.crate dist/
124
+ - uses: actions/upload-artifact@v7
125
+ with:
126
+ name: source-distributions
127
+ path: dist/*
128
+ if-no-files-found: error
129
+
130
+ github-release:
131
+ name: GitHub release
132
+ needs: [binaries, python-wheels, source-distributions]
133
+ runs-on: ubuntu-latest
134
+ permissions:
135
+ contents: write
136
+ id-token: write
137
+ attestations: write
138
+ steps:
139
+ - uses: actions/checkout@v7
140
+ - uses: actions/download-artifact@v8
141
+ with:
142
+ pattern: binary-*
143
+ path: dist
144
+ merge-multiple: true
145
+ - uses: actions/download-artifact@v8
146
+ with:
147
+ name: source-distributions
148
+ path: dist
149
+ - name: Generate CycloneDX SBOM
150
+ run: |
151
+ cargo install cargo-cyclonedx --version 0.5.9 --locked
152
+ cargo cyclonedx --format json --override-filename teams-cli.cdx
153
+ cp teams-cli.cdx.json dist/
154
+ - name: Generate checksums
155
+ working-directory: dist
156
+ run: sha256sum ./*.tar.gz ./*.crate ./*.json > SHA256SUMS
157
+ - name: Attest artifacts and SBOM
158
+ uses: actions/attest@v4
159
+ with:
160
+ subject-path: dist/*
161
+ sbom-path: dist/teams-cli.cdx.json
162
+ - name: Create GitHub release
163
+ env:
164
+ GH_TOKEN: ${{ github.token }}
165
+ run: gh release create "$GITHUB_REF_NAME" dist/* --verify-tag --generate-notes
166
+
167
+ crates-io:
168
+ name: Publish crates.io
169
+ needs: github-release
170
+ runs-on: ubuntu-latest
171
+ environment: crates-io
172
+ permissions:
173
+ id-token: write
174
+ steps:
175
+ - uses: actions/checkout@v7
176
+ - uses: dtolnay/rust-toolchain@stable
177
+ - name: Check whether this version is already published
178
+ id: crate
179
+ shell: bash
180
+ run: |
181
+ version="${GITHUB_REF_NAME#v}"
182
+ if curl -fsSL "https://crates.io/api/v1/crates/teams-cli/${version}" > /dev/null; then
183
+ echo "exists=true" >> "$GITHUB_OUTPUT"
184
+ else
185
+ echo "exists=false" >> "$GITHUB_OUTPUT"
186
+ fi
187
+ - name: Get temporary crates.io token
188
+ if: steps.crate.outputs.exists != 'true'
189
+ id: crates-auth
190
+ uses: rust-lang/crates-io-auth-action@v1
191
+ - if: steps.crate.outputs.exists != 'true'
192
+ run: cargo publish --locked
193
+ env:
194
+ CARGO_REGISTRY_TOKEN: ${{ steps.crates-auth.outputs.token }}
195
+ - if: steps.crate.outputs.exists == 'true'
196
+ run: echo "teams-cli ${GITHUB_REF_NAME#v} is already available on crates.io."
197
+
198
+ pypi:
199
+ name: Publish PyPI
200
+ needs: github-release
201
+ runs-on: ubuntu-latest
202
+ environment:
203
+ name: pypi
204
+ url: https://pypi.org/p/teams-cli
205
+ permissions:
206
+ id-token: write
207
+ steps:
208
+ - uses: actions/download-artifact@v8
209
+ with:
210
+ pattern: wheel-*
211
+ path: dist
212
+ merge-multiple: true
213
+ - uses: actions/download-artifact@v8
214
+ with:
215
+ name: source-distributions
216
+ path: source
217
+ - name: Collect Python distributions
218
+ run: find source -name '*.tar.gz' -exec cp {} dist/ \;
219
+ - uses: pypa/gh-action-pypi-publish@release/v1
220
+ with:
221
+ packages-dir: dist
222
+
223
+ post-publish-smoke:
224
+ name: Verify public packages
225
+ needs: [crates-io, pypi]
226
+ runs-on: ubuntu-latest
227
+ steps:
228
+ - uses: dtolnay/rust-toolchain@stable
229
+ - uses: actions/setup-python@v7
230
+ with:
231
+ python-version: "3.x"
232
+ - name: Install and run the crates.io package
233
+ shell: bash
234
+ run: |
235
+ version="${GITHUB_REF_NAME#v}"
236
+ root="${RUNNER_TEMP}/cargo-smoke"
237
+ for _ in 1 2 3 4 5 6; do
238
+ if cargo install --root "$root" teams-cli --version "$version" --locked; then
239
+ "$root/bin/teams" --version | grep -F "teams $version"
240
+ exit 0
241
+ fi
242
+ sleep 10
243
+ done
244
+ exit 1
245
+ - name: Install and run the PyPI package
246
+ shell: bash
247
+ run: |
248
+ version="${GITHUB_REF_NAME#v}"
249
+ environment="${RUNNER_TEMP}/pypi-smoke"
250
+ python -m venv "$environment"
251
+ for _ in 1 2 3 4 5 6; do
252
+ if "$environment/bin/pip" install --no-cache-dir "teams-cli==$version"; then
253
+ "$environment/bin/teams" --version | grep -F "teams $version"
254
+ exit 0
255
+ fi
256
+ sleep 10
257
+ done
258
+ exit 1
@@ -0,0 +1,5 @@
1
+ /target/
2
+ /dist/
3
+ .impeccable/
4
+ *.profraw
5
+ .DS_Store
@@ -0,0 +1,19 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project are documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [0.1.0] - 2026-08-24
9
+
10
+ ### Added
11
+
12
+ - Human-first commands and a responsive Ratatui interface for Microsoft Teams.
13
+ - Agent-first CLI Spec v0.3 schema, JSON envelopes, stable errors, and safe noninteractive behavior.
14
+ - Delegated Microsoft OAuth with browser PKCE, explicit device-code login, and OS-keyring credential storage.
15
+ - Commands for identity, joined teams, channels, chats, and reading or sending messages through Microsoft Graph.
16
+ - Guided onboarding, diagnostics, completions, bounded collections, and deterministic TUI snapshots.
17
+ - Distribution through crates.io, PyPI binary wheels, and signed GitHub release artifacts.
18
+
19
+ [0.1.0]: https://github.com/rvben/teams-cli/releases/tag/v0.1.0