# Copyright (C) 2026 Doan Luu Duc Tai # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . [package] name = "stack" version = "0.1.0" edition = "2024" rust-version = "1.99" authors = ["Doan Luu Duc Tai "] license = "AGPL-3.0-or-later" description = "Rust management, backup, and deployment for a personal web stack." repository = "https://git.doan.luuduct.ai/stack" readme = "README.txt" keywords = ["self-hosting", "deployment", "backup", "podman", "cli"] categories = ["command-line-utilities", "web-programming"] publish = false exclude = ["var", ".tools", "target", "bin", "dist"] [dependencies] anyhow = "1.0" chrono = { version = "0.4", default-features = false, features = ["now", "std"] } clap = { version = "4.6", features = ["derive"] } dotenvy = "0.15" hex = "0.4" flate2 = { version = "1", default-features = false, features = ["rust_backend"] } serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" sha2 = "0.11" tar = "0.4" tempfile = "3" toml = "1.1" walkdir = "2" [profile.release] opt-level = 3 strip = true lto = true incremental = false [workspace] members = ["."] resolver = "3" [lints] workspace = true [workspace.lints.rustdoc] broken_intra_doc_links = "deny" private_intra_doc_links = "deny" missing_crate_level_docs = "deny" [workspace.lints.rust] unused = { level = "deny", priority = -1 } nonstandard_style = { level = "deny", priority = -1 } future_incompatible = { level = "deny", priority = -1 } rust_2018_idioms = { level = "deny", priority = -1 } let_underscore = { level = "deny", priority = -1 } unsafe_code = "deny" unstable_features = "deny" missing_docs = "deny" missing_debug_implementations = "deny" unreachable_pub = "deny" trivial_casts = "deny" trivial_numeric_casts = "deny" unreachable_patterns = "deny" warnings = "deny" unused_qualifications = "deny" [workspace.lints.clippy] all = { level = "deny", priority = -1 } correctness = { level = "deny", priority = -1 } suspicious = { level = "deny", priority = -1 } cargo = { level = "deny", priority = -1 } style = { level = "deny", priority = -1 } complexity = { level = "deny", priority = -1 } perf = { level = "deny", priority = -1 } pedantic = { level = "deny", priority = -1 } nursery = { level = "deny", priority = -1 } todo = "deny" print_stdout = "deny" print_stderr = "deny" unwrap_used = "deny" expect_used = "deny" dbg_macro = "deny" mem_forget = "deny" exit = "deny" integer_division = "deny" clone_on_ref_ptr = "deny" indexing_slicing = "deny" arithmetic_side_effects = "deny" float_arithmetic = "deny" as_conversions = "deny" shadow_reuse = "deny" shadow_same = "deny" unseparated_literal_suffix = "deny" undocumented_unsafe_blocks = "deny" cast_possible_truncation = "deny" cast_possible_wrap = "deny" cast_sign_loss = "deny" missing_errors_doc = "deny" multiple_crate_versions = "allow" redundant_pub_crate = "allow"