[INFO] fetching crate devenvious 0.1.1... [INFO] linting devenvious-0.1.1 against nightly for clippy-nonminimal_bool-denied [INFO] extracting crate devenvious 0.1.1 into /workspace/builds/worker-2-tc1/source [INFO] started tweaking crates.io crate devenvious 0.1.1 [INFO] finished tweaking crates.io crate devenvious 0.1.1 [INFO] tweaked toml for crates.io crate devenvious 0.1.1 written to /workspace/builds/worker-2-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate devenvious 0.1.1 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 devenvious 0.1.1 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] warning: file `/workspace/builds/worker-2-tc1/source/src/main.rs` found to be present in multiple build targets: [INFO] [stderr] * `bin` target `devenvious` [INFO] [stderr] * `bin` target `dvnv` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded form_urlencoded v1.2.0 [INFO] [stderr] Downloaded percent-encoding v2.3.0 [INFO] [stderr] Downloaded unicode-bidi v0.3.13 [INFO] [stderr] Downloaded git-trailers v0.1.0 [INFO] [stderr] Downloaded inline_colorization v0.1.6 [INFO] [stderr] Downloaded promptly v0.3.1 [INFO] [stderr] Downloaded anstyle-wincon v3.0.1 [INFO] [stderr] Downloaded clone_with v0.1.0 [INFO] [stderr] Downloaded libredox v0.0.1 [INFO] [stderr] Downloaded errno v0.3.7 [INFO] [stderr] Downloaded anstream v0.6.4 [INFO] [stderr] Downloaded serde v1.0.193 [INFO] [stderr] Downloaded anyhow v1.0.75 [INFO] [stderr] Downloaded clap v4.4.8 [INFO] [stderr] Downloaded memchr v2.6.4 [INFO] [stderr] Downloaded rustyline v9.1.2 [INFO] [stderr] Downloaded base64 v0.21.5 [INFO] [stderr] Downloaded serde_json v1.0.108 [INFO] [stderr] Downloaded ureq v2.9.0 [INFO] [stderr] Downloaded clap_builder v4.4.8 [INFO] [stderr] Downloaded ryu v1.0.15 [INFO] [stderr] Downloaded serde_derive v1.0.193 [INFO] [stderr] Downloaded git2 v0.18.3 [INFO] [stderr] Downloaded syn v2.0.39 [INFO] [stderr] Downloaded rustls v0.21.9 [INFO] [stderr] Downloaded webpki-roots v0.25.2 [INFO] [stderr] Downloaded anstyle-parse v0.2.2 [INFO] [stderr] Downloaded jobserver v0.1.28 [INFO] [stderr] Downloaded proc-macro2 v1.0.69 [INFO] [stderr] Downloaded url v2.4.1 [INFO] [stderr] Downloaded rustix v0.38.25 [INFO] [stderr] Downloaded thiserror v1.0.50 [INFO] [stderr] Downloaded thiserror-impl v1.0.50 [INFO] [stderr] Downloaded redox_users v0.4.4 [INFO] [stderr] Downloaded fd-lock v3.0.13 [INFO] [stderr] Downloaded itoa v1.0.9 [INFO] [stderr] Downloaded libc v0.2.150 [INFO] [stderr] Downloaded linux-raw-sys v0.4.11 [INFO] [stderr] Downloaded libgit2-sys v0.16.2+1.7.2 [INFO] [stderr] Downloaded libz-sys v1.1.16 [INFO] [stderr] Downloaded ring v0.17.5 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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] d9c6dc0b0a49ac5d6f29eab8b8516e8ff72212d4c35512bc61df5042ec76fce1 [INFO] running `Command { std: "docker" "start" "-a" "d9c6dc0b0a49ac5d6f29eab8b8516e8ff72212d4c35512bc61df5042ec76fce1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "d9c6dc0b0a49ac5d6f29eab8b8516e8ff72212d4c35512bc61df5042ec76fce1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "d9c6dc0b0a49ac5d6f29eab8b8516e8ff72212d4c35512bc61df5042ec76fce1", kill_on_drop: false }` [INFO] [stdout] d9c6dc0b0a49ac5d6f29eab8b8516e8ff72212d4c35512bc61df5042ec76fce1 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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] 1692e8e00db1ce0900fc3c581f20e901e3ef8dac107d1801f3f37e62e2de914c [INFO] running `Command { std: "docker" "start" "-a" "1692e8e00db1ce0900fc3c581f20e901e3ef8dac107d1801f3f37e62e2de914c", kill_on_drop: false }` [INFO] [stderr] warning: file `/opt/rustwide/workdir/src/main.rs` found to be present in multiple build targets: [INFO] [stderr] * `bin` target `devenvious` [INFO] [stderr] * `bin` target `dvnv` [INFO] [stderr] Compiling libc v0.2.150 [INFO] [stderr] Compiling proc-macro2 v1.0.69 [INFO] [stderr] Checking utf8parse v0.2.1 [INFO] [stderr] Checking log v0.4.20 [INFO] [stderr] Checking bitflags v2.4.1 [INFO] [stderr] Compiling rustix v0.38.25 [INFO] [stderr] Checking percent-encoding v2.3.0 [INFO] [stderr] Compiling memoffset v0.6.5 [INFO] [stderr] Checking linux-raw-sys v0.4.11 [INFO] [stderr] Checking smallvec v1.11.2 [INFO] [stderr] Checking unicode-bidi v0.3.13 [INFO] [stderr] Compiling serde v1.0.193 [INFO] [stderr] Checking memchr v2.6.4 [INFO] [stderr] Checking unicode-normalization v0.1.22 [INFO] [stderr] Checking anstyle v1.0.4 [INFO] [stderr] Compiling serde_json v1.0.108 [INFO] [stderr] Checking anstyle-parse v0.2.2 [INFO] [stderr] Checking anstyle-query v1.0.0 [INFO] [stderr] Checking form_urlencoded v1.2.0 [INFO] [stderr] Checking colorchoice v1.0.0 [INFO] [stderr] Checking endian-type v0.1.2 [INFO] [stderr] Compiling thiserror v1.0.50 [INFO] [stderr] Compiling rustls v0.21.9 [INFO] [stderr] Checking miniz_oxide v0.7.1 [INFO] [stderr] Checking ryu v1.0.15 [INFO] [stderr] Checking unicode-segmentation v1.10.1 [INFO] [stderr] Checking anstream v0.6.4 [INFO] [stderr] Checking clap_lex v0.6.0 [INFO] [stderr] Checking itoa v1.0.9 [INFO] [stderr] Compiling anyhow v1.0.75 [INFO] [stderr] Checking once_cell v1.18.0 [INFO] [stderr] Checking base64 v0.21.5 [INFO] [stderr] Checking webpki-roots v0.25.2 [INFO] [stderr] Checking inline_colorization v0.1.6 [INFO] [stderr] Checking nibble_vec v0.1.0 [INFO] [stderr] Checking nom v7.1.3 [INFO] [stderr] Checking flate2 v1.0.28 [INFO] [stderr] Checking radix_trie v0.2.1 [INFO] [stderr] Checking clap_builder v4.4.8 [INFO] [stderr] Checking idna v0.4.0 [INFO] [stderr] Checking url v2.4.1 [INFO] [stderr] Compiling quote v1.0.33 [INFO] [stderr] Compiling jobserver v0.1.28 [INFO] [stderr] Compiling cc v1.0.83 [INFO] [stderr] Compiling syn v2.0.39 [INFO] [stderr] Checking fd-lock v3.0.13 [INFO] [stderr] Compiling ring v0.17.5 [INFO] [stderr] Compiling libz-sys v1.1.16 [INFO] [stderr] Compiling libgit2-sys v0.16.2+1.7.2 [INFO] [stderr] Checking getrandom v0.2.11 [INFO] [stderr] Checking dirs-sys-next v0.1.2 [INFO] [stderr] Checking nix v0.23.2 [INFO] [stderr] Checking dirs-next v2.0.0 [INFO] [stderr] Checking rustls-webpki v0.101.7 [INFO] [stderr] Checking sct v0.7.1 [INFO] [stderr] Checking rustyline v9.1.2 [INFO] [stderr] Compiling serde_derive v1.0.193 [INFO] [stderr] Compiling thiserror-impl v1.0.50 [INFO] [stderr] Compiling clap_derive v4.4.7 [INFO] [stderr] Compiling clone_with v0.1.0 [INFO] [stderr] Checking promptly v0.3.1 [INFO] [stderr] Checking git2 v0.18.3 [INFO] [stderr] Checking git-trailers v0.1.0 [INFO] [stderr] Checking clap v4.4.8 [INFO] [stderr] Checking ureq v2.9.0 [INFO] [stderr] Checking devenvious v0.1.1 (/opt/rustwide/workdir) [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> src/gitlab.rs:11:1 [INFO] [stdout] | [INFO] [stdout] 11 | use ureq; [INFO] [stdout] | ^^^^^^^^^ help: remove it entirely [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports [INFO] [stdout] = note: `#[warn(clippy::single_component_path_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> src/gitlab.rs:11:1 [INFO] [stdout] | [INFO] [stdout] 11 | use ureq; [INFO] [stdout] | ^^^^^^^^^ help: remove it entirely [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports [INFO] [stdout] = note: `#[warn(clippy::single_component_path_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> src/gitlab.rs:11:1 [INFO] [stdout] | [INFO] [stdout] 11 | use ureq; [INFO] [stdout] | ^^^^^^^^^ help: remove it entirely [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports [INFO] [stdout] = note: `#[warn(clippy::single_component_path_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> src/gitlab.rs:11:1 [INFO] [stdout] | [INFO] [stdout] 11 | use ureq; [INFO] [stdout] | ^^^^^^^^^ help: remove it entirely [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports [INFO] [stdout] = note: `#[warn(clippy::single_component_path_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: passing a unit value to a function [INFO] [stdout] --> src/git.rs:54:5 [INFO] [stdout] | [INFO] [stdout] 54 | / Ok( [INFO] [stdout] 55 | | if is_head_initial_commit(&repo).context("check if HEAD contains files")? { [INFO] [stdout] 56 | | let staged = staged_files_lossy(&repo)?; [INFO] [stdout] 57 | | if !staged.is_empty() { [INFO] [stdout] ... | [INFO] [stdout] 92 | | }, [INFO] [stdout] 93 | | ) [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stdout] = note: `#[warn(clippy::unit_arg)]` on by default [INFO] [stdout] help: move the expression in front of the call and replace it with the unit literal `()` [INFO] [stdout] | [INFO] [stdout] 54 ~ let _: () = if is_head_initial_commit(&repo).context("check if HEAD contains files")? { [INFO] [stdout] 55 + let staged = staged_files_lossy(&repo)?; [INFO] [stdout] 56 + if !staged.is_empty() { [INFO] [stdout] 57 + println!("Found staged files, here's the status:"); [INFO] [stdout] 58 + repo.assert_cmd("git", ["status"], true)?; [INFO] [stdout] 59 + match prompt_yes_no("Commit?")? { [INFO] [stdout] 60 + false => { [INFO] [stdout] 61 + println!("Fine - do what you need to do & run this command again"); [INFO] [stdout] 62 + exit(2); [INFO] [stdout] 63 + } [INFO] [stdout] 64 + true => { /* continue */ } [INFO] [stdout] 65 + }; [INFO] [stdout] 66 + } else { [INFO] [stdout] 67 + println!("Nothing added yet - with current settings, git would add:\n"); [INFO] [stdout] 68 + loop { [INFO] [stdout] 69 + repo.assert_cmd("git", ["add", "-n", "."], true) [INFO] [stdout] 70 + .context("Failed to simulate git add")?; [INFO] [stdout] 71 + [INFO] [stdout] 72 + match prompt_yes_no_retry("Should I add & commit?")? { [INFO] [stdout] 73 + YNR::Yes => { [INFO] [stdout] 74 + repo.assert_cmd("git", ["add", "."], true) [INFO] [stdout] 75 + .context("Failed to simulate git add")?; [INFO] [stdout] 76 + break; [INFO] [stdout] 77 + } [INFO] [stdout] 78 + YNR::No => { [INFO] [stdout] 79 + println!("Fine - edit .gitignore & run this command again"); [INFO] [stdout] 80 + exit(2); [INFO] [stdout] 81 + } [INFO] [stdout] 82 + YNR::Retry => continue, [INFO] [stdout] 83 + } [INFO] [stdout] 84 + } [INFO] [stdout] 85 + } [INFO] [stdout] 86 + [INFO] [stdout] 87 + repo.assert_cmd("git", ["commit", "-m", "Initial project files"], true) [INFO] [stdout] 88 + .context("Failed to create initial commit")?; [INFO] [stdout] 89 + } else { [INFO] [stdout] 90 + println!("Found some commit(s) - skipping additional checks (use `opz push` for that)") [INFO] [stdout] 91 + }; [INFO] [stdout] 92 + Ok( [INFO] [stdout] 93 + (), [INFO] [stdout] 94 + ) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: passing a unit value to a function [INFO] [stdout] --> src/git.rs:54:5 [INFO] [stdout] | [INFO] [stdout] 54 | / Ok( [INFO] [stdout] 55 | | if is_head_initial_commit(&repo).context("check if HEAD contains files")? { [INFO] [stdout] 56 | | let staged = staged_files_lossy(&repo)?; [INFO] [stdout] 57 | | if !staged.is_empty() { [INFO] [stdout] ... | [INFO] [stdout] 92 | | }, [INFO] [stdout] 93 | | ) [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stdout] = note: `#[warn(clippy::unit_arg)]` on by default [INFO] [stdout] help: move the expression in front of the call and replace it with the unit literal `()` [INFO] [stdout] | [INFO] [stdout] 54 ~ let _: () = if is_head_initial_commit(&repo).context("check if HEAD contains files")? { [INFO] [stdout] 55 + let staged = staged_files_lossy(&repo)?; [INFO] [stdout] 56 + if !staged.is_empty() { [INFO] [stdout] 57 + println!("Found staged files, here's the status:"); [INFO] [stdout] 58 + repo.assert_cmd("git", ["status"], true)?; [INFO] [stdout] 59 + match prompt_yes_no("Commit?")? { [INFO] [stdout] 60 + false => { [INFO] [stdout] 61 + println!("Fine - do what you need to do & run this command again"); [INFO] [stdout] 62 + exit(2); [INFO] [stdout] 63 + } [INFO] [stdout] 64 + true => { /* continue */ } [INFO] [stdout] 65 + }; [INFO] [stdout] 66 + } else { [INFO] [stdout] 67 + println!("Nothing added yet - with current settings, git would add:\n"); [INFO] [stdout] 68 + loop { [INFO] [stdout] 69 + repo.assert_cmd("git", ["add", "-n", "."], true) [INFO] [stdout] 70 + .context("Failed to simulate git add")?; [INFO] [stdout] 71 + [INFO] [stdout] 72 + match prompt_yes_no_retry("Should I add & commit?")? { [INFO] [stdout] 73 + YNR::Yes => { [INFO] [stdout] 74 + repo.assert_cmd("git", ["add", "."], true) [INFO] [stdout] 75 + .context("Failed to simulate git add")?; [INFO] [stdout] 76 + break; [INFO] [stdout] 77 + } [INFO] [stdout] 78 + YNR::No => { [INFO] [stdout] 79 + println!("Fine - edit .gitignore & run this command again"); [INFO] [stdout] 80 + exit(2); [INFO] [stdout] 81 + } [INFO] [stdout] 82 + YNR::Retry => continue, [INFO] [stdout] 83 + } [INFO] [stdout] 84 + } [INFO] [stdout] 85 + } [INFO] [stdout] 86 + [INFO] [stdout] 87 + repo.assert_cmd("git", ["commit", "-m", "Initial project files"], true) [INFO] [stdout] 88 + .context("Failed to create initial commit")?; [INFO] [stdout] 89 + } else { [INFO] [stdout] 90 + println!("Found some commit(s) - skipping additional checks (use `opz push` for that)") [INFO] [stdout] 91 + }; [INFO] [stdout] 92 + Ok( [INFO] [stdout] 93 + (), [INFO] [stdout] 94 + ) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/git.rs:230:16 [INFO] [stdout] | [INFO] [stdout] 230 | if !remote.url().is_some_and(|u| u == url) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `remote.url().is_none_or(|u| u != url)` [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: useless use of `format!` [INFO] [stdout] --> src/git.rs:268:22 [INFO] [stdout] | [INFO] [stdout] 268 | .with_context(|| format!("Get current HEAD branch")) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"Get current HEAD branch".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] = note: `#[warn(clippy::useless_format)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enclosing `Ok` and `?` operator are unneeded [INFO] [stdout] --> src/git.rs:425:5 [INFO] [stdout] | [INFO] [stdout] 425 | Ok(project.silent_cmd("git", ["rev-parse", "HEAD"], false)?) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark [INFO] [stdout] = note: `#[warn(clippy::needless_question_mark)]` on by default [INFO] [stdout] help: remove the enclosing `Ok` and `?` operator [INFO] [stdout] | [INFO] [stdout] 425 - Ok(project.silent_cmd("git", ["rev-parse", "HEAD"], false)?) [INFO] [stdout] 425 + project.silent_cmd("git", ["rev-parse", "HEAD"], false) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enclosing `Ok` and `?` operator are unneeded [INFO] [stdout] --> src/git.rs:428:5 [INFO] [stdout] | [INFO] [stdout] 428 | Ok(project.silent_cmd("git", ["show", "-s", "--format=%B"], false)?) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark [INFO] [stdout] help: remove the enclosing `Ok` and `?` operator [INFO] [stdout] | [INFO] [stdout] 428 - Ok(project.silent_cmd("git", ["show", "-s", "--format=%B"], false)?) [INFO] [stdout] 428 + project.silent_cmd("git", ["show", "-s", "--format=%B"], false) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/git.rs:230:16 [INFO] [stdout] | [INFO] [stdout] 230 | if !remote.url().is_some_and(|u| u == url) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `remote.url().is_none_or(|u| u != url)` [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: useless use of `format!` [INFO] [stdout] --> src/git.rs:268:22 [INFO] [stdout] | [INFO] [stdout] 268 | .with_context(|| format!("Get current HEAD branch")) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"Get current HEAD branch".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] = note: `#[warn(clippy::useless_format)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/init.rs:50:46 [INFO] [stdout] | [INFO] [stdout] 50 | branch.map_or(BranchChoice::Default, |b| BranchChoice::Single(b)), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the tuple variant itself: `BranchChoice::Single` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/init.rs:56:23 [INFO] [stdout] | [INFO] [stdout] 56 | initial_merge(&project, &repo, remote, branch)?; [INFO] [stdout] | ^^^^^^^^ help: change this to: `project` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> src/init.rs:137:19 [INFO] [stdout] | [INFO] [stdout] 137 | template_ref: &String, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 137 - template_ref: &String, [INFO] [stdout] 137 + template_ref: &str, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&PathBuf` instead of `&Path` involves a new object where a slice will do [INFO] [stdout] --> src/project.rs:25:26 [INFO] [stdout] | [INFO] [stdout] 25 | pub fn new(proj_dir: &PathBuf) -> Result { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 25 ~ pub fn new(proj_dir: &Path) -> Result { [INFO] [stdout] 26 | Ok(Project { [INFO] [stdout] 27 ~ dir: proj_dir.to_path_buf().to_owned(), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/project.rs:41:18 [INFO] [stdout] | [INFO] [stdout] 41 | get_repo(&self) [INFO] [stdout] | ^^^^^ help: change this to: `self` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> src/squash.rs:11:53 [INFO] [stdout] | [INFO] [stdout] 11 | pub fn mergesquash_merge(project: &Project, remote: &String) -> Result<(), anyhow::Error> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 11 - pub fn mergesquash_merge(project: &Project, remote: &String) -> Result<(), anyhow::Error> { [INFO] [stdout] 11 + pub fn mergesquash_merge(project: &Project, remote: &str) -> Result<(), anyhow::Error> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/squash.rs:12:25 [INFO] [stdout] | [INFO] [stdout] 12 | let repo = get_repo(&project)?; [INFO] [stdout] | ^^^^^^^^ help: change this to: `project` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/squash.rs:13:39 [INFO] [stdout] | [INFO] [stdout] 13 | let base_ref = git_current_branch(&project)?; [INFO] [stdout] | ^^^^^^^^ help: change this to: `project` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/squash.rs:16:53 [INFO] [stdout] | [INFO] [stdout] 16 | let last_squash = git_find_last_commit_matching(&project, "squash-remote-commit: ")?; [INFO] [stdout] | ^^^^^^^^ help: change this to: `project` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enclosing `Ok` and `?` operator are unneeded [INFO] [stdout] --> src/git.rs:425:5 [INFO] [stdout] | [INFO] [stdout] 425 | Ok(project.silent_cmd("git", ["rev-parse", "HEAD"], false)?) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark [INFO] [stdout] = note: `#[warn(clippy::needless_question_mark)]` on by default [INFO] [stdout] help: remove the enclosing `Ok` and `?` operator [INFO] [stdout] | [INFO] [stdout] 425 - Ok(project.silent_cmd("git", ["rev-parse", "HEAD"], false)?) [INFO] [stdout] 425 + project.silent_cmd("git", ["rev-parse", "HEAD"], false) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enclosing `Ok` and `?` operator are unneeded [INFO] [stdout] --> src/git.rs:428:5 [INFO] [stdout] | [INFO] [stdout] 428 | Ok(project.silent_cmd("git", ["show", "-s", "--format=%B"], false)?) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark [INFO] [stdout] help: remove the enclosing `Ok` and `?` operator [INFO] [stdout] | [INFO] [stdout] 428 - Ok(project.silent_cmd("git", ["show", "-s", "--format=%B"], false)?) [INFO] [stdout] 428 + project.silent_cmd("git", ["show", "-s", "--format=%B"], false) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/squash.rs:24:34 [INFO] [stdout] | [INFO] [stdout] 24 | .revparse_single(&last_squash) [INFO] [stdout] | ^^^^^^^^^^^^ help: change this to: `last_squash` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/squash.rs:31:52 [INFO] [stdout] | [INFO] [stdout] 31 | let merge_parent = git_extract_trailer(&msg, SQUASH_MERGE_PARENT_TRAILER)? [INFO] [stdout] | ^^^^ help: change this to: `msg` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `YNR` contains a capitalized acronym [INFO] [stdout] --> src/utils.rs:116:10 [INFO] [stdout] | [INFO] [stdout] 116 | pub enum YNR { [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `Ynr` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] = note: `#[warn(clippy::upper_case_acronyms)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/init.rs:50:46 [INFO] [stdout] | [INFO] [stdout] 50 | branch.map_or(BranchChoice::Default, |b| BranchChoice::Single(b)), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the tuple variant itself: `BranchChoice::Single` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/init.rs:56:23 [INFO] [stdout] | [INFO] [stdout] 56 | initial_merge(&project, &repo, remote, branch)?; [INFO] [stdout] | ^^^^^^^^ help: change this to: `project` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> src/init.rs:137:19 [INFO] [stdout] | [INFO] [stdout] 137 | template_ref: &String, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 137 - template_ref: &String, [INFO] [stdout] 137 + template_ref: &str, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:85:45 [INFO] [stdout] | [INFO] [stdout] 85 | if !template_ref_is_url(&template) { [INFO] [stdout] | ^^^^^^^^^ help: change this to: `template` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&PathBuf` instead of `&Path` involves a new object where a slice will do [INFO] [stdout] --> src/project.rs:25:26 [INFO] [stdout] | [INFO] [stdout] 25 | pub fn new(proj_dir: &PathBuf) -> Result { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 25 ~ pub fn new(proj_dir: &Path) -> Result { [INFO] [stdout] 26 | Ok(Project { [INFO] [stdout] 27 ~ dir: proj_dir.to_path_buf().to_owned(), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/project.rs:41:18 [INFO] [stdout] | [INFO] [stdout] 41 | get_repo(&self) [INFO] [stdout] | ^^^^^ help: change this to: `self` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> src/squash.rs:11:53 [INFO] [stdout] | [INFO] [stdout] 11 | pub fn mergesquash_merge(project: &Project, remote: &String) -> Result<(), anyhow::Error> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 11 - pub fn mergesquash_merge(project: &Project, remote: &String) -> Result<(), anyhow::Error> { [INFO] [stdout] 11 + pub fn mergesquash_merge(project: &Project, remote: &str) -> Result<(), anyhow::Error> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/squash.rs:12:25 [INFO] [stdout] | [INFO] [stdout] 12 | let repo = get_repo(&project)?; [INFO] [stdout] | ^^^^^^^^ help: change this to: `project` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/squash.rs:13:39 [INFO] [stdout] | [INFO] [stdout] 13 | let base_ref = git_current_branch(&project)?; [INFO] [stdout] | ^^^^^^^^ help: change this to: `project` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/squash.rs:16:53 [INFO] [stdout] | [INFO] [stdout] 16 | let last_squash = git_find_last_commit_matching(&project, "squash-remote-commit: ")?; [INFO] [stdout] | ^^^^^^^^ help: change this to: `project` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/squash.rs:24:34 [INFO] [stdout] | [INFO] [stdout] 24 | .revparse_single(&last_squash) [INFO] [stdout] | ^^^^^^^^^^^^ help: change this to: `last_squash` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/squash.rs:31:52 [INFO] [stdout] | [INFO] [stdout] 31 | let merge_parent = git_extract_trailer(&msg, SQUASH_MERGE_PARENT_TRAILER)? [INFO] [stdout] | ^^^^ help: change this to: `msg` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `YNR` contains a capitalized acronym [INFO] [stdout] --> src/utils.rs:116:10 [INFO] [stdout] | [INFO] [stdout] 116 | pub enum YNR { [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `Ynr` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] = note: `#[warn(clippy::upper_case_acronyms)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: passing a unit value to a function [INFO] [stdout] --> src/git.rs:54:5 [INFO] [stdout] | [INFO] [stdout] 54 | / Ok( [INFO] [stdout] 55 | | if is_head_initial_commit(&repo).context("check if HEAD contains files")? { [INFO] [stdout] 56 | | let staged = staged_files_lossy(&repo)?; [INFO] [stdout] 57 | | if !staged.is_empty() { [INFO] [stdout] ... | [INFO] [stdout] 92 | | }, [INFO] [stdout] 93 | | ) [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stdout] = note: `#[warn(clippy::unit_arg)]` on by default [INFO] [stdout] help: move the expression in front of the call and replace it with the unit literal `()` [INFO] [stdout] | [INFO] [stdout] 54 ~ let _: () = if is_head_initial_commit(&repo).context("check if HEAD contains files")? { [INFO] [stdout] 55 + let staged = staged_files_lossy(&repo)?; [INFO] [stdout] 56 + if !staged.is_empty() { [INFO] [stdout] 57 + println!("Found staged files, here's the status:"); [INFO] [stdout] 58 + repo.assert_cmd("git", ["status"], true)?; [INFO] [stdout] 59 + match prompt_yes_no("Commit?")? { [INFO] [stdout] 60 + false => { [INFO] [stdout] 61 + println!("Fine - do what you need to do & run this command again"); [INFO] [stdout] 62 + exit(2); [INFO] [stdout] 63 + } [INFO] [stdout] 64 + true => { /* continue */ } [INFO] [stdout] 65 + }; [INFO] [stdout] 66 + } else { [INFO] [stdout] 67 + println!("Nothing added yet - with current settings, git would add:\n"); [INFO] [stdout] 68 + loop { [INFO] [stdout] 69 + repo.assert_cmd("git", ["add", "-n", "."], true) [INFO] [stdout] 70 + .context("Failed to simulate git add")?; [INFO] [stdout] 71 + [INFO] [stdout] 72 + match prompt_yes_no_retry("Should I add & commit?")? { [INFO] [stdout] 73 + YNR::Yes => { [INFO] [stdout] 74 + repo.assert_cmd("git", ["add", "."], true) [INFO] [stdout] 75 + .context("Failed to simulate git add")?; [INFO] [stdout] 76 + break; [INFO] [stdout] 77 + } [INFO] [stdout] 78 + YNR::No => { [INFO] [stdout] 79 + println!("Fine - edit .gitignore & run this command again"); [INFO] [stdout] 80 + exit(2); [INFO] [stdout] 81 + } [INFO] [stdout] 82 + YNR::Retry => continue, [INFO] [stdout] 83 + } [INFO] [stdout] 84 + } [INFO] [stdout] 85 + } [INFO] [stdout] 86 + [INFO] [stdout] 87 + repo.assert_cmd("git", ["commit", "-m", "Initial project files"], true) [INFO] [stdout] 88 + .context("Failed to create initial commit")?; [INFO] [stdout] 89 + } else { [INFO] [stdout] 90 + println!("Found some commit(s) - skipping additional checks (use `opz push` for that)") [INFO] [stdout] 91 + }; [INFO] [stdout] 92 + Ok( [INFO] [stdout] 93 + (), [INFO] [stdout] 94 + ) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/git.rs:230:16 [INFO] [stdout] | [INFO] [stdout] 230 | if !remote.url().is_some_and(|u| u == url) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `remote.url().is_none_or(|u| u != url)` [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: useless use of `format!` [INFO] [stdout] --> src/git.rs:268:22 [INFO] [stdout] | [INFO] [stdout] 268 | .with_context(|| format!("Get current HEAD branch")) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"Get current HEAD branch".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] = note: `#[warn(clippy::useless_format)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: passing a unit value to a function [INFO] [stdout] --> src/git.rs:54:5 [INFO] [stdout] | [INFO] [stdout] 54 | / Ok( [INFO] [stdout] 55 | | if is_head_initial_commit(&repo).context("check if HEAD contains files")? { [INFO] [stdout] 56 | | let staged = staged_files_lossy(&repo)?; [INFO] [stdout] 57 | | if !staged.is_empty() { [INFO] [stdout] ... | [INFO] [stdout] 92 | | }, [INFO] [stdout] 93 | | ) [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stdout] = note: `#[warn(clippy::unit_arg)]` on by default [INFO] [stdout] help: move the expression in front of the call and replace it with the unit literal `()` [INFO] [stdout] | [INFO] [stdout] 54 ~ let _: () = if is_head_initial_commit(&repo).context("check if HEAD contains files")? { [INFO] [stdout] 55 + let staged = staged_files_lossy(&repo)?; [INFO] [stdout] 56 + if !staged.is_empty() { [INFO] [stdout] 57 + println!("Found staged files, here's the status:"); [INFO] [stdout] 58 + repo.assert_cmd("git", ["status"], true)?; [INFO] [stdout] 59 + match prompt_yes_no("Commit?")? { [INFO] [stdout] 60 + false => { [INFO] [stdout] 61 + println!("Fine - do what you need to do & run this command again"); [INFO] [stdout] 62 + exit(2); [INFO] [stdout] 63 + } [INFO] [stdout] 64 + true => { /* continue */ } [INFO] [stdout] 65 + }; [INFO] [stdout] 66 + } else { [INFO] [stdout] 67 + println!("Nothing added yet - with current settings, git would add:\n"); [INFO] [stdout] 68 + loop { [INFO] [stdout] 69 + repo.assert_cmd("git", ["add", "-n", "."], true) [INFO] [stdout] 70 + .context("Failed to simulate git add")?; [INFO] [stdout] 71 + [INFO] [stdout] 72 + match prompt_yes_no_retry("Should I add & commit?")? { [INFO] [stdout] 73 + YNR::Yes => { [INFO] [stdout] 74 + repo.assert_cmd("git", ["add", "."], true) [INFO] [stdout] 75 + .context("Failed to simulate git add")?; [INFO] [stdout] 76 + break; [INFO] [stdout] 77 + } [INFO] [stdout] 78 + YNR::No => { [INFO] [stdout] 79 + println!("Fine - edit .gitignore & run this command again"); [INFO] [stdout] 80 + exit(2); [INFO] [stdout] 81 + } [INFO] [stdout] 82 + YNR::Retry => continue, [INFO] [stdout] 83 + } [INFO] [stdout] 84 + } [INFO] [stdout] 85 + } [INFO] [stdout] 86 + [INFO] [stdout] 87 + repo.assert_cmd("git", ["commit", "-m", "Initial project files"], true) [INFO] [stdout] 88 + .context("Failed to create initial commit")?; [INFO] [stdout] 89 + } else { [INFO] [stdout] 90 + println!("Found some commit(s) - skipping additional checks (use `opz push` for that)") [INFO] [stdout] 91 + }; [INFO] [stdout] 92 + Ok( [INFO] [stdout] 93 + (), [INFO] [stdout] 94 + ) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enclosing `Ok` and `?` operator are unneeded [INFO] [stdout] --> src/git.rs:425:5 [INFO] [stdout] | [INFO] [stdout] 425 | Ok(project.silent_cmd("git", ["rev-parse", "HEAD"], false)?) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark [INFO] [stdout] = note: `#[warn(clippy::needless_question_mark)]` on by default [INFO] [stdout] help: remove the enclosing `Ok` and `?` operator [INFO] [stdout] | [INFO] [stdout] 425 - Ok(project.silent_cmd("git", ["rev-parse", "HEAD"], false)?) [INFO] [stdout] 425 + project.silent_cmd("git", ["rev-parse", "HEAD"], false) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enclosing `Ok` and `?` operator are unneeded [INFO] [stdout] --> src/git.rs:428:5 [INFO] [stdout] | [INFO] [stdout] 428 | Ok(project.silent_cmd("git", ["show", "-s", "--format=%B"], false)?) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark [INFO] [stdout] help: remove the enclosing `Ok` and `?` operator [INFO] [stdout] | [INFO] [stdout] 428 - Ok(project.silent_cmd("git", ["show", "-s", "--format=%B"], false)?) [INFO] [stdout] 428 + project.silent_cmd("git", ["show", "-s", "--format=%B"], false) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:85:45 [INFO] [stdout] | [INFO] [stdout] 85 | if !template_ref_is_url(&template) { [INFO] [stdout] | ^^^^^^^^^ help: change this to: `template` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/init.rs:50:46 [INFO] [stdout] | [INFO] [stdout] 50 | branch.map_or(BranchChoice::Default, |b| BranchChoice::Single(b)), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the tuple variant itself: `BranchChoice::Single` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/init.rs:56:23 [INFO] [stdout] | [INFO] [stdout] 56 | initial_merge(&project, &repo, remote, branch)?; [INFO] [stdout] | ^^^^^^^^ help: change this to: `project` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/git.rs:230:16 [INFO] [stdout] | [INFO] [stdout] 230 | if !remote.url().is_some_and(|u| u == url) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `remote.url().is_none_or(|u| u != url)` [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: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> src/init.rs:137:19 [INFO] [stdout] | [INFO] [stdout] 137 | template_ref: &String, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 137 - template_ref: &String, [INFO] [stdout] 137 + template_ref: &str, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/git.rs:268:22 [INFO] [stdout] | [INFO] [stdout] 268 | .with_context(|| format!("Get current HEAD branch")) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"Get current HEAD branch".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] = note: `#[warn(clippy::useless_format)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&PathBuf` instead of `&Path` involves a new object where a slice will do [INFO] [stdout] --> src/project.rs:25:26 [INFO] [stdout] | [INFO] [stdout] 25 | pub fn new(proj_dir: &PathBuf) -> Result { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 25 ~ pub fn new(proj_dir: &Path) -> Result { [INFO] [stdout] 26 | Ok(Project { [INFO] [stdout] 27 ~ dir: proj_dir.to_path_buf().to_owned(), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/project.rs:41:18 [INFO] [stdout] | [INFO] [stdout] 41 | get_repo(&self) [INFO] [stdout] | ^^^^^ help: change this to: `self` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> src/squash.rs:11:53 [INFO] [stdout] | [INFO] [stdout] 11 | pub fn mergesquash_merge(project: &Project, remote: &String) -> Result<(), anyhow::Error> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 11 - pub fn mergesquash_merge(project: &Project, remote: &String) -> Result<(), anyhow::Error> { [INFO] [stdout] 11 + pub fn mergesquash_merge(project: &Project, remote: &str) -> Result<(), anyhow::Error> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/squash.rs:12:25 [INFO] [stdout] | [INFO] [stdout] 12 | let repo = get_repo(&project)?; [INFO] [stdout] | ^^^^^^^^ help: change this to: `project` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/squash.rs:13:39 [INFO] [stdout] | [INFO] [stdout] 13 | let base_ref = git_current_branch(&project)?; [INFO] [stdout] | ^^^^^^^^ help: change this to: `project` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/squash.rs:16:53 [INFO] [stdout] | [INFO] [stdout] 16 | let last_squash = git_find_last_commit_matching(&project, "squash-remote-commit: ")?; [INFO] [stdout] | ^^^^^^^^ help: change this to: `project` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/squash.rs:24:34 [INFO] [stdout] | [INFO] [stdout] 24 | .revparse_single(&last_squash) [INFO] [stdout] | ^^^^^^^^^^^^ help: change this to: `last_squash` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/squash.rs:31:52 [INFO] [stdout] | [INFO] [stdout] 31 | let merge_parent = git_extract_trailer(&msg, SQUASH_MERGE_PARENT_TRAILER)? [INFO] [stdout] | ^^^^ help: change this to: `msg` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enclosing `Ok` and `?` operator are unneeded [INFO] [stdout] --> src/git.rs:425:5 [INFO] [stdout] | [INFO] [stdout] 425 | Ok(project.silent_cmd("git", ["rev-parse", "HEAD"], false)?) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark [INFO] [stdout] = note: `#[warn(clippy::needless_question_mark)]` on by default [INFO] [stdout] help: remove the enclosing `Ok` and `?` operator [INFO] [stdout] | [INFO] [stdout] 425 - Ok(project.silent_cmd("git", ["rev-parse", "HEAD"], false)?) [INFO] [stdout] 425 + project.silent_cmd("git", ["rev-parse", "HEAD"], false) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enclosing `Ok` and `?` operator are unneeded [INFO] [stdout] --> src/git.rs:428:5 [INFO] [stdout] | [INFO] [stdout] 428 | Ok(project.silent_cmd("git", ["show", "-s", "--format=%B"], false)?) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark [INFO] [stdout] help: remove the enclosing `Ok` and `?` operator [INFO] [stdout] | [INFO] [stdout] 428 - Ok(project.silent_cmd("git", ["show", "-s", "--format=%B"], false)?) [INFO] [stdout] 428 + project.silent_cmd("git", ["show", "-s", "--format=%B"], false) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `YNR` contains a capitalized acronym [INFO] [stdout] --> src/utils.rs:116:10 [INFO] [stdout] | [INFO] [stdout] 116 | pub enum YNR { [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `Ynr` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] = note: `#[warn(clippy::upper_case_acronyms)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/init.rs:50:46 [INFO] [stdout] | [INFO] [stdout] 50 | branch.map_or(BranchChoice::Default, |b| BranchChoice::Single(b)), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the tuple variant itself: `BranchChoice::Single` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/init.rs:56:23 [INFO] [stdout] | [INFO] [stdout] 56 | initial_merge(&project, &repo, remote, branch)?; [INFO] [stdout] | ^^^^^^^^ help: change this to: `project` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> src/init.rs:137:19 [INFO] [stdout] | [INFO] [stdout] 137 | template_ref: &String, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 137 - template_ref: &String, [INFO] [stdout] 137 + template_ref: &str, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&PathBuf` instead of `&Path` involves a new object where a slice will do [INFO] [stdout] --> src/project.rs:25:26 [INFO] [stdout] | [INFO] [stdout] 25 | pub fn new(proj_dir: &PathBuf) -> Result { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 25 ~ pub fn new(proj_dir: &Path) -> Result { [INFO] [stdout] 26 | Ok(Project { [INFO] [stdout] 27 ~ dir: proj_dir.to_path_buf().to_owned(), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/project.rs:41:18 [INFO] [stdout] | [INFO] [stdout] 41 | get_repo(&self) [INFO] [stdout] | ^^^^^ help: change this to: `self` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> src/squash.rs:11:53 [INFO] [stdout] | [INFO] [stdout] 11 | pub fn mergesquash_merge(project: &Project, remote: &String) -> Result<(), anyhow::Error> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 11 - pub fn mergesquash_merge(project: &Project, remote: &String) -> Result<(), anyhow::Error> { [INFO] [stdout] 11 + pub fn mergesquash_merge(project: &Project, remote: &str) -> Result<(), anyhow::Error> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/squash.rs:12:25 [INFO] [stdout] | [INFO] [stdout] 12 | let repo = get_repo(&project)?; [INFO] [stdout] | ^^^^^^^^ help: change this to: `project` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/squash.rs:13:39 [INFO] [stdout] | [INFO] [stdout] 13 | let base_ref = git_current_branch(&project)?; [INFO] [stdout] | ^^^^^^^^ help: change this to: `project` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/squash.rs:16:53 [INFO] [stdout] | [INFO] [stdout] 16 | let last_squash = git_find_last_commit_matching(&project, "squash-remote-commit: ")?; [INFO] [stdout] | ^^^^^^^^ help: change this to: `project` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/squash.rs:24:34 [INFO] [stdout] | [INFO] [stdout] 24 | .revparse_single(&last_squash) [INFO] [stdout] | ^^^^^^^^^^^^ help: change this to: `last_squash` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/squash.rs:31:52 [INFO] [stdout] | [INFO] [stdout] 31 | let merge_parent = git_extract_trailer(&msg, SQUASH_MERGE_PARENT_TRAILER)? [INFO] [stdout] | ^^^^ help: change this to: `msg` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:85:45 [INFO] [stdout] | [INFO] [stdout] 85 | if !template_ref_is_url(&template) { [INFO] [stdout] | ^^^^^^^^^ help: change this to: `template` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `YNR` contains a capitalized acronym [INFO] [stdout] --> src/utils.rs:116:10 [INFO] [stdout] | [INFO] [stdout] 116 | pub enum YNR { [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `Ynr` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] = note: `#[warn(clippy::upper_case_acronyms)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:85:45 [INFO] [stdout] | [INFO] [stdout] 85 | if !template_ref_is_url(&template) { [INFO] [stdout] | ^^^^^^^^^ help: change this to: `template` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 39.15s [INFO] running `Command { std: "docker" "inspect" "1692e8e00db1ce0900fc3c581f20e901e3ef8dac107d1801f3f37e62e2de914c", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "1692e8e00db1ce0900fc3c581f20e901e3ef8dac107d1801f3f37e62e2de914c", kill_on_drop: false }` [INFO] [stdout] 1692e8e00db1ce0900fc3c581f20e901e3ef8dac107d1801f3f37e62e2de914c