rustic/Cargo.toml
Romain de Laage d382d74241
feat: Add environment variable substitution in config files (#1577)
closes #942 

This PR brings support for environment variable substitution in config
files. This simply uses the [subst](https://github.com/fizyr/subst)
crate to parse all environment variables before parsing the toml, this
allows to define toml values in environment variables for more
flexibility.
2025-10-10 11:52:29 +00:00

223 lines
6.4 KiB
TOML

[package]
name = "rustic-rs"
version = "0.10.0"
authors = ["the rustic-rs team"]
categories = ["command-line-utilities"]
documentation = "https://docs.rs/rustic-rs"
edition = "2024"
homepage = "https://rustic.cli.rs/"
include = ["src/**/*", "LICENSE-*", "README.md", "config/**/*"]
keywords = ["backup", "restic", "deduplication", "encryption", "cli"]
license = "Apache-2.0 OR MIT"
readme = "README.md"
repository = "https://github.com/rustic-rs/rustic"
resolver = "3"
rust-version = "1.85.0"
description = """
rustic - fast, encrypted, deduplicated backups powered by Rust
"""
[features]
default = ["jq", "prometheus", "opentelemetry", "tui", "webdav"]
release = ["default", "self-update"]
# Allocators
mimalloc = ["dep:mimalloc"]
jemallocator = ["dep:jemallocator-global"]
# Commands
mount = ["dep:fuse_mt"]
prometheus = ["dep:prometheus", "dep:base64"]
opentelemetry = [
"dep:opentelemetry",
"dep:opentelemetry-otlp",
"dep:opentelemetry_sdk",
]
self-update = ["dep:self_update", "dep:semver"]
tui = ["dep:ratatui", "dep:crossterm", "dep:tui-textarea"]
webdav = [
"dep:dav-server",
"dep:warp",
"dep:tokio",
"dep:bytes",
"dep:futures",
]
# Filtering
rhai = ["dep:rhai"]
jq = ["dep:jaq-core", "dep:jaq-std", "dep:jaq-json"]
[[bin]]
name = "rustic"
path = "src/bin/rustic.rs"
test = true
bench = true
doc = true
harness = true
# required-features = []
[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--document-private-items", "--generate-link-to-definition"]
[dependencies]
abscissa_core = { version = "0.8.2", default-features = false, features = ["application"] }
rustic_backend = { version = "0.5.3", features = ["cli"] }
rustic_core = { version = "0.8.0", features = ["cli"] }
# allocators
jemallocator-global = { version = "0.3.2", optional = true }
mimalloc = { version = "0.1.48", default-features = false, optional = true }
# webdav
dav-server = { version = "0.8.0", default-features = false, features = ["warp-compat"], optional = true }
tokio = { version = "1", optional = true }
warp = { version = "0.3.7", optional = true }
# tui
crossterm = { version = "0.28", optional = true }
ratatui = { version = "0.29.0", optional = true }
tui-textarea = { version = "0.7.0", optional = true }
# logging
log = "0.4"
# errors
anyhow = "1"
displaydoc = "0.2.5"
thiserror = "2"
# serialization
serde = { version = "1", features = ["serde_derive"] }
serde_json = "1"
serde_with = { version = "3", features = ["base64"] }
# other dependencies
aho-corasick = "1"
chrono = { version = "0.4", default-features = false, features = ["clock", "serde"] }
comfy-table = "7"
scopeguard = "1"
semver = { version = "1", optional = true }
simplelog = "0.12"
# commands
base64 = { version = "0.22.1", optional = true }
bytes = { version = "1.10.1", optional = true }
bytesize = "2"
cached = "0.56.0"
clap = { version = "4", features = ["derive", "env", "wrap_help"] }
clap_complete = "4"
conflate = "0.3.3"
convert_case = "0.8.0"
ctrlc = { version = "3.5.0", features = ["termination"] }
dateparser = "0.2.1"
derive_more = { version = "2", features = ["debug", "display", "from_str"] }
dialoguer = "0.12.0"
directories = "6"
flate2 = "1.1.2"
fuse_mt = { version = "0.6", optional = true }
futures = { version = "0.3.31", optional = true }
gethostname = "1.0"
globset = "0.4.16"
human-panic = "2"
humantime = "2"
indicatif = "0.18"
itertools = "0.14"
open = "5.3.2"
prometheus = { version = "0.14.0", optional = true }
reqwest = { version = "0.12.23", default-features = false, features = ["rustls-tls-native-roots", "blocking"] }
self_update = { version = "=0.39.0", default-features = false, optional = true, features = ["rustls", "archive-tar", "compression-flate2"] } # FIXME: Downgraded to 0.39.0 due to https://github.com/jaemk/self_update/issues/136
tar = "0.4.44"
toml = "0.9"
zip = { version = "5.1.1", default-features = false, features = ["deflate", "chrono"] }
# filtering
jaq-core = { version = "2", optional = true }
jaq-json = { version = "1", features = ["serde_json"], optional = true }
jaq-std = { version = "2", optional = true }
opentelemetry = { version = "0.30.0", default-features = false, features = ["metrics"], optional = true }
opentelemetry-otlp = { version = "0.30.0", features = ["metrics"], optional = true }
opentelemetry_sdk = { version = "0.30.0", default-features = false, features = ["metrics"], optional = true }
rhai = { version = "1", features = ["sync", "serde", "no_optimize", "no_module", "no_custom_syntax", "only_i64"], optional = true }
subst = "0.3.8"
[dev-dependencies]
abscissa_core = { version = "0.8.2", default-features = false, features = ["testing"] }
assert_cmd = "2.0.17"
cfg-if = "1.0.3"
dircmp = "0.2"
flate2 = "1.1.2"
insta = { version = "1.43.2", features = ["ron"] }
predicates = "3.1.3"
pretty_assertions = "1.4"
quickcheck = "1"
quickcheck_macros = "1"
rstest = "0.26"
rustic_testing = { version = "0.3.3" }
tar = "0.4.44"
tempfile = "3.22"
toml = "0.9"
[target.'cfg(not(windows))'.dependencies]
libc = "0.2.175"
# cargo-binstall support
# https://github.com/cargo-bins/cargo-binstall/blob/HEAD/SUPPORT.md
[package.metadata.binstall]
pkg-url = "{ repo }/releases/download/v{ version }/{ bin }-v{ version }-{ target }{ archive-suffix }"
bin-dir = "{ bin }{ binary-ext }"
pkg-fmt = "tgz"
[package.metadata.binstall.signing]
algorithm = "minisign"
pubkey = "RWSWSCEJEEacVeCy0va71hlrVtiW8YzMzOyJeso0Bfy/ZXq5OryWi/8T"
# see: https://nnethercote.github.io/perf-book/build-configuration.html
[profile.dev]
opt-level = 0
debug = true
rpath = false
lto = false
debug-assertions = true
codegen-units = 4
# compile dependencies with optimizations in dev mode
# see: https://doc.rust-lang.org/stable/cargo/reference/profiles.html#overrides
[profile.dev.package."*"]
opt-level = 3
debug = true
[profile.release]
opt-level = 3
debug = false # true for profiling
rpath = false
lto = "fat"
debug-assertions = false
codegen-units = 1
strip = true
panic = "abort"
[profile.test]
opt-level = 1
debug = true
rpath = false
lto = false
debug-assertions = true
codegen-units = 4
[profile.bench]
opt-level = 3
debug = true # true for profiling
rpath = false
lto = true
debug-assertions = false
codegen-units = 1
# Allows quick RPM file generation, if "cargo-generate-rpm" is installed:
# cargo build --release; cargo generate-rpm
# will result in a file like target/generate-rpm/rustic-rs-0.6.1-1.x86_64.rpm
[package.metadata.generate-rpm]
assets = [
{ source = "target/release/rustic", dest = "/usr/bin/rustic", mode = "0755", config = false, doc = false, user = "root", group = "root" },
]