[package] name = "qcp" description = "Secure remote file copy utility which uses the QUIC protocol over UDP" rust-version = "1.81.0" resolver = "2" version = "0.1.3" edition = "2021" authors = ["Ross Younger "] license = "AGPL-3.0-or-later" repository = "https://github.com/crazyscot/qcp/" homepage = "https://github.com/crazyscot/qcp/" keywords = [ "networking", "file-transfer", "quic" ] categories = [ "command-line-utilities" ] [profile.release] lto = "thin" strip = "symbols" [dependencies] anstyle = "1.0.8" anyhow = "1.0.89" capnp = "0.20.1" capnp-futures = "0.20.0" clap = { version = "4.5.19", features = ["wrap_help", "derive", "cargo", "help", "string"] } console = "0.15.8" dns-lookup = "2.0.4" futures-util = { version = "0.3.31", default-features = false } gethostname = "0.5.0" human-repr = "1.1.0" humanize-rs = "0.1.5" indicatif = { version = "0.17.8", features = ["tokio"] } num-format = { version = "0.4.4" } quinn = { version = "0.11.5", default-features = false, features = ["runtime-tokio", "rustls", "ring"] } rcgen = { version = "0.13.1" } rustls-pki-types = "1.9.0" static_assertions = "1.1.0" strum_macros = "0.26.4" tokio = { version = "1.40.0", default-features = true, features = ["fs", "io-std", "macros", "process", "rt", "time", "sync"] } tokio-util = { version = "0.7.12", features = ["compat"] } tracing = "0.1.40" tracing-subscriber = { version = "0.3.18", features = ["env-filter"] } [target.'cfg(unix)'.dependencies] nix = { version = "0.29.0", features = ["socket"] } [target.'cfg(all(target_env = "musl", target_pointer_width = "64"))'.dependencies] jemallocator = "0.5.4" [build-dependencies] capnpc = "0.20.0" [dev-dependencies] fastrand = "2.1.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" unsafe_code = "deny" unsafe_op_in_unsafe_fn = "deny" unreachable_pub = "deny" # unused_crate_dependencies = "deny" # false positives unused_extern_crates = "deny" unused_lifetimes = "deny" unused_results = "deny" variant_size_differences = "deny" [lints.clippy] pedantic = { level = "deny", priority = -1 } missing_errors_doc = "allow" [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" [package.metadata.cross.target.x86_64-unknown-linux-musl] pre-build = [ "apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -y --no-install-recommends install capnproto" ] [package.metadata.cross.target.aarch64-unknown-linux-musl] pre-build = [ "apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -y --no-install-recommends install capnproto" ] [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 = [ # sneaky; this seems to automagically pick up the correct binary when cross building: [ "target/release/qcp", "usr/bin/", "755" ], [ "README.md", "usr/share/doc/qcp/", "644" ], [ "LICENSE", "usr/share/doc/qcp/", "644" ], # gzip -9n < CHANGELOG.md > misc/changelog.gz [ "misc/changelog.gz", "usr/share/doc/qcp/", "644" ], [ "misc/20-qcp.conf", "etc/sysctl.d/", "644" ], [ "misc/qcp.1", "usr/share/man/man1/", "644" ], ]