jira-cli-rs 0.3.9__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,69 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ workflow_dispatch:
8
+
9
+ concurrency:
10
+ group: ${{ github.workflow }}-${{ github.ref }}
11
+ cancel-in-progress: true
12
+
13
+ jobs:
14
+ lint:
15
+ name: Lint
16
+ runs-on: ubuntu-latest
17
+ steps:
18
+ - uses: actions/checkout@v4
19
+
20
+ - uses: dtolnay/rust-toolchain@stable
21
+ with:
22
+ components: rustfmt, clippy
23
+
24
+ - name: Run linting
25
+ run: make lint
26
+
27
+ test:
28
+ name: Test
29
+ runs-on: ubuntu-latest
30
+ steps:
31
+ - uses: actions/checkout@v4
32
+
33
+ - uses: dtolnay/rust-toolchain@stable
34
+
35
+ - uses: taiki-e/install-action@v2
36
+ with:
37
+ tool: nextest
38
+
39
+ - name: Run tests
40
+ run: make test
41
+
42
+ coverage:
43
+ name: Coverage
44
+ runs-on: ubuntu-latest
45
+ steps:
46
+ - uses: actions/checkout@v4
47
+ - uses: dtolnay/rust-toolchain@stable
48
+ - uses: taiki-e/install-action@cargo-tarpaulin
49
+ - name: Generate coverage
50
+ run: cargo tarpaulin --out xml
51
+ - name: Upload to Codecov
52
+ uses: codecov/codecov-action@v5
53
+ with:
54
+ files: cobertura.xml
55
+ token: ${{ secrets.CODECOV_TOKEN }}
56
+
57
+ all-checks-passed:
58
+ name: All checks passed
59
+ runs-on: ubuntu-latest
60
+ needs: [lint, test]
61
+ if: always()
62
+ steps:
63
+ - name: Verify all checks passed
64
+ run: |
65
+ if [ "${{ contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') }}" == "true" ]; then
66
+ echo "Some checks failed or were cancelled"
67
+ exit 1
68
+ fi
69
+ echo "All checks passed"
@@ -0,0 +1,244 @@
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 (skip publishing)'
11
+ required: false
12
+ default: true
13
+ type: boolean
14
+ skip_crates_io:
15
+ description: 'Skip crates.io publish'
16
+ required: false
17
+ default: false
18
+ type: boolean
19
+ skip_pypi:
20
+ description: 'Skip PyPI publish'
21
+ required: false
22
+ default: false
23
+ type: boolean
24
+
25
+ permissions:
26
+ contents: write
27
+
28
+ jobs:
29
+ test:
30
+ runs-on: ubuntu-latest
31
+ steps:
32
+ - uses: actions/checkout@v4
33
+ - uses: dtolnay/rust-toolchain@stable
34
+ - uses: taiki-e/install-action@v2
35
+ with:
36
+ tool: nextest
37
+ - run: cargo check --locked
38
+ - run: make test
39
+
40
+ build:
41
+ needs: test
42
+ strategy:
43
+ matrix:
44
+ include:
45
+ - target: x86_64-unknown-linux-gnu
46
+ os: ubuntu-latest
47
+ - target: aarch64-unknown-linux-gnu
48
+ os: ubuntu-latest
49
+ - target: x86_64-apple-darwin
50
+ os: macos-latest
51
+ - target: aarch64-apple-darwin
52
+ os: macos-latest
53
+ runs-on: ${{ matrix.os }}
54
+ steps:
55
+ - uses: actions/checkout@v4
56
+ - uses: dtolnay/rust-toolchain@stable
57
+ with:
58
+ targets: ${{ matrix.target }}
59
+ - name: Install cross-compilation tools
60
+ if: matrix.target == 'aarch64-unknown-linux-gnu'
61
+ run: |
62
+ sudo apt-get update
63
+ sudo apt-get install -y gcc-aarch64-linux-gnu
64
+ - name: Install maturin and zig
65
+ run: pip install maturin ziglang
66
+ - name: Build wheel
67
+ shell: bash
68
+ run: |
69
+ case "${{ matrix.target }}" in
70
+ *-gnu)
71
+ maturin build --release --target ${{ matrix.target }} --zig
72
+ ;;
73
+ *)
74
+ maturin build --release --target ${{ matrix.target }}
75
+ ;;
76
+ esac
77
+ - name: Build binary
78
+ run: cargo build --release --target ${{ matrix.target }}
79
+ env:
80
+ CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER: aarch64-linux-gnu-gcc
81
+ - name: Verify binary
82
+ if: ${{ !contains(matrix.target, 'aarch64-unknown-linux') }}
83
+ run: ./target/${{ matrix.target }}/release/jira --version
84
+ - name: Package binary
85
+ run: |
86
+ ARCHIVE_NAME="jira-cli-${{ github.ref_name }}-${{ matrix.target }}"
87
+ mkdir -p "${ARCHIVE_NAME}"
88
+ cp "target/${{ matrix.target }}/release/jira" "${ARCHIVE_NAME}/"
89
+ tar czf "${ARCHIVE_NAME}.tar.gz" "${ARCHIVE_NAME}"
90
+ shasum -a 256 "${ARCHIVE_NAME}.tar.gz" > "${ARCHIVE_NAME}.tar.gz.sha256"
91
+ - uses: actions/upload-artifact@v4
92
+ with:
93
+ name: release-${{ matrix.target }}
94
+ path: |
95
+ jira-cli-*.tar.gz
96
+ jira-cli-*.tar.gz.sha256
97
+ target/wheels/*.whl
98
+
99
+ sdist:
100
+ needs: test
101
+ runs-on: ubuntu-latest
102
+ steps:
103
+ - uses: actions/checkout@v4
104
+ - name: Install maturin
105
+ run: pip install maturin
106
+ - name: Build sdist
107
+ run: maturin sdist
108
+ - uses: actions/upload-artifact@v4
109
+ with:
110
+ name: sdist
111
+ path: target/wheels/*.tar.gz
112
+
113
+ release:
114
+ needs: [build, sdist]
115
+ runs-on: ubuntu-latest
116
+ steps:
117
+ - uses: actions/checkout@v4
118
+ - uses: actions/download-artifact@v4
119
+ with:
120
+ path: /tmp/artifacts
121
+ - uses: dtolnay/rust-toolchain@stable
122
+
123
+ - name: Publish to crates.io
124
+ if: ${{ !inputs.dry_run && !inputs.skip_crates_io }}
125
+ run: cargo publish --locked
126
+ env:
127
+ CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
128
+
129
+ - name: Test crates.io publish (dry run)
130
+ if: ${{ inputs.dry_run == true && inputs.skip_crates_io != true }}
131
+ run: |
132
+ echo "DRY RUN: Would publish to crates.io"
133
+ cargo publish --dry-run --locked
134
+
135
+ - name: Skip crates.io publishing
136
+ if: ${{ inputs.skip_crates_io == true }}
137
+ run: echo "Skipping crates.io publishing as requested"
138
+
139
+ - name: Install uv
140
+ uses: astral-sh/setup-uv@v6
141
+
142
+ - name: Publish to PyPI
143
+ if: ${{ !inputs.dry_run && !inputs.skip_pypi }}
144
+ run: uv publish /tmp/artifacts/release-*/*.whl /tmp/artifacts/sdist/*.tar.gz
145
+ env:
146
+ UV_PUBLISH_TOKEN: ${{ secrets.PYPI_API_TOKEN }}
147
+
148
+ - name: Create GitHub Release
149
+ if: ${{ !inputs.dry_run }}
150
+ run: |
151
+ gh release create ${{ github.ref_name }} \
152
+ --title "${{ github.ref_name }}" \
153
+ --generate-notes \
154
+ /tmp/artifacts/release-*/*.tar.gz \
155
+ /tmp/artifacts/release-*/*.sha256
156
+ env:
157
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
158
+
159
+ - name: Dry Run Summary
160
+ if: ${{ inputs.dry_run == true }}
161
+ run: |
162
+ echo "Dry run complete. Artifacts built but nothing published."
163
+ echo "Archives:"
164
+ find /tmp/artifacts/release-* -type f | sort
165
+
166
+ update-homebrew:
167
+ needs: release
168
+ if: ${{ inputs.dry_run != true }}
169
+ runs-on: ubuntu-latest
170
+ steps:
171
+ - uses: actions/download-artifact@v4
172
+ with:
173
+ path: /tmp/artifacts
174
+
175
+ - name: Compute SHA256 hashes
176
+ id: hashes
177
+ run: |
178
+ for target in x86_64-apple-darwin aarch64-apple-darwin x86_64-unknown-linux-gnu aarch64-unknown-linux-gnu; do
179
+ sha=$(cat /tmp/artifacts/release-${target}/jira-cli-${{ github.ref_name }}-${target}.tar.gz.sha256 | awk '{print $1}')
180
+ key=$(echo "${target}" | tr '-' '_')
181
+ echo "${key}=${sha}" >> "$GITHUB_OUTPUT"
182
+ done
183
+
184
+ - name: Update Homebrew formula
185
+ env:
186
+ GH_TOKEN: ${{ secrets.HOMEBREW_TAP_TOKEN }}
187
+ run: |
188
+ VERSION="${{ github.ref_name }}"
189
+ VERSION_NUM="${VERSION#v}"
190
+
191
+ cat > /tmp/jira-cli.rb << 'FORMULA'
192
+ class JiraCli < Formula
193
+ desc "CLI for Jira"
194
+ homepage "https://github.com/rvben/jira-cli"
195
+ version "VERSION_NUM"
196
+ license "MIT"
197
+
198
+ on_macos do
199
+ if Hardware::CPU.arm?
200
+ url "https://github.com/rvben/jira-cli/releases/download/VERSION/jira-cli-VERSION-aarch64-apple-darwin.tar.gz"
201
+ sha256 "SHA_AARCH64_APPLE_DARWIN"
202
+ else
203
+ url "https://github.com/rvben/jira-cli/releases/download/VERSION/jira-cli-VERSION-x86_64-apple-darwin.tar.gz"
204
+ sha256 "SHA_X86_64_APPLE_DARWIN"
205
+ end
206
+ end
207
+
208
+ on_linux do
209
+ if Hardware::CPU.arm?
210
+ url "https://github.com/rvben/jira-cli/releases/download/VERSION/jira-cli-VERSION-aarch64-unknown-linux-gnu.tar.gz"
211
+ sha256 "SHA_AARCH64_UNKNOWN_LINUX_GNU"
212
+ else
213
+ url "https://github.com/rvben/jira-cli/releases/download/VERSION/jira-cli-VERSION-x86_64-unknown-linux-gnu.tar.gz"
214
+ sha256 "SHA_X86_64_UNKNOWN_LINUX_GNU"
215
+ end
216
+ end
217
+
218
+ def install
219
+ bin.install "jira"
220
+ end
221
+
222
+ test do
223
+ system "#{bin}/jira", "--version"
224
+ end
225
+ end
226
+ FORMULA
227
+
228
+ sed -i "s/VERSION_NUM/${VERSION_NUM}/g" /tmp/jira-cli.rb
229
+ sed -i "s/VERSION/${VERSION}/g" /tmp/jira-cli.rb
230
+ sed -i "s/SHA_AARCH64_APPLE_DARWIN/${{ steps.hashes.outputs.aarch64_apple_darwin }}/g" /tmp/jira-cli.rb
231
+ sed -i "s/SHA_X86_64_APPLE_DARWIN/${{ steps.hashes.outputs.x86_64_apple_darwin }}/g" /tmp/jira-cli.rb
232
+ sed -i "s/SHA_AARCH64_UNKNOWN_LINUX_GNU/${{ steps.hashes.outputs.aarch64_unknown_linux_gnu }}/g" /tmp/jira-cli.rb
233
+ sed -i "s/SHA_X86_64_UNKNOWN_LINUX_GNU/${{ steps.hashes.outputs.x86_64_unknown_linux_gnu }}/g" /tmp/jira-cli.rb
234
+
235
+ # Clone tap repo, update formula, push
236
+ git clone https://x-access-token:${GH_TOKEN}@github.com/rvben/homebrew-tap.git /tmp/tap
237
+ mkdir -p /tmp/tap/Formula
238
+ cp /tmp/jira-cli.rb /tmp/tap/Formula/jira-cli.rb
239
+ cd /tmp/tap
240
+ git config user.name "github-actions[bot]"
241
+ git config user.email "github-actions[bot]@users.noreply.github.com"
242
+ git add Formula/jira-cli.rb
243
+ git diff --cached --quiet || git commit -m "Update jira-cli to ${VERSION}"
244
+ git push
@@ -0,0 +1,5 @@
1
+ /target
2
+ CLAUDE.md
3
+ CLAUDE.local.md
4
+ AGENTS.md
5
+ docker/backup/
@@ -0,0 +1,96 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/).
6
+
7
+
8
+
9
+
10
+
11
+
12
+
13
+
14
+
15
+
16
+
17
+
18
+
19
+ ## [0.3.9](https://github.com/rvben/jira-cli/compare/v0.3.8...v0.3.9) - 2026-04-08
20
+
21
+ ### Added
22
+
23
+ - publish to PyPI as jira-cli-rs ([8f5370a](https://github.com/rvben/jira-cli/commit/8f5370a26bd9b162be95c7f5e78a47a6771fd9a8))
24
+
25
+ ## [0.3.8](https://github.com/rvben/jira-cli/compare/v0.3.7...v0.3.8) - 2026-04-07
26
+
27
+ ### Added
28
+
29
+ - `jira issue PROJ-123` falls through to `issues show` ([3764b1f](https://github.com/rvben/jira-cli/commit/3764b1f746a60bd853677b7d38a32d014002c5fe))
30
+ - add singular aliases for all subcommand groups ([2d05eea](https://github.com/rvben/jira-cli/commit/2d05eea6fa74ae5ee1ddadf169a54afa43d1490d))
31
+
32
+ ### Fixed
33
+
34
+ - schema tests acquire env lock to prevent XDG_CONFIG_HOME leakage ([204b794](https://github.com/rvben/jira-cli/commit/204b79422741328a81be0b70744a8a9078e8eb4b))
35
+
36
+ ## [0.3.7](https://github.com/rvben/jira-cli/compare/v0.3.6...v0.3.7) - 2026-04-03
37
+
38
+ ### Added
39
+
40
+ - add top-level `issue` command as shortcut for `issues show` ([788bcc4](https://github.com/rvben/jira-cli/commit/788bcc4722b5a23d1fb11d08fdfabf814e2c53f5))
41
+
42
+ ## [0.3.6](https://github.com/rvben/jira-cli/compare/v0.3.5...v0.3.6) - 2026-04-03
43
+
44
+ ## [0.3.5](https://github.com/rvben/jira-cli/compare/v0.3.4...v0.3.5) - 2026-04-03
45
+
46
+ ## [0.3.4](https://github.com/rvben/jira-cli/compare/v0.3.3...v0.3.4) - 2026-04-01
47
+
48
+ ### Added
49
+
50
+ - add read-only mode via JIRA_READ_ONLY env var and config field ([68e15a3](https://github.com/rvben/jira-cli/commit/68e15a353c5000488516ccc929597c6da5df7929))
51
+
52
+ ## [0.3.3](https://github.com/rvben/jira-cli/compare/v0.3.2...v0.3.3) - 2026-03-31
53
+
54
+ ### Fixed
55
+
56
+ - **config**: show token in plain text during init ([fd62572](https://github.com/rvben/jira-cli/commit/fd6257201119664fa280e0d3b8d30983450cac23))
57
+
58
+ ## [0.3.2](https://github.com/rvben/jira-cli/compare/v0.3.1...v0.3.2) - 2026-03-31
59
+
60
+ ### Added
61
+
62
+ - **config**: interactive init wizard and profile removal ([1db53db](https://github.com/rvben/jira-cli/commit/1db53dbaf75c65d0d0ae3fcde9de6e3b878ed8a8))
63
+
64
+ ## [0.3.1](https://github.com/rvben/jira-cli/compare/v0.3.0...v0.3.1) - 2026-03-30
65
+
66
+ ### Fixed
67
+
68
+ - simplify mount_board_and_sprints to async fn per clippy lint ([37e094b](https://github.com/rvben/jira-cli/commit/37e094b6fe2c1c6f8602c3faccaea1d8adcfbb73))
69
+
70
+ ## [0.3.0](https://github.com/rvben/jira-cli/compare/v0.2.0...v0.3.0) - 2026-03-30
71
+
72
+ ### Added
73
+
74
+ - **issues**: add worklog, bulk ops, and subtask support ([5383672](https://github.com/rvben/jira-cli/commit/53836728887f079934ed793a7be96665e9b152be))
75
+
76
+ ## [0.2.0](https://github.com/rvben/jira-cli/compare/v0.1.0...v0.2.0) - 2026-03-30
77
+
78
+ ### Added
79
+
80
+ - **issues**: add --all pagination, issues mine, and issues comments ([725def7](https://github.com/rvben/jira-cli/commit/725def78a7580e43a27473951ece76024050b82a))
81
+ - add users, boards, sprints, fields, issue links, and sprint assignment ([639fb26](https://github.com/rvben/jira-cli/commit/639fb2641a6ab744c66204f1b305c6e7b402b65d))
82
+ - improve config init output with DC/Server PAT instructions ([0193584](https://github.com/rvben/jira-cli/commit/01935847c8e02c50fba48864af9cc6edb554b2ce))
83
+ - add Jira Data Center / Server support ([f654ef3](https://github.com/rvben/jira-cli/commit/f654ef3c399f54b326ee0cdafe085caafd4b8327))
84
+
85
+ ## [0.1.0](https://github.com/rvben/jira-cli/compare/v0.0.2...v0.1.0) - 2026-03-30
86
+
87
+ ## [0.0.2] - 2026-03-30
88
+
89
+ ### Added
90
+
91
+ - initial release of jira CLI ([e5f730b](https://github.com/rvben/jira-cli/commit/e5f730ba424a2b753d333fa389f0c3491d6f6402))
92
+
93
+ ### Fixed
94
+
95
+ - align config bootstrap and schema contract ([a316125](https://github.com/rvben/jira-cli/commit/a316125cb243e209ecacf59af96980fbb4eace21))
96
+ - harden jira api behavior and pagination ([64956bf](https://github.com/rvben/jira-cli/commit/64956bfe702f094002d65cf476ddc01175283245))