diffr-cli 0.1.1

Structural diffs with a streaming API and interactive terminal frontend.
[package]
name = "diffr-cli"
description = "Structural diffs with a streaming API and interactive terminal frontend."
repository = "https://github.com/devdotfast/diffr"
homepage = "https://github.com/devdotfast/diffr"
license = "MIT"
version = "0.1.1"
authors = ["dev.fast"]
keywords = ["diff", "syntax"]
categories = ["development-tools", "command-line-utilities", "parser-implementations"]
edition = "2021"
# Goal: support at least 12 months of Rust versions, and be
# conservative about upgrades to help packagers.
#
# https://releases.rs/ is a useful website to see when different Rust
# versions were released.
#
# For reference, Debian stable is on 1.85 (see
# https://tracker.debian.org/pkg/rustc) but Debian doesn't currently
# package difftastic. Other distros are somewhat newer.
rust-version = "1.85.0"

include = [
        "/build.rs",
        "/src/",
        "/wit/",
        "/plugins/",
        "/vendored_parsers/highlights/*.scm",
        "/vendored_parsers/*-src/**/*.c",
        "/vendored_parsers/*-src/**/*.h",
        "/LICENSE",
        "/README.md",
]

[dependencies]
git2 = { version = "0.20", default-features = false }
regex = "1.10.4"
clap = { version = "4.0.0", features = ["cargo", "env", "wrap_help", "string"] }
typed-arena = "2.0.2"
rustc-hash = "2.0.0"
strsim = "0.11.0"
lazy_static = "1.4.0"
libc = "0.2.108"
log = "0.4.14"
pretty_env_logger = "0.5.0"

radix-heap = "0.4.2"
imara-diff = { version = "0.2.0", default-features = false }
rayon = "1.7.0"
tokio = { version = "1", default-features = false, features = ["rt-multi-thread", "time", "sync"] }
tree_magic_mini = "3.2.0"

bumpalo = "3.18.0"
terminal_size = "0.4.1"
glob = "0.3.2"
strum = { version = "0.28", features = ["derive"] }
hashbrown = "0.17.0"
humansize = "2.1.3"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
anyhow = "1.0"
line-numbers = "0.3.0"
smallvec = "1.13.2"
streaming-iterator = "0.1.9"
encoding_rs = "0.8.35"

# tree-sitter itself.
#
# Note that tree-sitter 0.26.11 is currently not compatible with
# tree-sitter-solidity: https://github.com/JoranHonig/tree-sitter-solidity/pull/80
tree-sitter = "0.26.10"
tree-sitter-language = "0.1.7"

# tree-sitter parsers that are available on crates.io.
tree-sitter-ada = "0.1.0"
tree-sitter-asm = "0.24.0"
tree-sitter-bash = "0.25.1"
tree-sitter-c = "0.24"
tree-sitter-c-sharp = "0.23.1"
tree-sitter-clojure-orchard = "0.2.5"
tree-sitter-cmake = "0.7.1"
tree-sitter-containerfile = "0.8.0"
tree-sitter-commonlisp = "0.4.1"
tree-sitter-cpp = "0.23.4"
tree-sitter-css = "0.25.0"
tree-sitter-dart-orchard = "0.5.0"
tree-sitter-devicetree = "0.14.1"
tree-sitter-elisp = "1.7.0"
tree-sitter-elixir = "0.3.4"
tree-sitter-elm = "5.8.0"
tree-sitter-erlang = "0.20.0"
tree-sitter-fish = "3.6.0"
tree-sitter-fortran = "0.6.0"
tree-sitter-fsharp = "0.3.0"
tree-sitter-gleam = "1.0.0"
tree-sitter-go = "0.25.0"
tree-sitter-haskell = "0.23.1"
tree-sitter-hcl = "1.1.0"
tree-sitter-html = "0.23.2"
tree-sitter-java-orchard = "0.5.9"
tree-sitter-javascript = "0.25.0"
tree-sitter-json = "0.24.8"
tree-sitter-julia = "0.23.1"
tree-sitter-lua = "0.5"
tree-sitter-make = "1.1.1"
tree-sitter-newick = "1.1.0"
tree-sitter-nix = "0.3.0"
tree-sitter-objc = "3.0.2"
tree-sitter-ocaml = "0.25.0"
tree-sitter-pascal = "0.10.0"
tree-sitter-php = "0.24.0"
tree-sitter-proto = "0.4.0"
tree-sitter-python = "0.25.0"
tree-sitter-qmljs = "0.3.0"
tree-sitter-r = "1.2.0"
tree-sitter-racket = "0.24.7"
tree-sitter-ruby = "0.23.1"
tree-sitter-rust-orchard = "0.16.6"
tree-sitter-scala = "0.26.2"
tree-sitter-scheme = "0.24.7"
tree-sitter-sequel = "0.3.11"
tree-sitter-sfapex = "2.4.0"
tree-sitter-solidity = "1.2.13"
tree-sitter-swift = "0.7.1"
tree-sitter-toml-ng = "0.7.0"
tree-sitter-typescript = "0.23.2"
tree-sitter-verilog = "1.0.3"
tree-sitter-vhdl = "1.4.0"
tree-sitter-xml = "0.7.0"
tree-sitter-yaml = "0.7.0"
tree-sitter-zig = "1.1.2"
ts-parser-perl = "1.2.0"
toml = { version = "0.8", default-features = false, features = ["display", "parse"] }
serde_path_to_error = "0.1.20"
schemars = { version = "1.2.2", features = ["preserve_order"] }
dirs = "5"
toml_edit = "0.25.15"
reqwest = { version = "0.13", default-features = false, features = ["rustls", "json", "http2"] }
serde_yaml_ng = "0.10.0"
jsonschema = { version = "0.56.0", default-features = false }
# WASM component plugins. Wasmtime 34 is the newest release whose
# rust-version (1.85) matches ours.
wasmtime = { version = "34.0.2", default-features = false, features = ["runtime", "cranelift", "component-model", "cache", "parallel-compilation", "std"] }
wasmtime-wasi = { version = "34.0.2", default-features = false }
# The byte buffer a guest's output stream is handed, wasmtime-wasi's own.
bytes = "1.12"
# The plugin contract, and the bundled plugins: each a crate the native
# registry calls, which also builds as a WASM component.
diffr-plugin-sdk = { path = "crates/diffr-plugin-sdk", version = "0.1.1" }
diffr-plugin-context = { path = "plugins/context", version = "0.1.1" }
diffr-plugin-deleted-bodies = { path = "plugins/deleted-bodies", version = "0.1.1" }
diffr-plugin-group = { path = "plugins/group", version = "0.1.1" }
diffr-plugin-hide-files = { path = "plugins/hide-files", version = "0.1.1" }
diffr-plugin-removed-runs = { path = "plugins/removed-runs", version = "0.1.1" }
diffr-plugin-summarize = { path = "plugins/summarize", version = "0.1.1" }
diffr-plugin-test-bodies = { path = "plugins/test-bodies", version = "0.1.1" }
wasmtime-wasi-http = { version = "34.0.2", default-features = false }


[target.'cfg(not(any(windows, target_os = "illumos", target_os = "freebsd")))'.dependencies]
tikv-jemallocator = "0.7"

[dev-dependencies]
assert_cmd = "2.0.17"
predicates = "3.1.3"

pretty_assertions = "1.3.0"
tempfile = "3.27.0"

[build-dependencies]
toml = "0.8"
# TODO: enable parallel mode, see discussion in
# https://github.com/rust-lang/cc-rs/pull/849
cc = "1.2.48"
rayon = "1.7.0"
version_check = "0.9.4"

[workspace]
members = [
    "xtask",
	"crates/diffr-plugin-sdk",
	"plugins/context",
	"plugins/deleted-bodies",
	"plugins/group",
	"plugins/hide-files",
	"plugins/removed-runs",
	"plugins/summarize",
	"plugins/test-bodies",
	"examples/plugins/fixtures",
]
default-members = [
	".",
	"crates/diffr-plugin-sdk",
	"plugins/context",
	"plugins/deleted-bodies",
	"plugins/group",
	"plugins/hide-files",
	"plugins/removed-runs",
	"plugins/summarize",
	"plugins/test-bodies",
	"examples/plugins/fixtures",
]

[workspace.metadata.diffr]
wasm-test-exclude = []

[profile.release]
lto = "thin"

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

[package.metadata.binstall]
# Tags have no "v" prefix; binaries sit at the archive root.
pkg-url = "{ repo }/releases/download/{ version }/diffr-{ version }-{ target }{ archive-suffix }"
pkg-fmt = "tgz"
bin-dir = "{ bin }{ binary-ext }"

[package.metadata.deb]
depends = "$auto"
section = "utility"
priority = "optional"
assets = [
	"$auto",
	[ "diffr.1", "usr/share/man/man1/", "644" ],
	[ "CHANGELOG.md", "usr/share/doc/difftastic/", "644" ],
]

# The component tests build every plugin for wasm32-wasip2, so they run only
# where that target is installed: `cargo test --features wasm-plugin-tests`,
# and the Linux job in CI.
[[test]]
name = "wasm"
required-features = ["wasm-plugin-tests"]

[features]
wasm-plugin-tests = []