rustic_server 0.4.1

rustic server - a REST server built in rust to use with rustic and restic.
Documentation
[package]
name = "rustic_server"
version = "0.4.1"
authors = ["the rustic-rs team"]
categories = ["command-line-utilities"]
edition = "2021"
homepage = "https://rustic.cli.rs/"
include = [
  "src/**/*",
  "config/**/*",
  "Cargo.toml",
  "Cargo.lock",
  "LICENSE",
  "README.md",
]
keywords = ["backup", "restic", "cli", "server"]
license = "AGPL-3.0-or-later"
repository = "https://github.com/rustic-rs/rustic_server"
rust-version = "1.70.0"
description = """
rustic server - a REST server built in rust to use with rustic and restic.
"""
# cargo-binstall support
# https://github.com/cargo-bins/cargo-binstall/blob/HEAD/SUPPORT.md
[package.metadata.binstall]
pkg-url = "{ repo }/releases/download/v{ version }/{ repo }-v{ version }-{ target }{ archive-suffix }"
bin-dir = "{ bin }-{ target }/{ bin }{ binary-ext }"
pkg-fmt = "tar.gz"

[package.metadata.binstall.signing]
algorithm = "minisign"
pubkey = "RWSWSCEJEEacVeCy0va71hlrVtiW8YzMzOyJeso0Bfy/ZXq5OryWi/8T"

[package.metadata.wix]
upgrade-guid = "EE4ED7D1-CE20-4919-B988-33482C0C3042"
path-guid = "F5605741-D1CF-45E2-B082-3A71B58C01C8"
license = false
eula = false

[dependencies]
abscissa_tokio = "0.8.0"
anyhow = "1"
async-trait = "0.1"
axum = { version = "0.7", features = ["tracing", "multipart", "http2", "macros"] }
axum-auth = "0.7"
axum-extra = { version = "0.9", features = ["typed-header", "query", "async-read-body", "typed-routing", "erased-json"] }
axum-macros = "0.4"
axum-range = "0.4"
axum-server = { version = "0.7", features = ["tls-rustls"] }
chrono = { version = "0.4.38", features = ["serde"] }
clap = { version = "4", features = ["derive", "env", "wrap_help"] }
conflate = "0.3.2"
displaydoc = "0.2"
# enum_dispatch = "0.3.12"
futures = "0.3"
futures-util = "0.3"
htpasswd-verify = "0.3"
http-body-util = "0.1"
http-range = "0.1"
inquire = "0.7"
pin-project = "1"
rand = "0.8"
serde = { version = "1", default-features = false, features = ["derive"] }
serde_derive = "1"
strum = { version = "0.26", features = ["derive"] }
thiserror = "2"
tokio = { version = "1", features = ["full"] }
tokio-util = { version = "0.7", features = ["io", "io-util"] }
toml = "0.8"
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
uuid = { version = "1.11.0", features = ["v4"] }
walkdir = "2"

[dependencies.abscissa_core]
version = "0.8.1"
# optional: use `gimli` to capture backtraces
# see https://github.com/rust-lang/backtrace-rs/issues/189
# features = ["gimli-backtrace"]

[dependencies.rustls]
version = "0.23.16"
features = ["logging", "std", "tls12"]
default-features = false

[dev-dependencies]
abscissa_core = { version = "0.8.1", features = ["testing"] }
anyhow = "1"
assert_cmd = "2"
base64 = "0.22"
dircmp = "0.2"
insta = { version = "1", features = ["redactions", "toml"] }
once_cell = "1.2"
predicates = "3.1.2"
pretty_assertions = "1"
rstest = "0.23"
serde_json = "1"
# reqwest = "0.11.18"
serial_test = { version = "3.2.0", features = ["file_locks"] }
tower = "0.5"

# 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

# The profile that 'dist' will build with
[profile.dist]
inherits = "release"
lto = "thin"

[workspace.lints.rust]
unsafe_code = "forbid"
missing_docs = "warn"
rust_2018_idioms = { level = "warn", priority = -1 }
trivial_casts = "warn"
unused_lifetimes = "warn"
unused_qualifications = "warn"
bad_style = "warn"
dead_code = "allow" # TODO: "warn"
improper_ctypes = "warn"
missing_copy_implementations = "warn"
missing_debug_implementations = "warn"
non_shorthand_field_patterns = "warn"
no_mangle_generic_items = "warn"
overflowing_literals = "warn"
path_statements = "warn"
patterns_in_fns_without_body = "warn"
trivial_numeric_casts = "warn"
unused_results = "warn"
unused_extern_crates = "warn"
unused_import_braces = "warn"
unconditional_recursion = "warn"
unused = { level = "warn", priority = -1 }
unused_allocation = "warn"
unused_comparisons = "warn"
unused_parens = "warn"
while_true = "warn"
unreachable_pub = "allow"

[workspace.lints.clippy]
redundant_pub_crate = "allow"
pedantic = { level = "warn", priority = -1 }
nursery = { level = "warn", priority = -1 }
# expect_used = "warn" # TODO!
# unwrap_used = "warn" # TODO!
enum_glob_use = "warn"
correctness = { level = "warn", priority = -1 }
suspicious = { level = "warn", priority = -1 }
complexity = { level = "warn", priority = -1 }
perf = { level = "warn", priority = -1 }
cast_lossless = "warn"
default_trait_access = "warn"
doc_markdown = "warn"
manual_string_new = "warn"
match_same_arms = "warn"
semicolon_if_nothing_returned = "warn"
trivially_copy_pass_by_ref = "warn"
module_name_repetitions = "allow"
# TODO: Remove when Windows support landed
# mostly Windows-related functionality is missing `const`
# as it's only OK(()), but doesn't make it reasonable to
# have a breaking change in the future. They won't be const.
missing_const_for_fn = "allow"
needless_raw_string_hashes = "allow"

[workspace.lints.rustdoc]
# We run rustdoc with `--document-private-items` so we can document private items
private_intra_doc_links = "allow"