[package]
name = "jerrycan"
description = "The AI-native Rust backend platform: framework, CLI, and MCP server. https://jerrycan.cc"
version.workspace = true
edition.workspace = true
license.workspace = true
homepage.workspace = true
repository.workspace = true
authors.workspace = true
rust-version.workspace = true
keywords = ["web", "framework", "backend", "ai", "mcp"]
categories = ["web-programming::http-server", "command-line-utilities"]
readme = "README.md"
[features]
default = ["cli"]
cli = ["dep:clap", "dep:serde", "dep:serde_json", "dep:tokio", "dep:sea-query", "dep:sqlparser", "dep:sha2", "dep:syn", "dep:proc-macro2", "db"]
db = ["dep:jerrycan-db"]
validate = ["dep:jerrycan-validate"]
auth = ["dep:jerrycan-auth"]
oauth = ["auth", "jerrycan-auth/oauth"]
mock-idp = ["oauth", "jerrycan-auth/mock-idp"]
observe = ["dep:jerrycan-observe"]
jobs = ["dep:jerrycan-jobs", "db"]
jobs-redis = ["jobs", "jerrycan-jobs/jobs-redis"]
rate-limit = ["dep:jerrycan-ratelimit"]
rate-limit-redis = ["rate-limit", "jerrycan-ratelimit/rate-limit-redis"]
storage = ["dep:jerrycan-storage", "db"]
storage-s3 = ["storage", "jerrycan-storage/storage-s3"]
realtime = ["dep:jerrycan-realtime", "db"]
realtime-redis = ["realtime", "jerrycan-realtime/realtime-redis"]
[package.metadata.cargo-semver-checks.lints]
struct_marked_non_exhaustive = "allow"
[[bin]]
name = "jerrycan"
required-features = ["cli"]
[dependencies]
jerrycan-core.workspace = true
jerrycan-macros.workspace = true
jerrycan-db = { workspace = true, optional = true }
jerrycan-validate = { workspace = true, optional = true }
jerrycan-auth = { workspace = true, optional = true }
jerrycan-observe = { workspace = true, optional = true }
jerrycan-jobs = { workspace = true, optional = true }
jerrycan-ratelimit = { workspace = true, optional = true }
jerrycan-storage = { workspace = true, optional = true }
jerrycan-realtime = { workspace = true, optional = true }
clap = { version = "4", features = ["derive"], optional = true }
sea-query = { workspace = true, optional = true }
sqlparser = { workspace = true, optional = true }
sha2 = { workspace = true, optional = true }
syn = { version = "2", features = ["full", "visit"], optional = true }
proc-macro2 = { version = "1", features = ["span-locations"], optional = true }
serde = { workspace = true, optional = true }
serde_json = { workspace = true, optional = true }
tokio = { workspace = true, optional = true }
[dev-dependencies]
tokio.workspace = true
serde.workspace = true
serde_json.workspace = true
tempfile = "3"
[package.metadata.binstall]
pkg-url = "{ repo }/releases/download/v{ version }/{ name }-{ target }.tar.gz"
pkg-fmt = "tgz"