[INFO] fetching crate minifly-cli 0.2.2... [INFO] linting minifly-cli-0.2.2 against nightly for clippy-nonminimal_bool-denied [INFO] extracting crate minifly-cli 0.2.2 into /workspace/builds/worker-0-tc1/source [INFO] started tweaking crates.io crate minifly-cli 0.2.2 [INFO] removed 0 missing tests [INFO] finished tweaking crates.io crate minifly-cli 0.2.2 [INFO] tweaked toml for crates.io crate minifly-cli 0.2.2 written to /workspace/builds/worker-0-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate minifly-cli 0.2.2 on toolchain nightly [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate crates.io crate minifly-cli 0.2.2 already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded sdd v3.0.8 [INFO] [stderr] Downloaded papergrid v0.12.0 [INFO] [stderr] Downloaded tabled_derive v0.8.0 [INFO] [stderr] Downloaded minifly-logging v0.2.2 [INFO] [stderr] Downloaded minifly-core v0.2.2 [INFO] [stderr] Downloaded tabled v0.16.0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 50660258f4acc21e07ebe5667937beb467c7f85a2592e64d9dfc8b1ff3846098 [INFO] running `Command { std: "docker" "start" "-a" "50660258f4acc21e07ebe5667937beb467c7f85a2592e64d9dfc8b1ff3846098", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "50660258f4acc21e07ebe5667937beb467c7f85a2592e64d9dfc8b1ff3846098", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "50660258f4acc21e07ebe5667937beb467c7f85a2592e64d9dfc8b1ff3846098", kill_on_drop: false }` [INFO] [stdout] 50660258f4acc21e07ebe5667937beb467c7f85a2592e64d9dfc8b1ff3846098 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "clippy" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 52f2f48d41b3ca44cd39d4d274637bb1a95e2518ac7edf65d9ffbe2dc2342d98 [INFO] running `Command { std: "docker" "start" "-a" "52f2f48d41b3ca44cd39d4d274637bb1a95e2518ac7edf65d9ffbe2dc2342d98", kill_on_drop: false }` [INFO] [stderr] Checking signal-hook-registry v1.4.5 [INFO] [stderr] Checking indexmap v2.9.0 [INFO] [stderr] Compiling openssl-sys v0.9.109 [INFO] [stderr] Checking tracing v0.1.41 [INFO] [stderr] Checking regex-automata v0.4.9 [INFO] [stderr] Checking serde_json v1.0.140 [INFO] [stderr] Compiling syn v1.0.109 [INFO] [stderr] Compiling proc-macro-error-attr v1.0.4 [INFO] [stderr] Checking net2 v0.2.39 [INFO] [stderr] Checking serde_spanned v0.6.9 [INFO] [stderr] Checking toml_datetime v0.6.11 [INFO] [stderr] Checking iovec v0.1.4 [INFO] [stderr] Checking winnow v0.7.11 [INFO] [stderr] Checking anstyle-query v1.1.3 [INFO] [stderr] Checking console v0.15.11 [INFO] [stderr] Checking thiserror v1.0.69 [INFO] [stderr] Checking tracing-serde v0.2.0 [INFO] [stderr] Checking anstream v0.6.19 [INFO] [stderr] Checking inotify-sys v0.1.5 [INFO] [stderr] Checking lazycell v1.3.0 [INFO] [stderr] Checking tokio v1.45.1 [INFO] [stderr] Checking papergrid v0.12.0 [INFO] [stderr] Compiling clap_derive v4.5.40 [INFO] [stderr] Checking dirs-sys v0.4.1 [INFO] [stderr] Checking clap_builder v4.5.40 [INFO] [stderr] Checking chrono v0.4.41 [INFO] [stderr] Checking inotify v0.7.1 [INFO] [stderr] Checking float-cmp v0.10.0 [INFO] [stderr] Checking mio v0.6.23 [INFO] [stderr] Checking num_cpus v1.17.0 [INFO] [stderr] Compiling async-stream-impl v0.3.6 [INFO] [stderr] Checking sdd v3.0.8 [INFO] [stderr] Compiling assert_cmd v2.0.17 [INFO] [stderr] Checking indicatif v0.17.11 [INFO] [stderr] Checking scc v2.3.4 [INFO] [stderr] Compiling openssl v0.10.73 [INFO] [stderr] Compiling native-tls v0.2.14 [INFO] [stderr] Checking dialoguer v0.11.0 [INFO] [stderr] Checking dirs v5.0.1 [INFO] [stderr] Checking colored v2.2.0 [INFO] [stderr] Checking serde_yaml v0.9.34+deprecated [INFO] [stderr] Checking assert-json-diff v2.0.2 [INFO] [stderr] Checking async-stream v0.3.6 [INFO] [stderr] Checking wait-timeout v0.2.1 [INFO] [stderr] Compiling serial_test_derive v3.2.0 [INFO] [stderr] Checking mio-extras v2.0.6 [INFO] [stderr] Checking notify v4.0.18 [INFO] [stderr] Checking toml_edit v0.22.27 [INFO] [stderr] Checking clap v4.5.40 [INFO] [stderr] Checking serial_test v3.2.0 [INFO] [stderr] Checking regex v1.11.1 [INFO] [stderr] Checking bstr v1.12.0 [INFO] [stderr] Checking tracing-subscriber v0.3.19 [INFO] [stderr] Checking predicates v3.1.3 [INFO] [stderr] Compiling proc-macro-error v1.0.4 [INFO] [stderr] Checking toml v0.8.23 [INFO] [stderr] Checking minifly-logging v0.2.2 [INFO] [stderr] Compiling tabled_derive v0.8.0 [INFO] [stderr] Checking minifly-core v0.2.2 [INFO] [stderr] Checking tokio-util v0.7.15 [INFO] [stderr] Checking tower v0.5.2 [INFO] [stderr] Checking deadpool v0.10.0 [INFO] [stderr] Checking tokio-stream v0.1.17 [INFO] [stderr] Checking tabled v0.16.0 [INFO] [stderr] Checking tokio-test v0.4.4 [INFO] [stderr] Checking h2 v0.4.10 [INFO] [stderr] Checking tower-http v0.6.6 [INFO] [stderr] Checking tokio-native-tls v0.3.1 [INFO] [stderr] Checking hyper v1.6.0 [INFO] [stderr] Checking hyper-util v0.1.14 [INFO] [stderr] Checking hyper-tls v0.6.0 [INFO] [stderr] Checking wiremock v0.6.4 [INFO] [stderr] Checking reqwest v0.12.20 [INFO] [stderr] Checking minifly-cli v0.2.2 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `Context` [INFO] [stdout] --> src/commands/dependencies.rs:3:22 [INFO] [stdout] | [INFO] [stdout] 3 | use anyhow::{Result, Context}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `uuid::Uuid` [INFO] [stdout] --> src/commands/deploy.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 14 | use uuid::Uuid; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `PathBuf` [INFO] [stdout] --> src/commands/secrets.rs:4:23 [INFO] [stdout] | [INFO] [stdout] 4 | use std::path::{Path, PathBuf}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Serialize` [INFO] [stdout] --> src/commands/status.rs:13:26 [INFO] [stdout] | [INFO] [stdout] 13 | use serde::{Deserialize, Serialize}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Context` [INFO] [stdout] --> src/commands/dependencies.rs:3:22 [INFO] [stdout] | [INFO] [stdout] 3 | use anyhow::{Result, Context}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `uuid::Uuid` [INFO] [stdout] --> src/commands/deploy.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 14 | use uuid::Uuid; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `PathBuf` [INFO] [stdout] --> src/commands/secrets.rs:4:23 [INFO] [stdout] | [INFO] [stdout] 4 | use std::path::{Path, PathBuf}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Serialize` [INFO] [stdout] --> src/commands/status.rs:13:26 [INFO] [stdout] | [INFO] [stdout] 13 | use serde::{Deserialize, Serialize}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `api_client` [INFO] [stdout] --> src/commands/serve.rs:713:31 [INFO] [stdout] | [INFO] [stdout] 713 | async fn get_deployed_app_url(api_client: &ApiClient, app_name: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_api_client` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `wait_for_dependencies` and `get_dependency_summary` are never used [INFO] [stdout] --> src/commands/dependencies.rs:148:18 [INFO] [stdout] | [INFO] [stdout] 35 | impl DependencyManager { [INFO] [stdout] | ---------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 148 | pub async fn wait_for_dependencies(&self, max_wait_seconds: u64) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 184 | pub async fn get_dependency_summary(&self) -> (usize, usize, Vec) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `startup_with_dependencies` is never used [INFO] [stdout] --> src/commands/dependencies.rs:246:14 [INFO] [stdout] | [INFO] [stdout] 246 | pub async fn startup_with_dependencies(api_client: &ApiClient, port: u16) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `quick_dependency_check` is never used [INFO] [stdout] --> src/commands/dependencies.rs:305:14 [INFO] [stdout] | [INFO] [stdout] 305 | pub async fn quick_dependency_check() -> (bool, Vec) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `statics`, `deploy`, and `swap_size_mb` are never read [INFO] [stdout] --> src/commands/deploy.rs:29:5 [INFO] [stdout] | [INFO] [stdout] 17 | struct FlyToml { [INFO] [stdout] | ------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 29 | statics: Option>, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 30 | deploy: Option, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 40 | swap_size_mb: Option, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `FlyToml` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `min_machines_running` and `processes` are never read [INFO] [stdout] --> src/commands/deploy.rs:159:5 [INFO] [stdout] | [INFO] [stdout] 150 | struct HttpServiceToml { [INFO] [stdout] | --------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 159 | min_machines_running: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 160 | #[serde(default)] [INFO] [stdout] 161 | processes: Option>, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `HttpServiceToml` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `size` and `processes` are never read [INFO] [stdout] --> src/commands/deploy.rs:167:5 [INFO] [stdout] | [INFO] [stdout] 165 | struct VmToml { [INFO] [stdout] | ------ fields in this struct [INFO] [stdout] 166 | #[serde(default)] [INFO] [stdout] 167 | size: Option, [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 177 | processes: Option>, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `VmToml` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `guest_path`, `url_prefix`, `tigris_bucket`, and `index_document` are never read [INFO] [stdout] --> src/commands/deploy.rs:182:5 [INFO] [stdout] | [INFO] [stdout] 181 | struct StaticsToml { [INFO] [stdout] | ----------- fields in this struct [INFO] [stdout] 182 | guest_path: String, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 183 | url_prefix: String, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 184 | #[serde(default)] [INFO] [stdout] 185 | tigris_bucket: Option, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 186 | #[serde(default)] [INFO] [stdout] 187 | index_document: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `StaticsToml` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `strategy`, `release_command`, and `wait_timeout` are never read [INFO] [stdout] --> src/commands/deploy.rs:193:5 [INFO] [stdout] | [INFO] [stdout] 191 | struct DeployToml { [INFO] [stdout] | ---------- fields in this struct [INFO] [stdout] 192 | #[serde(default)] [INFO] [stdout] 193 | strategy: Option, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 194 | #[serde(default)] [INFO] [stdout] 195 | release_command: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 196 | #[serde(default)] [INFO] [stdout] 197 | wait_timeout: Option, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `DeployToml` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `app_name` is never read [INFO] [stdout] --> src/commands/logs.rs:15:5 [INFO] [stdout] | [INFO] [stdout] 10 | struct LogEntry { [INFO] [stdout] | -------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 15 | app_name: String, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `LogEntry` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `machine_id`, `app_name`, `container_id`, and `last_activity` are never read [INFO] [stdout] --> src/commands/logs.rs:232:5 [INFO] [stdout] | [INFO] [stdout] 231 | struct LogsSummary { [INFO] [stdout] | ----------- fields in this struct [INFO] [stdout] 232 | machine_id: String, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 233 | app_name: String, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 234 | container_id: String, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 237 | last_activity: String, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `LogsSummary` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_deployed_app_url` is never used [INFO] [stdout] --> src/commands/serve.rs:713:10 [INFO] [stdout] | [INFO] [stdout] 713 | async fn get_deployed_app_url(api_client: &ApiClient, app_name: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `determine_app_url` is never used [INFO] [stdout] --> src/commands/serve.rs:930:10 [INFO] [stdout] | [INFO] [stdout] 930 | async fn determine_app_url(fly_toml_path: &std::path::Path) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `timestamp` and `summary` are never read [INFO] [stdout] --> src/commands/status.rs:50:5 [INFO] [stdout] | [INFO] [stdout] 46 | struct HealthResponse { [INFO] [stdout] | -------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 50 | timestamp: String, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 51 | services: HashMap, [INFO] [stdout] 52 | summary: String, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `HealthResponse` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `last_checked` and `details` are never read [INFO] [stdout] --> src/commands/status.rs:59:5 [INFO] [stdout] | [INFO] [stdout] 56 | struct ServiceHealth { [INFO] [stdout] | ------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 59 | last_checked: String, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 60 | response_time_ms: Option, [INFO] [stdout] 61 | details: HashMap, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ServiceHealth` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `health_check` is never used [INFO] [stdout] --> src/client.rs:193:18 [INFO] [stdout] | [INFO] [stdout] 12 | impl ApiClient { [INFO] [stdout] | -------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 193 | pub async fn health_check(&self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `api_client` [INFO] [stdout] --> src/commands/serve.rs:713:31 [INFO] [stdout] | [INFO] [stdout] 713 | async fn get_deployed_app_url(api_client: &ApiClient, app_name: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_api_client` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/commands/dependencies.rs:202:19 [INFO] [stdout] | [INFO] [stdout] 202 | .args(&["version", "--format", "{{.Server.Version}}"]) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["version", "--format", "{{.Server.Version}}"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] = note: `#[warn(clippy::needless_borrows_for_generic_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/commands/deploy.rs:405:5 [INFO] [stdout] | [INFO] [stdout] 405 | / match client.get(&format!("/apps/{}", app_name)).await { [INFO] [stdout] 406 | | Ok(response) => { [INFO] [stdout] 407 | | if response.status().is_success() { [INFO] [stdout] 408 | | println!("✓ App {} already exists", app_name.green()); [INFO] [stdout] ... | [INFO] [stdout] 412 | | Err(_) => {} [INFO] [stdout] 413 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 405 ~ if let Ok(response) = client.get(&format!("/apps/{}", app_name)).await { [INFO] [stdout] 406 + if response.status().is_success() { [INFO] [stdout] 407 ~ println!("✓ App {} already exists", app_name.green()); [INFO] [stdout] 408 + return Ok(()); [INFO] [stdout] 409 + } [INFO] [stdout] 410 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/commands/deploy.rs:455:19 [INFO] [stdout] | [INFO] [stdout] 455 | .args(&["build", "-t", &image_name, "."]) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["build", "-t", &image_name, "."]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `Option::map` [INFO] [stdout] --> src/commands/deploy.rs:517:12 [INFO] [stdout] | [INFO] [stdout] 517 | } else if let Some(http_service) = &config.http_service { [INFO] [stdout] | ____________^ [INFO] [stdout] 518 | | // New [http_service] format - convert to services [INFO] [stdout] 519 | | Some(vec![ServiceConfig { [INFO] [stdout] 520 | | ports: vec![ [INFO] [stdout] ... | [INFO] [stdout] 544 | | None [INFO] [stdout] 545 | | }; [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_map [INFO] [stdout] = note: `#[warn(clippy::manual_map)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 517 ~ } else { config.http_service.as_ref().map(|http_service| vec![ServiceConfig { [INFO] [stdout] 518 + ports: vec![ [INFO] [stdout] 519 + PortConfig { [INFO] [stdout] 520 + port: 80, [INFO] [stdout] 521 + handlers: vec!["http".to_string()], [INFO] [stdout] 522 + force_https: http_service.force_https, [INFO] [stdout] 523 + tls_options: None, [INFO] [stdout] 524 + }, [INFO] [stdout] 525 + PortConfig { [INFO] [stdout] 526 + port: 443, [INFO] [stdout] 527 + handlers: vec!["tls".to_string(), "http".to_string()], [INFO] [stdout] 528 + force_https: None, [INFO] [stdout] 529 + tls_options: None, [INFO] [stdout] 530 + }, [INFO] [stdout] 531 + ], [INFO] [stdout] 532 + protocol: "tcp".to_string(), [INFO] [stdout] 533 + internal_port: http_service.internal_port, [INFO] [stdout] 534 + autostart: http_service.auto_start_machines.map(|enabled| AutostartConfig { enabled: Some(enabled) }), [INFO] [stdout] 535 + autostop: http_service.auto_stop_machines.as_ref().map(|stop| AutostopConfig { [INFO] [stdout] 536 + enabled: Some(stop != "off"), [INFO] [stdout] 537 + seconds: None, [INFO] [stdout] 538 + }), [INFO] [stdout] 539 + force_instance_description: None, [INFO] [stdout] 540 ~ }]) }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/commands/deploy.rs:726:36 [INFO] [stdout] | [INFO] [stdout] 726 | ... path.extension().map_or(false, |ext| ext == "rs" || ext == "js" || ext == "py") { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] = note: `#[warn(clippy::unnecessary_map_or)]` on by default [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 726 - path.extension().map_or(false, |ext| ext == "rs" || ext == "js" || ext == "py") { [INFO] [stdout] 726 + path.extension().is_some_and(|ext| ext == "rs" || ext == "js" || ext == "py") { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/commands/deploy.rs:845:15 [INFO] [stdout] | [INFO] [stdout] 845 | .args(&["port", &container_name]) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["port", &container_name]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `Iterator::last` on a `DoubleEndedIterator`; this will needlessly iterate the entire iterator [INFO] [stdout] --> src/commands/deploy.rs:854:41 [INFO] [stdout] | [INFO] [stdout] 854 | if let Some(port) = mapping.split(':').last() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_ended_iterator_last [INFO] [stdout] = note: `#[warn(clippy::double_ended_iterator_last)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 854 - if let Some(port) = mapping.split(':').last() { [INFO] [stdout] 854 + if let Some(port) = mapping.split(':').next_back() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/commands/deploy.rs:867:15 [INFO] [stdout] | [INFO] [stdout] 867 | .args(&["ps", "--filter", &format!("name={}", container_name), "--format", "{{.Ports}}"]) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["ps", "--filter", &format!("name={}", container_name), "--format", "{{.Ports}}"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `Iterator::last` on a `DoubleEndedIterator`; this will needlessly iterate the entire iterator [INFO] [stdout] --> src/commands/deploy.rs:876:41 [INFO] [stdout] | [INFO] [stdout] 876 | if let Some(port) = host_part.split(':').last() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_ended_iterator_last [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 876 - if let Some(port) = host_part.split(':').last() { [INFO] [stdout] 876 + if let Some(port) = host_part.split(':').next_back() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/commands/deploy.rs:889:15 [INFO] [stdout] | [INFO] [stdout] 889 | .args(&["ps", "--filter", &format!("name=minifly-{}", app_name), "--format", "{{.Ports}}", "--latest"]) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["ps", "--filter", &format!("name=minifly-{}", app_name), "--format", "{{.Ports}}", "--latest"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `Iterator::last` on a `DoubleEndedIterator`; this will needlessly iterate the entire iterator [INFO] [stdout] --> src/commands/deploy.rs:897:41 [INFO] [stdout] | [INFO] [stdout] 897 | if let Some(port) = host_part.split(':').last() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_ended_iterator_last [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 897 - if let Some(port) = host_part.split(':').last() { [INFO] [stdout] 897 + if let Some(port) = host_part.split(':').next_back() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `wait_for_dependencies` and `get_dependency_summary` are never used [INFO] [stdout] --> src/commands/dependencies.rs:148:18 [INFO] [stdout] | [INFO] [stdout] 35 | impl DependencyManager { [INFO] [stdout] | ---------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 148 | pub async fn wait_for_dependencies(&self, max_wait_seconds: u64) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 184 | pub async fn get_dependency_summary(&self) -> (usize, usize, Vec) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `startup_with_dependencies` is never used [INFO] [stdout] --> src/commands/dependencies.rs:246:14 [INFO] [stdout] | [INFO] [stdout] 246 | pub async fn startup_with_dependencies(api_client: &ApiClient, port: u16) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `quick_dependency_check` is never used [INFO] [stdout] --> src/commands/dependencies.rs:305:14 [INFO] [stdout] | [INFO] [stdout] 305 | pub async fn quick_dependency_check() -> (bool, Vec) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `statics`, `deploy`, and `swap_size_mb` are never read [INFO] [stdout] --> src/commands/deploy.rs:29:5 [INFO] [stdout] | [INFO] [stdout] 17 | struct FlyToml { [INFO] [stdout] | ------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 29 | statics: Option>, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 30 | deploy: Option, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 40 | swap_size_mb: Option, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `FlyToml` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `min_machines_running` and `processes` are never read [INFO] [stdout] --> src/commands/deploy.rs:159:5 [INFO] [stdout] | [INFO] [stdout] 150 | struct HttpServiceToml { [INFO] [stdout] | --------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 159 | min_machines_running: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 160 | #[serde(default)] [INFO] [stdout] 161 | processes: Option>, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `HttpServiceToml` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `size` and `processes` are never read [INFO] [stdout] --> src/commands/deploy.rs:167:5 [INFO] [stdout] | [INFO] [stdout] 165 | struct VmToml { [INFO] [stdout] | ------ fields in this struct [INFO] [stdout] 166 | #[serde(default)] [INFO] [stdout] 167 | size: Option, [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 177 | processes: Option>, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `VmToml` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `guest_path`, `url_prefix`, `tigris_bucket`, and `index_document` are never read [INFO] [stdout] --> src/commands/deploy.rs:182:5 [INFO] [stdout] | [INFO] [stdout] 181 | struct StaticsToml { [INFO] [stdout] | ----------- fields in this struct [INFO] [stdout] 182 | guest_path: String, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 183 | url_prefix: String, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 184 | #[serde(default)] [INFO] [stdout] 185 | tigris_bucket: Option, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 186 | #[serde(default)] [INFO] [stdout] 187 | index_document: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `StaticsToml` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `strategy`, `release_command`, and `wait_timeout` are never read [INFO] [stdout] --> src/commands/deploy.rs:193:5 [INFO] [stdout] | [INFO] [stdout] 191 | struct DeployToml { [INFO] [stdout] | ---------- fields in this struct [INFO] [stdout] 192 | #[serde(default)] [INFO] [stdout] 193 | strategy: Option, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 194 | #[serde(default)] [INFO] [stdout] 195 | release_command: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 196 | #[serde(default)] [INFO] [stdout] 197 | wait_timeout: Option, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `DeployToml` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `app_name` is never read [INFO] [stdout] --> src/commands/logs.rs:15:5 [INFO] [stdout] | [INFO] [stdout] 10 | struct LogEntry { [INFO] [stdout] | -------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 15 | app_name: String, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `LogEntry` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `machine_id`, `app_name`, `container_id`, and `last_activity` are never read [INFO] [stdout] --> src/commands/logs.rs:232:5 [INFO] [stdout] | [INFO] [stdout] 231 | struct LogsSummary { [INFO] [stdout] | ----------- fields in this struct [INFO] [stdout] 232 | machine_id: String, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 233 | app_name: String, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 234 | container_id: String, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 237 | last_activity: String, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `LogsSummary` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_deployed_app_url` is never used [INFO] [stdout] --> src/commands/serve.rs:713:10 [INFO] [stdout] | [INFO] [stdout] 713 | async fn get_deployed_app_url(api_client: &ApiClient, app_name: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `determine_app_url` is never used [INFO] [stdout] --> src/commands/serve.rs:930:10 [INFO] [stdout] | [INFO] [stdout] 930 | async fn determine_app_url(fly_toml_path: &std::path::Path) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `timestamp` and `summary` are never read [INFO] [stdout] --> src/commands/status.rs:50:5 [INFO] [stdout] | [INFO] [stdout] 46 | struct HealthResponse { [INFO] [stdout] | -------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 50 | timestamp: String, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 51 | services: HashMap, [INFO] [stdout] 52 | summary: String, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `HealthResponse` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `last_checked` and `details` are never read [INFO] [stdout] --> src/commands/status.rs:59:5 [INFO] [stdout] | [INFO] [stdout] 56 | struct ServiceHealth { [INFO] [stdout] | ------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 59 | last_checked: String, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 60 | response_time_ms: Option, [INFO] [stdout] 61 | details: HashMap, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ServiceHealth` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `health_check` is never used [INFO] [stdout] --> src/client.rs:193:18 [INFO] [stdout] | [INFO] [stdout] 12 | impl ApiClient { [INFO] [stdout] | -------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 193 | pub async fn health_check(&self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/commands/init.rs:213:26 [INFO] [stdout] | [INFO] [stdout] 213 | .with_prompt(&format!("Add {}?", template)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `format!("Add {}?", template)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/commands/dependencies.rs:202:19 [INFO] [stdout] | [INFO] [stdout] 202 | .args(&["version", "--format", "{{.Server.Version}}"]) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["version", "--format", "{{.Server.Version}}"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] = note: `#[warn(clippy::needless_borrows_for_generic_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/commands/serve.rs:211:8 [INFO] [stdout] | [INFO] [stdout] 211 | if !tokio::fs::metadata(db_path).await.is_ok() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `tokio::fs::metadata(db_path).await.is_err()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/commands/deploy.rs:405:5 [INFO] [stdout] | [INFO] [stdout] 405 | / match client.get(&format!("/apps/{}", app_name)).await { [INFO] [stdout] 406 | | Ok(response) => { [INFO] [stdout] 407 | | if response.status().is_success() { [INFO] [stdout] 408 | | println!("✓ App {} already exists", app_name.green()); [INFO] [stdout] ... | [INFO] [stdout] 412 | | Err(_) => {} [INFO] [stdout] 413 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 405 ~ if let Ok(response) = client.get(&format!("/apps/{}", app_name)).await { [INFO] [stdout] 406 + if response.status().is_success() { [INFO] [stdout] 407 ~ println!("✓ App {} already exists", app_name.green()); [INFO] [stdout] 408 + return Ok(()); [INFO] [stdout] 409 + } [INFO] [stdout] 410 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/commands/deploy.rs:455:19 [INFO] [stdout] | [INFO] [stdout] 455 | .args(&["build", "-t", &image_name, "."]) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["build", "-t", &image_name, "."]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `Option::map` [INFO] [stdout] --> src/commands/deploy.rs:517:12 [INFO] [stdout] | [INFO] [stdout] 517 | } else if let Some(http_service) = &config.http_service { [INFO] [stdout] | ____________^ [INFO] [stdout] 518 | | // New [http_service] format - convert to services [INFO] [stdout] 519 | | Some(vec![ServiceConfig { [INFO] [stdout] 520 | | ports: vec![ [INFO] [stdout] ... | [INFO] [stdout] 544 | | None [INFO] [stdout] 545 | | }; [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_map [INFO] [stdout] = note: `#[warn(clippy::manual_map)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 517 ~ } else { config.http_service.as_ref().map(|http_service| vec![ServiceConfig { [INFO] [stdout] 518 + ports: vec![ [INFO] [stdout] 519 + PortConfig { [INFO] [stdout] 520 + port: 80, [INFO] [stdout] 521 + handlers: vec!["http".to_string()], [INFO] [stdout] 522 + force_https: http_service.force_https, [INFO] [stdout] 523 + tls_options: None, [INFO] [stdout] 524 + }, [INFO] [stdout] 525 + PortConfig { [INFO] [stdout] 526 + port: 443, [INFO] [stdout] 527 + handlers: vec!["tls".to_string(), "http".to_string()], [INFO] [stdout] 528 + force_https: None, [INFO] [stdout] 529 + tls_options: None, [INFO] [stdout] 530 + }, [INFO] [stdout] 531 + ], [INFO] [stdout] 532 + protocol: "tcp".to_string(), [INFO] [stdout] 533 + internal_port: http_service.internal_port, [INFO] [stdout] 534 + autostart: http_service.auto_start_machines.map(|enabled| AutostartConfig { enabled: Some(enabled) }), [INFO] [stdout] 535 + autostop: http_service.auto_stop_machines.as_ref().map(|stop| AutostopConfig { [INFO] [stdout] 536 + enabled: Some(stop != "off"), [INFO] [stdout] 537 + seconds: None, [INFO] [stdout] 538 + }), [INFO] [stdout] 539 + force_instance_description: None, [INFO] [stdout] 540 ~ }]) }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/commands/serve.rs:437:15 [INFO] [stdout] | [INFO] [stdout] 437 | .args(&["ps", "-a", "--filter", "name=minifly-", "--format", "{{.ID}}"]) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["ps", "-a", "--filter", "name=minifly-", "--format", "{{.ID}}"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/commands/serve.rs:444:23 [INFO] [stdout] | [INFO] [stdout] 444 | .args(&["stop", container_id]) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["stop", container_id]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/commands/serve.rs:447:23 [INFO] [stdout] | [INFO] [stdout] 447 | .args(&["rm", container_id]) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["rm", container_id]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/commands/deploy.rs:726:36 [INFO] [stdout] | [INFO] [stdout] 726 | ... path.extension().map_or(false, |ext| ext == "rs" || ext == "js" || ext == "py") { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] = note: `#[warn(clippy::unnecessary_map_or)]` on by default [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 726 - path.extension().map_or(false, |ext| ext == "rs" || ext == "js" || ext == "py") { [INFO] [stdout] 726 + path.extension().is_some_and(|ext| ext == "rs" || ext == "js" || ext == "py") { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/commands/serve.rs:504:15 [INFO] [stdout] | [INFO] [stdout] 504 | .args(&["-f", "litefs"]) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: change this to: `["-f", "litefs"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/commands/deploy.rs:845:15 [INFO] [stdout] | [INFO] [stdout] 845 | .args(&["port", &container_name]) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["port", &container_name]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `Iterator::last` on a `DoubleEndedIterator`; this will needlessly iterate the entire iterator [INFO] [stdout] --> src/commands/deploy.rs:854:41 [INFO] [stdout] | [INFO] [stdout] 854 | if let Some(port) = mapping.split(':').last() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_ended_iterator_last [INFO] [stdout] = note: `#[warn(clippy::double_ended_iterator_last)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 854 - if let Some(port) = mapping.split(':').last() { [INFO] [stdout] 854 + if let Some(port) = mapping.split(':').next_back() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/commands/deploy.rs:867:15 [INFO] [stdout] | [INFO] [stdout] 867 | .args(&["ps", "--filter", &format!("name={}", container_name), "--format", "{{.Ports}}"]) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["ps", "--filter", &format!("name={}", container_name), "--format", "{{.Ports}}"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/commands/serve.rs:519:23 [INFO] [stdout] | [INFO] [stdout] 519 | .args(&["-TERM", "litefs"]) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: change this to: `["-TERM", "litefs"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `Iterator::last` on a `DoubleEndedIterator`; this will needlessly iterate the entire iterator [INFO] [stdout] --> src/commands/deploy.rs:876:41 [INFO] [stdout] | [INFO] [stdout] 876 | if let Some(port) = host_part.split(':').last() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_ended_iterator_last [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 876 - if let Some(port) = host_part.split(':').last() { [INFO] [stdout] 876 + if let Some(port) = host_part.split(':').next_back() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/commands/deploy.rs:889:15 [INFO] [stdout] | [INFO] [stdout] 889 | .args(&["ps", "--filter", &format!("name=minifly-{}", app_name), "--format", "{{.Ports}}", "--latest"]) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["ps", "--filter", &format!("name=minifly-{}", app_name), "--format", "{{.Ports}}", "--latest"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `Iterator::last` on a `DoubleEndedIterator`; this will needlessly iterate the entire iterator [INFO] [stdout] --> src/commands/deploy.rs:897:41 [INFO] [stdout] | [INFO] [stdout] 897 | if let Some(port) = host_part.split(':').last() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_ended_iterator_last [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 897 - if let Some(port) = host_part.split(':').last() { [INFO] [stdout] 897 + if let Some(port) = host_part.split(':').next_back() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/commands/serve.rs:555:15 [INFO] [stdout] | [INFO] [stdout] 555 | .args(&["-ti", &format!(":{}", port)]) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["-ti", &format!(":{}", port)]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/commands/serve.rs:566:27 [INFO] [stdout] | [INFO] [stdout] 566 | .args(&["-TERM", pid]) [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: change this to: `["-TERM", pid]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/commands/serve.rs:575:31 [INFO] [stdout] | [INFO] [stdout] 575 | .args(&["-KILL", pid]) [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: change this to: `["-KILL", pid]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/commands/serve.rs:587:23 [INFO] [stdout] | [INFO] [stdout] 587 | .args(&["-f", "minifly-api"]) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["-f", "minifly-api"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/commands/serve.rs:609:15 [INFO] [stdout] | [INFO] [stdout] 609 | .args(&["container", "prune", "-f", "--filter", "label=minifly.managed=true"]) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["container", "prune", "-f", "--filter", "label=minifly.managed=true"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/commands/serve.rs:724:15 [INFO] [stdout] | [INFO] [stdout] 724 | .args(&["ps", "-q", "--filter", &format!("name=minifly-{}", app_name), "--latest"]) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["ps", "-q", "--filter", &format!("name=minifly-{}", app_name), "--latest"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/commands/serve.rs:733:27 [INFO] [stdout] | [INFO] [stdout] 733 | .args(&["port", &container_id]) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["port", &container_id]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `Iterator::last` on a `DoubleEndedIterator`; this will needlessly iterate the entire iterator [INFO] [stdout] --> src/commands/serve.rs:742:53 [INFO] [stdout] | [INFO] [stdout] 742 | ... if let Some(port) = mapping.split(':').last() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_ended_iterator_last [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 742 - if let Some(port) = mapping.split(':').last() { [INFO] [stdout] 742 + if let Some(port) = mapping.split(':').next_back() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/commands/serve.rs:758:15 [INFO] [stdout] | [INFO] [stdout] 758 | .args(&["ps", "--filter", &format!("name=minifly-{}", app_name), "--format", "{{.Ports}}"]) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["ps", "--filter", &format!("name=minifly-{}", app_name), "--format", "{{.Ports}}"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `Iterator::last` on a `DoubleEndedIterator`; this will needlessly iterate the entire iterator [INFO] [stdout] --> src/commands/serve.rs:771:32 [INFO] [stdout] | [INFO] [stdout] 771 | let port = host_part [INFO] [stdout] | ________________________________^ [INFO] [stdout] 772 | | .split(':') [INFO] [stdout] 773 | | .last() [INFO] [stdout] | |_______________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_ended_iterator_last [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 773 - .last() [INFO] [stdout] 773 + .next_back() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this loop could be written as a `while let` loop [INFO] [stdout] --> src/commands/serve.rs:865:9 [INFO] [stdout] | [INFO] [stdout] 865 | / loop { [INFO] [stdout] 866 | | match rx.recv() { [INFO] [stdout] 867 | | Ok(event) => { [INFO] [stdout] 868 | | match event { [INFO] [stdout] ... | [INFO] [stdout] 892 | | } [INFO] [stdout] | |_________^ help: try: `while let Ok(event) = rx.recv() { .. }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stdout] = note: `#[warn(clippy::while_let_loop)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/commands/serve.rs:870:29 [INFO] [stdout] | [INFO] [stdout] 870 | / ... if should_trigger_redeploy(&path) { [INFO] [stdout] 871 | | ... println!("\n{}", "🔄 File change detected, redeploying...".yellow()); [INFO] [stdout] ... | [INFO] [stdout] 884 | | ... println!("{}", "👀 Watching for changes...".dimmed()); [INFO] [stdout] 885 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] = note: `#[warn(clippy::collapsible_match)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 869 ~ DebouncedEvent::Write(path) | DebouncedEvent::Create(path) [INFO] [stdout] 870 ~ if should_trigger_redeploy(&path) => { [INFO] [stdout] 871 | println!("\n{}", "🔄 File change detected, redeploying...".yellow()); [INFO] [stdout] ... [INFO] [stdout] 884 | println!("{}", "👀 Watching for changes...".dimmed()); [INFO] [stdout] 885 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/commands/init.rs:213:26 [INFO] [stdout] | [INFO] [stdout] 213 | .with_prompt(&format!("Add {}?", template)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `format!("Add {}?", template)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/commands/status.rs:235:72 [INFO] [stdout] | [INFO] [stdout] 235 | let litefs_status = match std::process::Command::new("pgrep").args(&["-f", "litefs"]).output() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: change this to: `["-f", "litefs"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/commands/status.rs:260:17 [INFO] [stdout] | [INFO] [stdout] 260 | / match client.list_machines(&app.name).await { [INFO] [stdout] 261 | | Ok(machines) => { [INFO] [stdout] 262 | | for machine in machines { [INFO] [stdout] 263 | | let region = machine.region.clone(); [INFO] [stdout] ... | [INFO] [stdout] 283 | | Err(_) => {} [INFO] [stdout] 284 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 260 ~ if let Ok(machines) = client.list_machines(&app.name).await { [INFO] [stdout] 261 + for machine in machines { [INFO] [stdout] 262 + let region = machine.region.clone(); [INFO] [stdout] 263 + let summary = region_summaries.entry(region.clone()).or_insert_with(|| { [INFO] [stdout] 264 + RegionSummary { [INFO] [stdout] 265 + region: region.clone(), [INFO] [stdout] 266 + apps: 0, [INFO] [stdout] 267 + machines: 0, [INFO] [stdout] 268 + running: 0, [INFO] [stdout] 269 + status: "Active".green().to_string(), [INFO] [stdout] 270 + } [INFO] [stdout] 271 + }); [INFO] [stdout] 272 + [INFO] [stdout] 273 + summary.apps = summary.apps.max(1); // Count this app [INFO] [stdout] 274 + summary.machines += 1; [INFO] [stdout] 275 + [INFO] [stdout] 276 + // Check if machine is running (simplified check) [INFO] [stdout] 277 + if format!("{:?}", machine.state).to_lowercase().contains("start") { [INFO] [stdout] 278 + summary.running += 1; [INFO] [stdout] 279 + } [INFO] [stdout] 280 + } [INFO] [stdout] 281 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stdout] --> src/commands/stop.rs:214:16 [INFO] [stdout] | [INFO] [stdout] 214 | if let Ok(_) = client.post(&shutdown_url).send().await { [INFO] [stdout] | -------^^^^^------------------------------------------ help: try: `if client.post(&shutdown_url).send().await.is_ok()` [INFO] [stdout] | [INFO] [stdout] = note: this will change drop order of the result, as well as all temporaries [INFO] [stdout] = note: add `#[allow(clippy::redundant_pattern_matching)]` if this is important [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] = note: `#[warn(clippy::redundant_pattern_matching)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stdout] --> src/commands/stop.rs:238:24 [INFO] [stdout] | [INFO] [stdout] 238 | if let Ok(_) = pid.trim().parse::() { [INFO] [stdout] | -------^^^^^---------------------------- help: try: `if pid.trim().parse::().is_ok()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/commands/stop.rs:267:15 [INFO] [stdout] | [INFO] [stdout] 267 | .args(&["volume", "prune", "-f", "--filter", "label=minifly"]) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["volume", "prune", "-f", "--filter", "label=minifly"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/commands/stop.rs:272:15 [INFO] [stdout] | [INFO] [stdout] 272 | .args(&["container", "prune", "-f", "--filter", "label=minifly"]) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["container", "prune", "-f", "--filter", "label=minifly"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/commands/serve.rs:211:8 [INFO] [stdout] | [INFO] [stdout] 211 | if !tokio::fs::metadata(db_path).await.is_ok() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `tokio::fs::metadata(db_path).await.is_err()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/commands/serve.rs:437:15 [INFO] [stdout] | [INFO] [stdout] 437 | .args(&["ps", "-a", "--filter", "name=minifly-", "--format", "{{.ID}}"]) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["ps", "-a", "--filter", "name=minifly-", "--format", "{{.ID}}"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/commands/serve.rs:444:23 [INFO] [stdout] | [INFO] [stdout] 444 | .args(&["stop", container_id]) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["stop", container_id]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/commands/serve.rs:447:23 [INFO] [stdout] | [INFO] [stdout] 447 | .args(&["rm", container_id]) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["rm", container_id]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/commands/serve.rs:504:15 [INFO] [stdout] | [INFO] [stdout] 504 | .args(&["-f", "litefs"]) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: change this to: `["-f", "litefs"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/commands/serve.rs:519:23 [INFO] [stdout] | [INFO] [stdout] 519 | .args(&["-TERM", "litefs"]) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: change this to: `["-TERM", "litefs"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/commands/serve.rs:555:15 [INFO] [stdout] | [INFO] [stdout] 555 | .args(&["-ti", &format!(":{}", port)]) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["-ti", &format!(":{}", port)]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/commands/serve.rs:566:27 [INFO] [stdout] | [INFO] [stdout] 566 | .args(&["-TERM", pid]) [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: change this to: `["-TERM", pid]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/commands/serve.rs:575:31 [INFO] [stdout] | [INFO] [stdout] 575 | .args(&["-KILL", pid]) [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: change this to: `["-KILL", pid]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/commands/serve.rs:587:23 [INFO] [stdout] | [INFO] [stdout] 587 | .args(&["-f", "minifly-api"]) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["-f", "minifly-api"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/commands/serve.rs:609:15 [INFO] [stdout] | [INFO] [stdout] 609 | .args(&["container", "prune", "-f", "--filter", "label=minifly.managed=true"]) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["container", "prune", "-f", "--filter", "label=minifly.managed=true"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/commands/serve.rs:724:15 [INFO] [stdout] | [INFO] [stdout] 724 | .args(&["ps", "-q", "--filter", &format!("name=minifly-{}", app_name), "--latest"]) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["ps", "-q", "--filter", &format!("name=minifly-{}", app_name), "--latest"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/commands/serve.rs:733:27 [INFO] [stdout] | [INFO] [stdout] 733 | .args(&["port", &container_id]) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["port", &container_id]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `Iterator::last` on a `DoubleEndedIterator`; this will needlessly iterate the entire iterator [INFO] [stdout] --> src/commands/serve.rs:742:53 [INFO] [stdout] | [INFO] [stdout] 742 | ... if let Some(port) = mapping.split(':').last() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_ended_iterator_last [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 742 - if let Some(port) = mapping.split(':').last() { [INFO] [stdout] 742 + if let Some(port) = mapping.split(':').next_back() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/commands/serve.rs:758:15 [INFO] [stdout] | [INFO] [stdout] 758 | .args(&["ps", "--filter", &format!("name=minifly-{}", app_name), "--format", "{{.Ports}}"]) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["ps", "--filter", &format!("name=minifly-{}", app_name), "--format", "{{.Ports}}"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `Iterator::last` on a `DoubleEndedIterator`; this will needlessly iterate the entire iterator [INFO] [stdout] --> src/commands/serve.rs:771:32 [INFO] [stdout] | [INFO] [stdout] 771 | let port = host_part [INFO] [stdout] | ________________________________^ [INFO] [stdout] 772 | | .split(':') [INFO] [stdout] 773 | | .last() [INFO] [stdout] | |_______________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_ended_iterator_last [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 773 - .last() [INFO] [stdout] 773 + .next_back() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this loop could be written as a `while let` loop [INFO] [stdout] --> src/commands/serve.rs:865:9 [INFO] [stdout] | [INFO] [stdout] 865 | / loop { [INFO] [stdout] 866 | | match rx.recv() { [INFO] [stdout] 867 | | Ok(event) => { [INFO] [stdout] 868 | | match event { [INFO] [stdout] ... | [INFO] [stdout] 892 | | } [INFO] [stdout] | |_________^ help: try: `while let Ok(event) = rx.recv() { .. }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stdout] = note: `#[warn(clippy::while_let_loop)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/commands/serve.rs:870:29 [INFO] [stdout] | [INFO] [stdout] 870 | / ... if should_trigger_redeploy(&path) { [INFO] [stdout] 871 | | ... println!("\n{}", "🔄 File change detected, redeploying...".yellow()); [INFO] [stdout] ... | [INFO] [stdout] 884 | | ... println!("{}", "👀 Watching for changes...".dimmed()); [INFO] [stdout] 885 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] = note: `#[warn(clippy::collapsible_match)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 869 ~ DebouncedEvent::Write(path) | DebouncedEvent::Create(path) [INFO] [stdout] 870 ~ if should_trigger_redeploy(&path) => { [INFO] [stdout] 871 | println!("\n{}", "🔄 File change detected, redeploying...".yellow()); [INFO] [stdout] ... [INFO] [stdout] 884 | println!("{}", "👀 Watching for changes...".dimmed()); [INFO] [stdout] 885 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/commands/status.rs:235:72 [INFO] [stdout] | [INFO] [stdout] 235 | let litefs_status = match std::process::Command::new("pgrep").args(&["-f", "litefs"]).output() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: change this to: `["-f", "litefs"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/commands/status.rs:260:17 [INFO] [stdout] | [INFO] [stdout] 260 | / match client.list_machines(&app.name).await { [INFO] [stdout] 261 | | Ok(machines) => { [INFO] [stdout] 262 | | for machine in machines { [INFO] [stdout] 263 | | let region = machine.region.clone(); [INFO] [stdout] ... | [INFO] [stdout] 283 | | Err(_) => {} [INFO] [stdout] 284 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 260 ~ if let Ok(machines) = client.list_machines(&app.name).await { [INFO] [stdout] 261 + for machine in machines { [INFO] [stdout] 262 + let region = machine.region.clone(); [INFO] [stdout] 263 + let summary = region_summaries.entry(region.clone()).or_insert_with(|| { [INFO] [stdout] 264 + RegionSummary { [INFO] [stdout] 265 + region: region.clone(), [INFO] [stdout] 266 + apps: 0, [INFO] [stdout] 267 + machines: 0, [INFO] [stdout] 268 + running: 0, [INFO] [stdout] 269 + status: "Active".green().to_string(), [INFO] [stdout] 270 + } [INFO] [stdout] 271 + }); [INFO] [stdout] 272 + [INFO] [stdout] 273 + summary.apps = summary.apps.max(1); // Count this app [INFO] [stdout] 274 + summary.machines += 1; [INFO] [stdout] 275 + [INFO] [stdout] 276 + // Check if machine is running (simplified check) [INFO] [stdout] 277 + if format!("{:?}", machine.state).to_lowercase().contains("start") { [INFO] [stdout] 278 + summary.running += 1; [INFO] [stdout] 279 + } [INFO] [stdout] 280 + } [INFO] [stdout] 281 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stdout] --> src/commands/stop.rs:214:16 [INFO] [stdout] | [INFO] [stdout] 214 | if let Ok(_) = client.post(&shutdown_url).send().await { [INFO] [stdout] | -------^^^^^------------------------------------------ help: try: `if client.post(&shutdown_url).send().await.is_ok()` [INFO] [stdout] | [INFO] [stdout] = note: this will change drop order of the result, as well as all temporaries [INFO] [stdout] = note: add `#[allow(clippy::redundant_pattern_matching)]` if this is important [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] = note: `#[warn(clippy::redundant_pattern_matching)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stdout] --> src/commands/stop.rs:238:24 [INFO] [stdout] | [INFO] [stdout] 238 | if let Ok(_) = pid.trim().parse::() { [INFO] [stdout] | -------^^^^^---------------------------- help: try: `if pid.trim().parse::().is_ok()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/commands/stop.rs:267:15 [INFO] [stdout] | [INFO] [stdout] 267 | .args(&["volume", "prune", "-f", "--filter", "label=minifly"]) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["volume", "prune", "-f", "--filter", "label=minifly"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/commands/stop.rs:272:15 [INFO] [stdout] | [INFO] [stdout] 272 | .args(&["container", "prune", "-f", "--filter", "label=minifly"]) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["container", "prune", "-f", "--filter", "label=minifly"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 27.19s [INFO] running `Command { std: "docker" "inspect" "52f2f48d41b3ca44cd39d4d274637bb1a95e2518ac7edf65d9ffbe2dc2342d98", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "52f2f48d41b3ca44cd39d4d274637bb1a95e2518ac7edf65d9ffbe2dc2342d98", kill_on_drop: false }` [INFO] [stdout] 52f2f48d41b3ca44cd39d4d274637bb1a95e2518ac7edf65d9ffbe2dc2342d98