flowscope-cli 0.3.1

Command-line interface for FlowScope SQL lineage analyzer
Documentation
[package]
name = "flowscope-cli"
version.workspace = true
authors.workspace = true
edition.workspace = true
license.workspace = true
repository.workspace = true
homepage = "https://flowscope.pondpilot.io"
documentation = "https://docs.rs/flowscope-cli"
readme = "README.md"
keywords = ["sql", "lineage", "cli", "analysis", "database"]
categories = ["command-line-utilities", "database"]
description = "Command-line interface for FlowScope SQL lineage analyzer"
build = "build.rs"

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

[features]
default = ["templating", "metadata-provider", "serve"]
templating = ["flowscope-core/templating"]
metadata-provider = ["sqlx", "tokio"]
# Integration tests require database connectivity
integration-tests = ["metadata-provider"]
# Serve mode: embedded web UI with REST API
serve = ["dep:axum", "dep:tower-http", "dep:rust-embed", "dep:notify-debouncer-mini", "dep:mime_guess", "dep:open", "dep:walkdir", "dep:chrono", "tokio/macros", "tokio/signal"]

[dependencies]
flowscope-core.workspace = true
flowscope-export = { workspace = true, features = ["duckdb"] }
clap = { version = "4", features = ["derive"] }
serde.workspace = true
serde_json.workspace = true
anyhow = "1.0"
thiserror = "2.0"
tabled = "0.20"
owo-colors = "4"
is-terminal = "0.4"
sqlx = { version = "0.8", features = ["runtime-tokio-rustls", "any", "postgres", "mysql", "sqlite"], optional = true }
tokio = { version = "1", features = ["rt-multi-thread"], optional = true }

# Serve mode dependencies (optional, enabled by "serve" feature)
axum = { version = "0.8", optional = true }
tower-http = { version = "0.6", features = ["fs", "cors", "limit"], optional = true }
rust-embed = { version = "8", features = ["include-exclude"], optional = true }
chrono = { version = "0.4", optional = true }
notify-debouncer-mini = { version = "0.5", optional = true }
mime_guess = { version = "2", optional = true }
open = { version = "5", optional = true }
walkdir = { version = "2", optional = true }

[dev-dependencies]
tempfile = "3"
rusqlite = "0.32"
tokio = { version = "1", features = ["macros", "rt-multi-thread", "time"] }
tower = { version = "0.5", features = ["util"] }
http-body-util = "0.1"
reqwest = { version = "0.12", default-features = false, features = ["json", "rustls-tls"] }