ggsql 0.1.8

A declarative visualization language that extends SQL with powerful data visualization capabilities.
[package]
name = "ggsql"
version.workspace = true
edition.workspace = true
authors.workspace = true
license.workspace = true
repository.workspace = true
homepage.workspace = true
description.workspace = true

[lib]
name = "ggsql"
path = "lib.rs"

[[bin]]
name = "ggsql"
path = "cli.rs"

[[bin]]
name = "ggsql-rest"
path = "rest.rs"
required-features = ["rest-api"]

[dependencies]
# Parsing
tree-sitter.workspace = true
tree-sitter-ggsql = { workspace = true }
csscolorparser.workspace = true

# Color interpolation
palette.workspace = true

# Data processing
polars = { workspace = true, features = ["lazy", "sql"] }
polars-ops.workspace = true

# Readers
duckdb = { workspace = true, optional = true }
arrow = { workspace = true, optional = true }
postgres = { workspace = true, optional = true }
rusqlite = { workspace = true, optional = true }

# Writers
plotters = { workspace = true, optional = true }

# Serialization
serde.workspace = true
serde_json.workspace = true

# CLI and error handling
clap.workspace = true
anyhow.workspace = true
thiserror.workspace = true

# Utilities
regex.workspace = true
chrono.workspace = true
rand.workspace = true
sprintf = "0.4"
const_format.workspace = true
uuid.workspace = true

# Web server (optional)
axum = { workspace = true, optional = true }
tokio = { workspace = true, optional = true, features = ["full"] }
tower-http = { workspace = true, optional = true }
tracing = { workspace = true, optional = true }
tracing-subscriber = { workspace = true, optional = true }

# Python bindings (future)
pyo3 = { workspace = true, optional = true }

[dev-dependencies]
jsonschema = "0.44"
proptest.workspace = true
ureq = "3"

[features]
default = ["duckdb", "sqlite", "vegalite", "ipc", "parquet", "builtin-data"]
ipc = ["polars/ipc"]
duckdb = ["dep:duckdb", "dep:arrow"]
polars-sql = ["polars/sql"]
parquet = ["polars/parquet"]
postgres = ["dep:postgres"]
sqlite = ["dep:rusqlite"]
vegalite = []
ggplot2 = []
builtin-data = []
python = ["dep:pyo3"]
rest-api = ["dep:axum", "dep:tokio", "dep:tower-http", "dep:tracing", "dep:tracing-subscriber", "duckdb", "vegalite"]
all-readers = ["duckdb", "postgres", "sqlite", "polars-sql"]
all-writers = ["vegalite", "ggplot2", "plotters"]

# cargo-packager configuration for cross-platform installers
[package.metadata.packager]
product-name = "ggsql"
identifier = "com.ggsql.app"
category = "DeveloperTool"
publisher = "ggsql Team"
authors = ["ggsql Team"]
icons = ["../doc/assets/logo.png"]
license-file = "../LICENSE.md"
out-dir = "target/release/packager"
homepage = "https://ggsql.org/"
description = "SQL extension for declarative data visualization"
long-description = "ggsql extends SQL with a VISUALISE clause for declarative data visualization based on Grammar of Graphics principles. Combine SQL queries with visualization specifications to create charts directly from your data."
copyright = "Copyright (c) 2026 ggsql Team"

# Binaries to include in the package
binaries = [
  { path = "ggsql", main = true },
]

# Resources to bundle (optional)
resources = []