[package]
name = "heddle-cli"
version.workspace = true
edition.workspace = true
authors.workspace = true
description.workspace = true
license.workspace = true
repository.workspace = true
keywords.workspace = true
categories.workspace = true
readme = "../../README.md"
exclude = [
"tests/realworld_git/fixtures/*",
"tests/snapshots/**/*",
]
[dependencies]
anyhow.workspace = true
base64.workspace = true
biscuit-auth = { workspace = true, optional = true }
blake3.workspace = true
bytes = { workspace = true, optional = true }
chrono.workspace = true
clap.workspace = true
clap_complete.workspace = true
futures.workspace = true
hex.workspace = true
ignore.workspace = true
iroh = { workspace = true, optional = true }
iroh-base = { workspace = true, optional = true }
libc.workspace = true
n0-watcher = { workspace = true, optional = true }
noq-udp = { workspace = true, optional = true }
objects = { path = "../objects", package = "heddle-objects", version = "0.11", features = ["memory-backend"] }
crypto = { path = "../crypto", package = "heddle-crypto", version = "0.11" }
daemon = { path = "../daemon", package = "heddle-daemon", version = "0.11" }
merge = { path = "../merge", package = "heddle-merge", version = "0.11" }
api = { package = "heddle-api", version = "0.2.1" }
cli-shared = { path = "../cli-shared", package = "heddle-cli-shared", version = "0.11" }
heddle-cli-args = { path = "../cli-args", version = "0.11", default-features = false }
heddle-cli-contract = { path = "../cli-contract", version = "0.11", default-features = false }
heddle-cli-render = { path = "../cli-render", version = "0.11", default-features = false }
heddle-core = { path = "../core", version = "0.11", default-features = false }
heddle-format = { path = "../format", version = "0.11" }
weft-client-shim = { path = "../weft-client-shim", package = "weft-client-shim", version = "0.11" }
async-trait.workspace = true
ingest = { path = "../ingest", package = "heddle-ingest", version = "0.11", default-features = false }
heddle-git-projection = { path = "../git-projection", version = "0.11", default-features = false }
oplog = { path = "../oplog", package = "heddle-oplog", version = "0.11" }
wire = { path = "../wire", package = "heddle-wire", version = "0.11", default-features = false }
refs = { path = "../refs", package = "heddle-refs", version = "0.11" }
repo = { path = "../repo", package = "heddle-repo", version = "0.11", default-features = false }
semantic = { path = "../semantic", package = "heddle-semantic", version = "0.11", optional = true }
notify.workspace = true
opentelemetry = { workspace = true, optional = true }
opentelemetry-otlp = { workspace = true, optional = true }
opentelemetry_sdk = { workspace = true, optional = true }
prost.workspace = true
prost-types.workspace = true
rand = { workspace = true, optional = true }
reqwest = { workspace = true, optional = true }
rmp-serde.workspace = true
schemars.workspace = true
serde.workspace = true
serde_json.workspace = true
sha2.workspace = true
sley.workspace = true
tempfile.workspace = true
thiserror.workspace = true
tokio.workspace = true
tokio-stream = { workspace = true, optional = true }
tokio-tungstenite = { workspace = true, optional = true }
toml.workspace = true
uuid = { workspace = true, features = ["v5"] }
rustls.workspace = true
tracing.workspace = true
tracing-opentelemetry = { workspace = true, optional = true }
tracing-subscriber.workspace = true
walkdir.workspace = true
webpki-roots = { workspace = true, optional = true }
[target.'cfg(target_os = "linux")'.dependencies]
mount = { path = "../mount", package = "heddle-mount", version = "0.11", optional = true }
[target.'cfg(target_os = "macos")'.dependencies]
mount = { path = "../mount", package = "heddle-mount", version = "0.11", optional = true }
[target.'cfg(target_os = "windows")'.dependencies]
mount = { path = "../mount", package = "heddle-mount", version = "0.11", optional = true }
[features]
default = ["git-overlay", "native", "local", "mount", "semantic", "zstd", "client"]
local = []
git-overlay = [
"repo/git-overlay",
"ingest",
"heddle-cli-args/git-overlay",
"heddle-cli-contract/git-overlay",
]
native = ["repo/native"]
client = [
"api/reflection",
"dep:biscuit-auth",
"dep:bytes",
"dep:iroh",
"dep:iroh-base",
"dep:n0-watcher",
"dep:noq-udp",
"dep:rand",
"dep:reqwest",
"dep:tokio-stream",
"dep:tokio-tungstenite",
"dep:webpki-roots",
"heddle-cli-args/client",
"heddle-cli-contract/client",
"heddle-cli-render/client",
]
ingest = ["heddle-cli-args/ingest", "heddle-cli-contract/ingest"]
semantic = [
"dep:semantic",
"heddle-cli-args/semantic",
"heddle-cli-contract/semantic",
"heddle-core/semantic",
"repo/tree-sitter-symbols",
]
semantic-extended = ["semantic", "heddle-core/semantic-extended", "semantic?/extended-languages"]
observability = [
"cli-shared/observability",
"dep:opentelemetry",
"dep:opentelemetry-otlp",
"dep:opentelemetry_sdk",
"dep:tracing-opentelemetry",
]
zstd = [
"objects/zstd",
"wire/zstd",
"repo/zstd",
"ingest/zstd",
"heddle-git-projection/zstd",
"heddle-core/zstd",
]
mount = [
"dep:mount",
"mount?/fuse",
"mount?/fskit",
"mount?/projfs",
"mount?/nfs",
]
[dev-dependencies]
criterion = "0.8"
heddle-cli-render = { path = "../cli-render", version = "0.11", features = ["test-utils"] }
hyper-util.workspace = true
ntest.workspace = true
prost-reflect.workspace = true
proptest.workspace = true
rcgen = "0.14.8"
tokio-tungstenite.workspace = true
serial_test.workspace = true
uuid.workspace = true
[[bin]]
name = "heddle"
path = "src/main.rs"
[[bin]]
name = "heddle-fsmonitor-worker"
path = "src/bin/heddle-fsmonitor-worker.rs"
[[bin]]
name = "heddle-fuse-worker"
path = "src/bin/heddle-fuse-worker.rs"
required-features = ["mount"]
[[bin]]
name = "heddle-ingest"
path = "src/bin/heddle-ingest.rs"
required-features = ["ingest"]
[lib]
name = "cli"
path = "src/lib.rs"
[[test]]
name = "semantic_diff_integration"
path = "tests/semantic_diff_integration.rs"
required-features = ["semantic"]
[[bench]]
name = "local_ops"
harness = false
required-features = ["semantic"]
[[bench]]
name = "clonefile_threads"
harness = false