[package]
edition = "2024"
rust-version = "1.85"
name = "codediff"
version = "0.0.9"
build = false
exclude = [
"research/**",
"src/bin/**",
"src/test/data/**",
]
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Fast, robust, syntax-aware code diffing using tree-sitter ASTs"
readme = "README.md"
keywords = [
"diff",
"ast",
"tree-sitter",
"cli",
"git",
]
categories = [
"command-line-utilities",
"development-tools",
"text-processing",
]
license = "AGPL-3.0-or-later"
repository = "https://github.com/ivankovic/codediff"
[features]
default = ["tui"]
stats = [
"dep:git2",
"dep:rusqlite",
"dep:crossbeam-channel",
"dep:libc",
"dep:num_cpus",
"dep:rand",
"dep:indoc",
"test-fixtures",
]
test-fixtures = [
"dep:csv",
"tui",
]
tui = [
"dep:ratatui",
"dep:crossterm",
"dep:tokio",
"dep:syntect",
"dep:two-face",
"dep:signal-hook",
"dep:confy",
]
[lib]
name = "codediff"
path = "src/lib.rs"
[[bin]]
name = "codediff"
path = "src/main.rs"
required-features = ["tui"]
[[bench]]
name = "diff_code_benchmark"
path = "benches/diff_code_benchmark.rs"
harness = false
[[bench]]
name = "hash_benchmark"
path = "benches/hash_benchmark.rs"
harness = false
[[bench]]
name = "optimal_iud_benchmark"
path = "benches/optimal_iud_benchmark.rs"
harness = false
[dependencies.anyhow]
version = "1.0.100"
[dependencies.clap]
version = "4.5.51"
features = ["derive"]
[dependencies.confy]
version = "2.0.0"
optional = true
[dependencies.crossbeam-channel]
version = "0.5.15"
optional = true
[dependencies.crossterm]
version = "0.27.0"
features = [
"serde",
"event-stream",
]
optional = true
[dependencies.csv]
version = "1.4.0"
optional = true
[dependencies.futures]
version = "0.3"
[dependencies.git2]
version = "0.20.3"
optional = true
[dependencies.indoc]
version = "2.0.7"
optional = true
[dependencies.libc]
version = "0.2"
optional = true
[dependencies.metrohash]
version = "1.0.7"
[dependencies.num_cpus]
version = "1.17.0"
optional = true
[dependencies.rand]
version = "0.8"
optional = true
[dependencies.ratatui]
version = "0.26.3"
features = [
"serde",
"macros",
]
optional = true
[dependencies.regex]
version = "1.12.2"
[dependencies.rusqlite]
version = "0.37.0"
features = ["bundled"]
optional = true
[dependencies.rustc-hash]
version = "2.1"
[dependencies.serde]
version = "1.0.228"
features = ["derive"]
[dependencies.serde_json]
version = "1.0"
[dependencies.signal-hook]
version = "0.4.4"
optional = true
[dependencies.strum]
version = "0.28.0"
features = ["derive"]
[dependencies.syntect]
version = "5.2"
features = ["default-fancy"]
optional = true
[dependencies.tempfile]
version = "3.10.1"
[dependencies.tokio]
version = "1.0"
features = ["full"]
optional = true
[dependencies.tracing]
version = "0.1.44"
[dependencies.tracing-error]
version = "0.2.1"
[dependencies.tracing-subscriber]
version = "0.3.23"
features = [
"env-filter",
"serde",
]
[dependencies.tree-sitter]
version = "0.25"
[dependencies.tree-sitter-bash]
version = "0.25"
[dependencies.tree-sitter-c]
version = "0.24"
[dependencies.tree-sitter-c-sharp]
version = "0.23"
[dependencies.tree-sitter-cpp]
version = "0.23"
[dependencies.tree-sitter-css]
version = "0.25"
[dependencies.tree-sitter-go]
version = "0.25"
[dependencies.tree-sitter-html]
version = "0.23"
[dependencies.tree-sitter-java]
version = "0.23"
[dependencies.tree-sitter-javascript]
version = "0.25"
[dependencies.tree-sitter-json]
version = "0.24"
[dependencies.tree-sitter-kotlin-ng]
version = "1.1"
[dependencies.tree-sitter-lua]
version = "0.2"
[dependencies.tree-sitter-php]
version = "0.24"
[dependencies.tree-sitter-python]
version = "0.25"
[dependencies.tree-sitter-r]
version = "1.2"
[dependencies.tree-sitter-ruby]
version = "0.23.1"
[dependencies.tree-sitter-rust]
version = "0.24"
[dependencies.tree-sitter-scala]
version = "0.24"
[dependencies.tree-sitter-swift]
version = "0.7"
[dependencies.tree-sitter-typescript]
version = "0.23"
[dependencies.tree-sitter-vim]
version = "0.4"
[dependencies.tree-sitter-xml]
version = "0.7.0"
[dependencies.tree-sitter-yaml]
version = "0.7"
[dependencies.two-face]
version = "0.5.2"
features = ["syntect-fancy"]
optional = true
default-features = false
[dependencies.walkdir]
version = "2"
[dev-dependencies.criterion]
version = "0.5"
features = ["html_reports"]
[dev-dependencies.insta]
version = "1.38.0"
[profile.release]
lto = "fat"
codegen-units = 1