gor-cli 0.2.0

A Rust CLI for GitHub — a 'gh' clone
Documentation
[workspace]
members = ["."]
resolver = "2"

[workspace.package]
version = "0.2.0"
edition = "2024"
rust-version = "1.86"
license = "MIT OR Apache-2.0"
repository = "https://github.com/kerryhatcher/gor"
documentation = "https://docs.rs/gor-cli"
homepage = "https://github.com/kerryhatcher/gor"

[workspace.dependencies]
clap = { version = "4", features = ["derive", "env"] }
clap_complete = "4"
reqwest = { version = "0.12", default-features = false, features = ["blocking", "json", "rustls-tls"] }
serde = { version = "1", features = ["derive"] }
serde_json = "1"
serde_yaml_ng = "0.10"
keyring = { version = "3", features = ["apple-native", "windows-native", "sync-secret-service"] }
thiserror = "2"
dirs = "5"
gix = { version = "0.85", default-features = false, features = ["basic", "sha1", "blocking-http-transport-reqwest-rust-tls", "worktree-mutation", "status"] }
anyhow = "1"
miette = "7"
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
indicatif = "0.17"
console = "0.15"

[workspace.lints.rust]
unsafe_code = "deny"
unused_qualifications = "warn"
rust_2018_idioms = { level = "warn", priority = -1 }

[workspace.lints.clippy]
pedantic = { level = "warn", priority = -1 }
nursery = { level = "warn", priority = -1 }
unwrap_used = "deny"
expect_used = "warn"
dbg_macro = "deny"
todo = "deny"
print_stdout = "warn"
print_stderr = "warn"
module_name_repetitions = "allow"
doc_markdown = "allow"
must_use_candidate = "allow"
too_many_lines = "allow"

[workspace.metadata.cargo-shear]
ignored = ["dirs", "gix", "miette", "indicatif", "console"]

# Package name is `gor-cli` because the `gor` name was already taken on
# crates.io (an unrelated VCS crate). The binary and lib are still named `gor`
# below, so users get a `gor` command and `use gor::` keeps working.
# ponytail: rename over vendoring/forking — crates.io has no namespacing.
[package]
name = "gor-cli"
version = { workspace = true }
edition = { workspace = true }
rust-version = { workspace = true }
license = { workspace = true }
repository = { workspace = true }
documentation = { workspace = true }
homepage = { workspace = true }
description = "A Rust CLI for GitHub — a 'gh' clone"
readme = "README.md"
keywords = ["github", "cli", "gh", "git"]
categories = ["command-line-utilities", "development-tools"]

[lib]
name = "gor"

[[bin]]
name = "gor"
path = "src/main.rs"

[lints]
workspace = true

[features]
default = []
keyring = ["dep:keyring"]

[dependencies]
clap = { workspace = true }
clap_complete = { workspace = true }
reqwest = { workspace = true }
serde = { workspace = true }
serde_json = { workspace = true }
serde_yaml_ng = { workspace = true }
keyring = { workspace = true, optional = true }
thiserror = { workspace = true }
dirs = { workspace = true }
gix = { workspace = true }
anyhow = { workspace = true }
miette = { workspace = true }
tracing = { workspace = true }
tracing-subscriber = { workspace = true }
indicatif = { workspace = true }
console = { workspace = true }

[dev-dependencies]
# Additional test dependencies for integration tests:
# - assert_cmd, assert_fs: CLI integration testing
# - insta: snapshot testing
# - tempfile: temporary file/directory fixtures
# - wiremock: HTTP mocking for GitHub API

[profile.release]
opt-level = "z"
lto = true
codegen-units = 1
strip = true
panic = "abort"