[package]
edition = "2024"
rust-version = "1.88.0"
name = "qcp"
version = "0.8.2"
authors = ["Ross Younger <qcp@crazyscot.com>"]
build = "build.rs"
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Secure remote file copy utility which uses the QUIC protocol over UDP"
homepage = "https://github.com/crazyscot/qcp/"
readme = "README.md"
keywords = [
"networking",
"file-transfer",
"quic",
]
categories = ["command-line-utilities"]
license = "AGPL-3.0-or-later"
repository = "https://github.com/crazyscot/qcp/"
resolver = "2"
[package.metadata.cross.target.x86_64-unknown-linux-musl]
[package.metadata.cross.target.aarch64-unknown-linux-musl]
[package.metadata.deb]
extended-description = """
The QUIC Copier (`qcp`) is an experimental high-performance remote file
copy utility for long-distance internet connections.
It is intended as a drop-in replacement for scp, offering similar
security properties but better throughput on congested networks.
"""
section = "contrib/net"
assets = [
[
"target/release/qcp",
"usr/bin/",
"755",
],
[
"../README.md",
"usr/share/doc/qcp/",
"644",
],
[
"../LICENSE",
"usr/share/doc/qcp/",
"644",
],
[
"misc/generated/changelog.gz",
"usr/share/doc/qcp/",
"644",
],
[
"debian/changelog.Debian.gz",
"usr/share/doc/qcp/",
"644",
],
[
"misc/20-qcp.conf",
"etc/sysctl.d/",
"644",
],
[
"misc/generated/qcp.1",
"usr/share/man/man1/",
"644",
],
[
"misc/generated/qcp_config.5",
"usr/share/man/man5/",
"644",
],
[
"misc/qcp.conf",
"etc/",
"644",
],
[
"misc/qcp_sshd.conf",
"etc/ssh/sshd_config.d/",
"644",
],
[
"qcp.cdx.xml.gz",
"usr/share/doc/qcp/",
"644",
],
[
"misc/generated/qcp.html",
"usr/share/doc/qcp/",
"644",
],
]
maintainer-scripts = "debian"
depends = "$auto,debconf"
[package.metadata.cargo-machete]
ignored = ["cfg_aliases"]
[package.metadata.cargo-shear]
ignored-paths = [
"src/doc/performance.rs",
"src/doc/troubleshooting.rs",
"src/os/osx.rs",
]
[features]
default = [
"rustls-log",
"quinn-log",
"secure-alloc",
]
quinn-log = ["quinn/log"]
rustls-log = ["quinn/rustls-log"]
secure-alloc = ["mimalloc/secure"]
unstable-test-helpers = []
[lib]
name = "qcp"
path = "src/lib.rs"
[[bin]]
name = "qcp"
path = "src/main.rs"
[[test]]
name = "integration"
path = "tests/integration.rs"
[dependencies.anstyle]
version = "1.0.13"
default-features = false
[dependencies.anyhow]
version = "1.0.101"
[dependencies.async-trait]
version = "0.1.89"
[dependencies.bytes]
version = "1.11.1"
[dependencies.cfg-if]
version = "1.0.4"
[dependencies.clap]
version = "4.5.57"
features = [
"wrap_help",
"derive",
"cargo",
"string",
"deprecated",
]
[dependencies.colorchoice]
version = "1.0.4"
[dependencies.console]
version = "0.16.2"
[dependencies.derive-deftly]
version = "1.6.0"
[dependencies.derive_more]
version = "2.1.1"
features = [
"constructor",
"debug",
"display",
"from",
]
[dependencies.dirs]
version = "6.0.0"
[dependencies.document-features]
version = "0.2.12"
[dependencies.dtype_variant]
version = "=0.0.14"
[dependencies.either]
version = "1.15.0"
[dependencies.engineering-repr]
version = "1.1.1"
features = ["serde"]
[dependencies.enumscribe]
version = "0.4.0"
[dependencies.figment]
version = "0.10.19"
features = ["env"]
[dependencies.futures-util]
version = "0.3.31"
default-features = false
[dependencies.gethostname]
version = "1.1.0"
[dependencies.glob]
version = "0.3.3"
[dependencies.heck]
version = "0.5.0"
[dependencies.hex]
version = "0.4.3"
[dependencies.homedir]
version = "0.3.6"
[dependencies.human-repr]
version = "1.1.0"
[dependencies.indicatif]
version = "0.18.3"
features = ["tokio"]
[dependencies.int-enum]
version = "1.2.0"
[dependencies.lessify]
version = "0.5.0"
[dependencies.mimalloc]
version = "0.1.48"
[dependencies.num-format]
version = "0.4.4"
[dependencies.num-traits]
version = "0.2.19"
[dependencies.paste]
version = "1.0.15"
[dependencies.quinn]
version = "0.11.9"
features = [
"runtime-tokio",
"rustls",
"ring",
]
default-features = false
[dependencies.rcgen]
version = "0.14.7"
[dependencies.rustix]
version = "1.1.3"
features = [
"net",
"fs",
"process",
]
[dependencies.rustls]
version = "0.23.36"
features = ["ring"]
default-features = false
[dependencies.rustls-pki-types]
version = "1.14.0"
[dependencies.serde]
version = "1.0.228"
features = ["derive"]
[dependencies.serde_bare]
version = "0.5.0"
[dependencies.serde_repr]
version = "0.1.20"
[dependencies.static_assertions]
version = "1.1.0"
[dependencies.struct-field-names-as-array]
version = "0.3.0"
[dependencies.strum]
version = "0.27.2"
features = ["derive"]
[dependencies.strum_macros]
version = "0.27.2"
[dependencies.tabled]
version = "0.20.0"
[dependencies.termsize]
version = "0.1.9"
[dependencies.thiserror]
version = "2.0.18"
[dependencies.tokio]
version = "1.49.0"
features = [
"fs",
"io-std",
"macros",
"process",
"rt",
"time",
"sync",
]
default-features = true
[dependencies.tracing]
version = "0.1.44"
[dependencies.tracing-subscriber]
version = "0.3.22"
features = [
"env-filter",
"chrono",
]
[dependencies.walkdir]
version = "2.5.0"
[dependencies.wildmatch]
version = "2.6.1"
[dev-dependencies.assertables]
version = "9.8.4"
[dev-dependencies.clap-markdown]
version = "0.1.5"
[dev-dependencies.clap_mangen]
version = "0.2.31"
[dev-dependencies.jzon]
version = "0.12.5"
[dev-dependencies.littertray]
version = "1.1.0"
features = ["async"]
[dev-dependencies.mockall]
version = "0.14.0"
[dev-dependencies.pretty_assertions]
version = "1.4.1"
[dev-dependencies.roff]
version = "0.2.2"
[dev-dependencies.rstest]
version = "0.26.1"
[dev-dependencies.rusty-fork]
version = "0.3.1"
[dev-dependencies.serde_json]
version = "1.0.149"
[dev-dependencies.tempfile]
version = "3.24.0"
default-features = false
[dev-dependencies.tokio-test]
version = "0.4.5"
[dev-dependencies.x509-certificate]
version = "0.25.0"
[build-dependencies.cfg_aliases]
version = "0.2.1"
[target."cfg(unix)".dependencies.file-mode]
version = "0.1.2"
[lints.clippy]
missing_errors_doc = "allow"
[lints.clippy.pedantic]
level = "deny"
priority = -1
[lints.rust]
dead_code = "warn"
elided_lifetimes_in_paths = "deny"
meta_variable_misuse = "deny"
missing_abi = "deny"
missing_copy_implementations = "deny"
missing_debug_implementations = "deny"
missing_docs = "warn"
non_ascii_idents = "deny"
single_use_lifetimes = "deny"
trivial_casts = "deny"
trivial_numeric_casts = "deny"
unreachable_pub = "deny"
unsafe_code = "forbid"
unsafe_op_in_unsafe_fn = "deny"
unused_extern_crates = "deny"
unused_lifetimes = "deny"
unused_results = "deny"
variant_size_differences = "deny"
[lints.rust.unexpected_cfgs]
level = "allow"
priority = 0
check-cfg = ["cfg(coverage_nightly)"]
[lints.rustdoc]
bare_urls = "deny"
broken_intra_doc_links = "deny"
invalid_codeblock_attributes = "deny"
invalid_html_tags = "deny"
invalid_rust_codeblocks = "deny"
missing_crate_level_docs = "deny"
private_intra_doc_links = "deny"
unescaped_backticks = "deny"