[package]
name = "zebra-utils"
version = "1.0.0-beta.35"
authors = ["Zcash Foundation <zebra@zfnd.org>"]
description = "Developer tools for Zebra maintenance and testing"
license = "MIT OR Apache-2.0"
repository = "https://github.com/ZcashFoundation/zebra"
edition = "2021"

# zebra-utils has a separate README file
readme = "README.md"
homepage = "https://zfnd.org/zebra/"
# crates.io is limited to 5 keywords and categories
keywords = ["zebra", "zcash"]
# Must be one of <https://crates.io/category_slugs>
categories = ["command-line-utilities", "cryptography::cryptocurrencies"]

# Zebra is only supported on the latest stable Rust version. See the README for details.
# Any Zebra release can break compatibility with older Rust versions.
rust-version = "1.73"

[[bin]]
name = "zebra-checkpoints"
# this setting is required for Zebra's Docker build caches
path = "src/bin/zebra-checkpoints/main.rs"
required-features = ["zebra-checkpoints"]

[[bin]]
name = "search-issue-refs"
path = "src/bin/search-issue-refs/main.rs"
required-features = ["search-issue-refs"]

[[bin]]
name = "block-template-to-proposal"
# this setting is required for Zebra's Docker build caches
path = "src/bin/block-template-to-proposal/main.rs"
required-features = ["getblocktemplate-rpcs"]

[[bin]]
name = "scanning-results-reader"
path = "src/bin/scanning-results-reader/main.rs"
required-features = ["shielded-scan"]

[[bin]]
name = "openapi-generator"
path = "src/bin/openapi-generator/main.rs"
required-features = ["openapi-generator"]

[features]
default = []

# Each binary has a feature that activates the extra dependencies it needs

zebra-checkpoints = [
    "itertools",
    "tokio",
    "zebra-chain/json-conversion",
    "zebra-node-services/rpc-client"
]

search-issue-refs = [
    "regex",
    "reqwest",
    "tokio"
]

# block-template-to-proposal uses the experimental mining RPC support feature name
getblocktemplate-rpcs = [
    "zebra-rpc/getblocktemplate-rpcs",
    "zebra-node-services/getblocktemplate-rpcs",
    "zebra-chain/getblocktemplate-rpcs",
]

shielded-scan = [
    "itertools",
    "jsonrpc",
    "zcash_primitives",
    "zcash_client_backend",
    "zebra-scan"
]

openapi-generator = [
    "zebra-rpc",
    "syn",
    "quote",
    "serde_yaml",
    "serde"
]

[dependencies]
color-eyre = "0.6.2"
# This is a transitive dependency via color-eyre.
# Enable a feature that makes tinyvec compile much faster.
tinyvec = { version = "1.6.0", features = ["rustc_1_55"] }

structopt = "0.3.26"
hex = "0.4.3"
serde_json = "1.0.113"
tracing-error = "0.2.0"
tracing-subscriber = "0.3.18"
thiserror = "1.0.57"

zebra-node-services = { path = "../zebra-node-services", version = "1.0.0-beta.35" }
zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.35" }
zebra-scan = { path = "../zebra-scan", version = "0.1.0-alpha.4", optional = true }

# These crates are needed for the block-template-to-proposal binary
zebra-rpc = { path = "../zebra-rpc", version = "1.0.0-beta.35", optional = true }

# These crates are needed for the zebra-checkpoints binary
itertools = { version = "0.12.1", optional = true }

# These crates are needed for the search-issue-refs binary
regex = { version = "1.10.3", optional = true }
# Avoid default openssl dependency to reduce the dependency tree and security alerts. 
reqwest = { version = "0.11.24", default-features = false, features = ["rustls-tls"], optional = true }

# These crates are needed for the zebra-checkpoints and search-issue-refs binaries
tokio = { version = "1.36.0", features = ["full"], optional = true }

jsonrpc = { version = "0.17.0", optional = true }

zcash_primitives = { version = "0.13.0-rc.1", optional = true }
zcash_client_backend = {version = "0.10.0-rc.1", optional = true}

# For the openapi generator
syn = { version = "2.0.52", features = ["full"], optional = true }
quote = { version = "1.0.35", optional = true }
serde_yaml = { version = "0.9.32", optional = true }
serde = { version = "1.0.196", features = ["serde_derive"], optional = true }
