Skip to content

Latest commit

 

History

History
47 lines (35 loc) · 1.79 KB

File metadata and controls

47 lines (35 loc) · 1.79 KB

Contributing to jira-cli

jira-cli is a Rust command-line tool for Jira Cloud users, CI systems, and AI agents. Contributions should keep the command surface predictable, scriptable, and safe for non-interactive automation.

Development Setup

rustup toolchain install stable
cargo fmt --all -- --check
cargo clippy --all-targets --all-features -- -D warnings
cargo test --all-targets --all-features
cargo audit
cargo build --release

Generated man pages are part of the user-facing command contract:

./target/release/jira completions man --dir /tmp/jira-man
test -s /tmp/jira-man/jira.1

Code Standards

  • Keep command behavior deterministic for CI and agents.
  • Prefer structured JSON APIs and typed parsing over ad hoc string handling.
  • Add focused tests near changed behavior; use wiremock for HTTP integration tests.
  • Never commit Jira tokens, OAuth client secrets, cookies, private issue data, or debug logs containing credentials.
  • Mutating commands should support --dry-run where practical and must respect --no-input.
  • Preserve stable JSON envelope fields unless the changelog documents a breaking change.

Pull Requests

  • Use a descriptive title and summary.
  • Link related issues or release blockers.
  • Include example commands or JSON output for command-surface changes.
  • Update README, docs, examples, completions, and man pages when user-facing behavior changes.
  • Keep PRs focused; unrelated refactors should be separate.

Release Changes

Release-impacting changes should verify:

  • CI workflow passes on Linux, macOS, and Windows.
  • Jira Cloud smoke workflow passes against the sandbox.
  • Release archives include the binary, README, LICENSE, CHANGELOG, completions, and man pages.
  • Homebrew and Scoop publishing jobs still know the expected archive names.