git-iris 0.9.1

AI-assisted Git workflow
Documentation
[package]
name = "git-iris"
version = "0.9.1"
edition = "2021"
authors = ["Stefanie Jane <stef@hyperbliss.tech>"]
description = "AI-assisted Git workflow"
readme = "README.md"
homepage = "https://github.com/hyperb1iss/git-iris"
repository = "https://github.com/hyperb1iss/git-iris"
license = "Apache-2.0"
keywords = ["git", "commit", "ai", "cli"]
categories = ["command-line-utilities", "development-tools"]


[dependencies]
clap = { version = "4.5.16", features = ["derive", "cargo"] }
tokio = { version = "1.39.3", features = ["full"] }
reqwest = { version = "0.12.7", features = ["json"] }
serde = { version = "1.0.209", features = ["derive"] }
serde_json = "1.0.127"
anyhow = "1.0.86"
toml = "0.8.19"
dirs = "5.0.1"
regex = "1.10.6"
colored = "2.1.0"
console = "0.15.8"
tempfile = "3.12.0"
git2 = "0.19.0"
indicatif = "0.17.8"
async-trait = "0.1.81"
lazy_static = "1.5.0"
chrono = "0.4.38"
once_cell = "1.19.0"
textwrap = "0.16.1"
rand = "0.8.5"
unicode-width = "0.1.13"
tiktoken-rs = "0.5.9"
strum = "0.26.3"
strum_macros = "0.26.4"
ratatui = "0.28.0"
tui-textarea = "0.6.1"
crossterm = "0.28.1"
tokio-retry = "0.3.0"
log = "0.4.22"
futures = "0.3.30"
schemars = "0.8.21"

[dev-dependencies]
dotenv = "0.15.0"

[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" },
]

[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]

[lib]
name = "git_iris"
path = "src/lib.rs"

[[bin]]
name = "git-iris"
path = "src/main.rs"

[features]
integration = []

[lints.rust]
unsafe_code = "forbid"
missing_docs = { level = "allow", priority = 1 }

[lints.clippy]
# Base lint groups
all = { level = "deny", priority = 0 }
style = { level = "warn", priority = 1 }
perf = { level = "deny", priority = 1 }

# Pedantic lints
pedantic = { level = "deny", priority = 10 }

# Documentation allowances
missing_errors_doc = { level = "allow", priority = 20 }
missing_panics_doc = { level = "allow", priority = 20 }
missing_safety_doc = { level = "allow", priority = 20 }

# Code style allowances - These remain allowed for pragmatic reasons
module_name_repetitions = { level = "allow", priority = 21 }
significant_drop_tightening = { level = "allow", priority = 21 }
must_use_candidate = { level = "allow", priority = 21 }

# Numeric casting and conversion warnings
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 }

# Safety-critical denials
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 }

# Future considerations
#expect_used = { level = "deny", priority = 30 }
#todo = { level = "warn", priority = 20 }           # Consider warning on TODOs
#dbg_macro = { level = "warn", priority = 30 }      # Consider warning on dbg! macro usage
#print_stdout = { level = "warn", priority = 30 }   # Consider warning on print!/println! usage