[package]
name = "git-iris"
version = "2.0.6"
edition = "2024"
authors = ["Stefanie Jane <stef@hyperbliss.tech>"]
description = "AI-powered Git workflow assistant for smart commits, code reviews, changelogs, and release notes"
readme = "README.md"
homepage = "https://github.com/hyperb1iss/git-iris"
repository = "https://github.com/hyperb1iss/git-iris"
license = "Apache-2.0"
keywords = ["git", "ai", "cli", "devtools", "productivity"]
categories = ["command-line-utilities", "development-tools"]
exclude = [
"docs/",
"docker/",
"homebrew/",
"aur/",
".github/",
"*.md",
"!README.md",
"CHANGELOG.md",
]
[lib]
name = "git_iris"
path = "src/lib.rs"
[[bin]]
name = "git-iris"
path = "src/main.rs"
[features]
integration = []
[dependencies]
anyhow = "1.0.86"
arboard = "3.4"
async-trait = "0.1.88"
chrono = { version = "0.4.38", features = ["serde"] }
clap = { version = "4.5.36", features = ["derive", "cargo"] }
clap_complete = "4.5"
colored = "3.0.0"
crossterm = "0.29"
dirs = "6.0.0"
futures = "0.3.30"
git2 = "0.20.1"
ignore = "0.4"
indicatif = "0.18.3"
log = "0.4.27"
notify = "8.0"
notify-debouncer-full = "0.6.0"
lru = "0.16.2"
parking_lot = "0.12.1"
pulldown-cmark = "0.13"
rand = "0.9.0"
opaline = { version = "0.2.0", features = ["ratatui", "gradients", "global-state", "builtin-themes", "discovery", "cli"] }
ratatui = "0.30.0"
regex = "1.10.6"
reqwest = { version = "0.12.15", features = ["json"] }
rig-core = { version = "0.27.0", features = ["derive"] }
schemars = "1.0"
serde = { version = "1.0.209", features = ["derive"] }
serde_json = "1.0.127"
strum = "0.27.1"
strum_macros = "0.27.1"
syntect = { version = "5.2", default-features = false, features = ["default-syntaxes", "default-themes", "regex-onig"] }
tempfile = "3.19.1"
textwrap = "0.16.1"
thiserror = "2.0.4"
tokio = { version = "1.44.2", features = ["full"] }
tokio-util = "0.7"
toml = "0.9.10"
tracing = "0.1.40"
tracing-subscriber = { version = "0.3.18", features = ["env-filter", "fmt", "time", "json", "chrono"] }
ratatui-textarea = "0.8.0"
unicode-width = "0.2"
url = "2.5.0"
uuid = { version = "1.11.0", features = ["v4", "serde"] }
[dev-dependencies]
dotenv = "0.15.0"
[lints.rust]
unsafe_code = "forbid"
missing_docs = { level = "allow", priority = 1 }
[lints.clippy]
all = { level = "deny", priority = 0 }
style = { level = "warn", priority = 1 }
perf = { level = "deny", priority = 1 }
pedantic = { level = "deny", priority = 10 }
missing_errors_doc = { level = "allow", priority = 20 }
missing_panics_doc = { level = "allow", priority = 20 }
missing_safety_doc = { level = "allow", priority = 20 }
module_name_repetitions = { level = "allow", priority = 21 }
significant_drop_tightening = { level = "allow", priority = 21 }
must_use_candidate = { level = "allow", priority = 21 }
cast_precision_loss = { level = "warn", priority = 22 }
cast_possible_truncation = { level = "warn", priority = 22 }
cast_sign_loss = { level = "warn", priority = 22 }
as_conversions = { level = "warn", priority = 22 }
out_of_bounds_indexing = { level = "deny", priority = 30 }
enum_glob_use = { level = "deny", priority = 30 }
unwrap_used = { level = "deny", priority = 30 }
undocumented_unsafe_blocks = { level = "deny", priority = 30 }
dbg_macro = { level = "warn", priority = 31 }
todo = { level = "warn", priority = 31 }
future_not_send = { level = "warn", priority = 32 }
async_yields_async = { level = "warn", priority = 32 }
implicit_clone = { level = "warn", priority = 33 }
inefficient_to_string = { level = "warn", priority = 33 }
string_lit_as_bytes = { level = "warn", priority = 33 }
too_many_lines = { level = "warn", priority = 34 }
cognitive_complexity = { level = "warn", priority = 34 }
result_large_err = { level = "warn", priority = 35 }
manual_let_else = { level = "warn", priority = 36 }
redundant_else = { level = "warn", priority = 36 }
semicolon_if_nothing_returned = { level = "warn", priority = 36 }
cloned_instead_of_copied = { level = "warn", priority = 36 }
flat_map_option = { level = "warn", priority = 36 }
from_iter_instead_of_collect = { level = "warn", priority = 36 }
needless_pass_by_value = { level = "warn", priority = 36 }
trivially_copy_pass_by_ref = { level = "warn", priority = 36 }
if_not_else = { level = "warn", priority = 36 }
match_same_arms = { level = "warn", priority = 36 }
needless_continue = { level = "warn", priority = 36 }
multiple_crate_versions = { level = "allow", priority = 40 }
[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]
[package.metadata.deb]
maintainer = "Stefanie Jane <stef@hyperbliss.tech>"
copyright = "2024, Git-Iris Contributors <https://github.com/hyperb1iss/git-iris>"
license-file = ["LICENSE", "4"]
extended-description = """
Git-Iris is an AI-powered tool designed to generate meaningful and context-aware Git commit messages.
"""
depends = "$auto"
section = "utility"
priority = "optional"
assets = [
[
"target/release/git-iris",
"usr/bin/",
"755",
],
[
"README.md",
"usr/share/doc/git-iris/README",
"644",
],
[
"git-iris.1",
"usr/share/man/man1/git-iris.1",
"644",
],
]
[package.metadata.generate-rpm]
assets = [
{ source = "target/release/git-iris", dest = "/usr/bin/git-iris", mode = "755" },
{ source = "README.md", dest = "/usr/share/doc/git-iris/README", mode = "644" },
{ source = "git-iris.1", dest = "/usr/share/man/man1/git-iris.1", mode = "644" },
]