Skip to content

mods: support opening a REPL for a mod #1253

mods: support opening a REPL for a mod

mods: support opening a REPL for a mod #1253

Triggered via pull request October 4, 2024 02:45
@xTVaserxTVaser
synchronize #582
v/mod-repls
Status Success
Total duration 1m 39s
Artifacts

lint.yaml

on: pull_request
Frontend
14s
Frontend
Backend Formatting
25s
Backend Formatting
Backend Linter
1m 30s
Backend Linter
Fit to window
Zoom out
Zoom in

Annotations

82 warnings
Backend Formatting
The following actions uses node12 which is deprecated and will be forced to run on node16: actions-rs/toolchain@v1. For more info: https://github.blog/changelog/2023-06-13-github-actions-all-actions-will-run-on-node16-instead-of-node12-by-default/
Backend Formatting
The following actions use a deprecated Node.js version and will be forced to run on node20: actions-rs/toolchain@v1. For more info: https://github.blog/changelog/2024-03-07-github-actions-all-actions-will-run-on-node20-instead-of-node16-by-default/
Backend Formatting
The `set-output` command is deprecated and will be disabled soon. Please upgrade to using Environment Files. For more information see: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/
Backend Formatting
The `set-output` command is deprecated and will be disabled soon. Please upgrade to using Environment Files. For more information see: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/
Backend Formatting
The `set-output` command is deprecated and will be disabled soon. Please upgrade to using Environment Files. For more information see: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/
Backend Formatting
The `set-output` command is deprecated and will be disabled soon. Please upgrade to using Environment Files. For more information see: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/
useless use of `format!`: src/main.rs#L45
warning: useless use of `format!` --> src/main.rs:45:25 | 45 | let mut dialog_text = format!("Unrecoverable crash occurred!"); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"Unrecoverable crash occurred!".to_string()` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format
current MSRV (Minimum Supported Rust Version) is `1.61.0` but this item is stable since `1.64.0`: /home/runner/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.40.0/src/macros/select.rs#L505
warning: current MSRV (Minimum Supported Rust Version) is `1.61.0` but this item is stable since `1.64.0` --> src/util/process.rs:61:5 | 61 | / tokio::select! { 62 | | Ok(Some(line)) = stdout_reader.next_line() => { 63 | | let formatted_line = format!("{line}\n"); 64 | | log_file.write_all(formatted_line.as_bytes()).await?; ... | 90 | | } 91 | | } | |_____^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#incompatible_msrv = note: this warning originates in the macro `$crate::select` which comes from the expansion of the macro `tokio::select` (in Nightly builds, run with -Z macro-backtrace for more info)
unneeded `return` statement: src/util/process.rs#L93
warning: unneeded `return` statement --> src/util/process.rs:93:3 | 93 | return Ok(process_status); | ^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return help: remove `return` | 93 - return Ok(process_status); 93 + Ok(process_status) |
unneeded `return` statement: src/util/os.rs#L17
warning: unneeded `return` statement --> src/util/os.rs:17:3 | 17 | return None; | ^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return help: remove `return` | 17 - return None; 17 + None |
unneeded `return` statement: src/util/game_milestones.rs#L19
warning: unneeded `return` statement --> src/util/game_milestones.rs:19:3 | 19 | / return vec![ 20 | | MilestoneCriteria { 21 | | name: "geyser".to_string(), 22 | | completed: vec![], ... | 227 | | }, 228 | | ]; | |___^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return help: remove `return` | 19 ~ vec![ 20 + MilestoneCriteria { 21 + name: "geyser".to_string(), 22 + completed: vec![], 23 + introduced: vec![], 24 + }, 25 + MilestoneCriteria { 26 + // (village1-yakow 10) 27 + // (village1-mayor-money 11) 28 + // (village1-uncle-money 12) 29 + // (village1-oracle-money1 13) 30 + // (village1-oracle-money2 14) 31 + // (beach-ecorocks 15) 32 + // (village1-buzzer 75) 33 + name: "sandover".to_string(), 34 + completed: vec![10, 11, 12, 13, 14, 75], 35 + introduced: vec![15], 36 + }, 37 + MilestoneCriteria { 38 + // (beach-ecorocks 15) 39 + // (beach-pelican 16) 40 + // (beach-flutflut 17) 41 + // (beach-seagull 18) 42 + // (beach-cannon 19) 43 + // (beach-buzzer 20) 44 + // (beach-gimmie 21) 45 + // (beach-sentinel 22) 46 + name: "sentinel".to_string(), 47 + completed: vec![15, 16, 17, 18, 19, 20, 21, 22], 48 + introduced: vec![], 49 + }, 50 + MilestoneCriteria { 51 + // (jungle-eggtop 2) 52 + // (jungle-lurkerm 3) 53 + // (jungle-tower 4) 54 + // (jungle-fishgame 5) 55 + // (jungle-plant 6) 56 + // (jungle-buzzer 7) 57 + // (jungle-canyon-end 8) 58 + // (jungle-temple-door 9) 59 + name: "jungle".to_string(), 60 + completed: vec![2, 3, 4, 5, 6, 7, 8, 9], 61 + introduced: vec![], 62 + }, 63 + MilestoneCriteria { 64 + // (misty-muse 23) 65 + // (misty-boat 24) 66 + // (misty-warehouse 25) 67 + // (misty-cannon 26) 68 + // (misty-bike 27) 69 + // (misty-buzzer 28) 70 + // (misty-bike-jump 29) 71 + // (misty-eco-challenge 30) 72 + // (leaving-misty 114) 73 + name: "misty".to_string(), 74 + completed: vec![23, 24, 25, 26, 27, 28, 29, 30, 114], 75 + introduced: vec![], 76 + }, 77 + MilestoneCriteria { 78 + // (firecanyon-buzzer 68) 79 + // (firecanyon-end 69) 80 + // (firecanyon-assistant 102) 81 + name: "firecanyon".to_string(), 82 + completed: vec![68, 69], 83 + introduced: vec![102], 84 + }, 85 + MilestoneCriteria { 86 + // (village2-gambler-money 31) 87 + // (village2-geologist-money 32) 88 + // (village2-warrior-money 33) 89 + // (village2-oracle-money1 34) 90 + // (village2-oracle-money2 35) 91 + // (firecanyon-buzzer 68) 92 + // (firecanyon-end 69) 93 + // (village2-buzzer 76) 94 + // (firecanyon-assistant 102) 95 + name: "village2".to_string(), 96 + completed: vec![31, 32, 33, 34, 35, 68, 69], 97 + introduced: vec![76, 102], 98 + }, 99 + MilestoneCriteria { 100 + // (rolling-race 52) 101 + // (rolling-robbers 53) 102 + // (rolling-moles 54) 103 + // (rolling-plants 55) 104 + // (rolling-lake 56) 105 + // (rolling-buzzer 57) 106 + // (rolling-ring-chase-1 58) 107 + // (rolling-ring-chase-2 59) 108 + name: "basin".to_string(), 109 + completed: vec![52, 53, 54, 55, 56, 57, 58, 59], 110 + introduced: vec![], 111 + }, 112 + MilestoneCriteria { 113 + // (swamp-billy 36) 114 + // (swamp-flutflut 37) 115 + // (swamp-battle 38) 116 + // (swamp-tether-1 39) 117 + // (swamp-tether-2 40) 118 + // (swamp-tether-3 41) 119 + // (swamp-tether-4 42) 120 + // (swamp-buzzer 43) 121 + // (swamp-arm 104) 122 + name: "swamp".to_string(), 123 + completed: vec![36, 37, 38, 39, 40, 41, 42, 43, 104], 124 + introduced: vec![], 125 + }, 126 + MilestoneCriteria { 127 + // (sunken-platforms 44) 128 + // (sunken-pipe 45) 129 + // (sunken-slide 46) 130 + // (sunken-room 47) 131 + // (sunken-sharks 48) 132 + // (sunken-buzzer 49) 133 + // (sunken-top-of-helix 50) 134 + // (sunken-spinning-room 51) 135 + name: "lpc".to_string(), 136 + completed: vec![44, 45, 46, 47, 48, 49, 50, 51], 137 + introduced: vec![], 138 + }, 139 + MilestoneCriteria { 140 + // (ogre-boss 86) 141 + // (village2-levitator 103) 142 + name: "klaww".to_string(), 143 + completed: vec![103], 144 + introduced: vec![86], 145 + }, 146 + MilestoneCriteria { 147 + // (ogre-boss 86) 148 + // (ogre-end 87) 149 + // (ogre-buzzer 88) 150 + // (ogre-secret 110) 151 + name: "mountainpass".to_string(), 152 + completed: vec![86, 88, 110], 153 + introduced: vec![87], 154 + }, 155 + MilestoneCriteria { 156 + // (village3-extra1 74) 157 + // (village3-buzzer 77) 158 + // (village3-miner-money1 96) 159 + // (village3-miner-money2 97) 160 + // (village3-miner-money3 98) 161 + // (village3-miner-money4 99) 162 + // (village3-oracle-money1 100) 163 + // (village3-oracle-money2 101) 164 + // (village3-button 105) 165 + name: "village3".to_string(), 166 + completed: vec![74, 77, 96, 97, 98, 99, 100, 101, 105], 167 + introduced: vec![], 168 + }, 169 + MilestoneCriteria { 170 + // (cave-gnawers 78) 171 + // (cave-dark-crystals 79) 172 + // (cave-dark-climb 80) 173 + // (cave-robot-climb 81) 174 + // (cave-swing-poles 82) 175 + // (cave-spider-tunnel 83) 176 + // (cave-platforms 84) 177 + // (cave-buzzer 85) 178 + name: "cave".to_string(), 179 + completed: vec![78, 79, 80, 81, 82, 83, 84, 85], 180 + introduced: vec![], 181 + }, 182 + MilestoneCriteria { 183 + // (snow-eggtop 60) 184 + // (snow-ram 61) 185 + // (snow-fort 62) 186 + // (snow-ball 63) 187 + // (snow-bunnies 64) 188 + // (snow-buzzer 65) 189 + // (snow-bumpers 66) 190 + // (snow-cage 67) 191 + name: "snowy".to_string(), 192 + completed: vec![60, 61, 62, 63, 64, 65, 66, 67], 193 + introduced: vec![], 194 + }, 195 + MilestoneCriteria { 196 + // (lavatube-end 89) 197 + // (lavatube-buzzer 90) 198 + // (lavatube-balls 107) 199 + // (lavatube-start 108) 200 + // (assistant-village3 115) 201 + name: "lavatube".to_string(), 202 + completed: vec![90, 107, 108, 115], 203 + introduced: vec![89], 204 + }, 205 + MilestoneCriteria { 206 + // (citadel-sage-green 70) 207 + // (citadel-sage-blue 71) 208 + // (citadel-sage-red 72) 209 + // (citadel-sage-yellow 73) 210 + // (lavatube-end 89) 211 + // (citadel-buzzer 91) 212 + name: "citadel".to_string(), 213 + completed: vec![71, 72, 73, 89, 91], 214 + introduced: vec![70], 215 + }, 216 + MilestoneCriteria { 217 + // (citadel-sage-green 70) 218 + name: "finalboss".to_string(), 219 + completed: vec![70], 220 + introduced: vec![], 221 + }, 222 + MilestoneCriteria { 223 + // (finalboss-movies 112) 224 + name: "end".to_string(), 225 + completed: vec![], 226 + introduced: vec![112], 227 + }, 228 ~ ] |
unneeded `return` statement: src/util/file.rs#L78
warning: unneeded `return` statement --> src/util/file.rs:78:3 | 78 | / return format!( 79 | | "data:image/{};base64,{}", 80 | | get_image_file_type(&hex), 81 | | base64.replace("\r\n", "") 82 | | ); | |___^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return help: remove `return` | 78 ~ format!( 79 + "data:image/{};base64,{}", 80 + get_image_file_type(&hex), 81 + base64.replace("\r\n", "") 82 ~ ) |
file opened with `create`, but `truncate` behavior not defined: src/util/file.rs#L52
warning: file opened with `create`, but `truncate` behavior not defined --> src/util/file.rs:52:6 | 52 | .create(true) | ^^^^^^^^^^^^- help: add: `.truncate(true)` | = help: if you intend to overwrite an existing file entirely, call `.truncate(true)` = help: if you instead know that you may want to keep some parts of the old file, call `.truncate(false)` = help: alternatively, use `.append(true)` to append to the file instead of overwriting it = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_open_options = note: `#[warn(clippy::suspicious_open_options)]` on by default
casting to the same type is unnecessary (`usize` -> `usize`): src/config.rs#L679
warning: casting to the same type is unnecessary (`usize` -> `usize`) --> src/config.rs:679:10 | 679 | if (mod_source_index as usize) < sources.len() { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `mod_source_index` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast = note: `#[warn(clippy::unnecessary_cast)]` on by default
this expression creates a reference which is immediately dereferenced by the compiler: src/config.rs#L656
warning: this expression creates a reference which is immediately dereferenced by the compiler --> src/config.rs:656:58 | 656 | let game_config = self.get_supported_game_config_mut(&game_name)?; | ^^^^^^^^^^ help: change this to: `game_name` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow
current MSRV (Minimum Supported Rust Version) is `1.61.0` but this item is stable since `1.70.0`: src/config.rs#L318
warning: current MSRV (Minimum Supported Rust Version) is `1.61.0` but this item is stable since `1.70.0` --> src/config.rs:318:18 | 318 | .is_some_and(|x| x != "official") | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#incompatible_msrv
current MSRV (Minimum Supported Rust Version) is `1.61.0` but this item is stable since `1.70.0`: src/config.rs#L306
warning: current MSRV (Minimum Supported Rust Version) is `1.61.0` but this item is stable since `1.70.0` --> src/config.rs:306:16 | 306 | .is_some_and(|x| x != "official") | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#incompatible_msrv = note: `#[warn(clippy::incompatible_msrv)]` on by default
unneeded `return` statement: src/config.rs#L267
warning: unneeded `return` statement --> src/config.rs:267:9 | 267 | / return Err(ConfigError::Configuration(format!( 268 | | "Supported game missing from games map: {game_name}" 269 | | ))); | |___________^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return help: remove `return` | 267 ~ Err(ConfigError::Configuration(format!( 268 + "Supported game missing from games map: {game_name}" 269 ~ ))) |
unneeded `return` statement: src/config.rs#L246
warning: unneeded `return` statement --> src/config.rs:246:9 | 246 | / return Err(ConfigError::Configuration(format!( 247 | | "Supported game missing from games map: {game_name}" 248 | | ))); | |___________^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return help: remove `return` | 246 ~ Err(ConfigError::Configuration(format!( 247 + "Supported game missing from games map: {game_name}" 248 ~ ))) |
the borrowed expression implements the required traits: src/commands/support.rs#L460
warning: the borrowed expression implements the required traits --> src/commands/support.rs:460:14 | 460 | fs::rename(&save_file.path(), save_path).map_err(|_| { | ^^^^^^^^^^^^^^^^^ help: change this to: `save_file.path()` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args
this expression creates a reference which is immediately dereferenced by the compiler: src/commands/support.rs#L232
warning: this expression creates a reference which is immediately dereferenced by the compiler --> src/commands/support.rs:232:19 | 232 | &mod_path, | ^^^^^^^^^ help: change this to: `mod_path` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow
this expression creates a reference which is immediately dereferenced by the compiler: src/commands/support.rs#L220
warning: this expression creates a reference which is immediately dereferenced by the compiler --> src/commands/support.rs:220:19 | 220 | &mod_path, | ^^^^^^^^^ help: change this to: `mod_path` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow
the borrowed expression implements the required traits: src/commands/support.rs#L197
warning: the borrowed expression implements the required traits --> src/commands/support.rs:197:58 | 197 | let mod_directory = install_path.join("features").join(&game_name).join("mods"); | ^^^^^^^^^^ help: change this to: `game_name` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args
the borrowed expression implements the required traits: src/commands/support.rs#L166
warning: the borrowed expression implements the required traits --> src/commands/support.rs:166:44 | 166 | let data_dir = active_version_dir.join(&game_name).join("data"); | ^^^^^^^^^^ help: change this to: `game_name` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args
the borrowed expression implements the required traits: src/commands/support.rs#L154
warning: the borrowed expression implements the required traits --> src/commands/support.rs:154:11 | 154 | .join(&game_name) | ^^^^^^^^^^ help: change this to: `game_name` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args
the borrowed expression implements the required traits: src/commands/support.rs#L151
warning: the borrowed expression implements the required traits --> src/commands/support.rs:151:11 | 151 | .join(&game_name) | ^^^^^^^^^^ help: change this to: `game_name` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args
the borrowed expression implements the required traits: src/commands/support.rs#L145
warning: the borrowed expression implements the required traits --> src/commands/support.rs:145:11 | 145 | .join(&game_name) | ^^^^^^^^^^ help: change this to: `game_name` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args
the borrowed expression implements the required traits: src/commands/support.rs#L135
warning: the borrowed expression implements the required traits --> src/commands/support.rs:135:46 | 135 | let jak1_log_dir = active_version_dir.join(&game_name).join("data").join("log"); | ^^^^^^^^^^ help: change this to: `game_name` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args
the borrowed expression implements the required traits: src/commands/support.rs#L125
warning: the borrowed expression implements the required traits --> src/commands/support.rs:125:27 | 125 | &game_config_dir.join(&game_name).join("saves"), | ^^^^^^^^^^ help: change this to: `game_name` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args
the borrowed expression implements the required traits: src/commands/support.rs#L116
warning: the borrowed expression implements the required traits --> src/commands/support.rs:116:27 | 116 | &game_config_dir.join(&game_name).join("misc"), | ^^^^^^^^^^ help: change this to: `game_name` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args
the borrowed expression implements the required traits: src/commands/support.rs#L107
warning: the borrowed expression implements the required traits --> src/commands/support.rs:107:27 | 107 | &game_config_dir.join(&game_name).join("settings"), | ^^^^^^^^^^ help: change this to: `game_name` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args
you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let`: src/commands/game.rs#L192
warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` --> src/commands/game.rs:192:9 | 192 | / match get_saves_highest_milestone(&entry.into_path(), &milestones) { 193 | | Some((name, idx)) => { 194 | | info!("Furthest milestone {} at index {}", name, idx); 195 | | if idx > highest_milestone_idx { ... | 200 | | None => {} 201 | | } | |_________^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match = note: `#[warn(clippy::single_match)]` on by default help: try | 192 ~ if let Some((name, idx)) = get_saves_highest_milestone(&entry.into_path(), &milestones) { 193 + info!("Furthest milestone {} at index {}", name, idx); 194 + if idx > highest_milestone_idx { 195 + highest_milestone_idx = idx; 196 + furthest_milestone_name = name.to_owned(); 197 + } 198 + } |
unneeded `return` statement: src/commands/game.rs#L206
warning: unneeded `return` statement --> src/commands/game.rs:206:3 | 206 | return Ok(furthest_milestone_name); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return help: remove `return` | 206 - return Ok(furthest_milestone_name); 206 + Ok(furthest_milestone_name) |
this expression creates a reference which is immediately dereferenced by the compiler: src/commands/game.rs#L128
warning: this expression creates a reference which is immediately dereferenced by the compiler --> src/commands/game.rs:128:48 | 128 | if tasks.contains_key(&task_id) && tasks[&task_id].completed { | ^^^^^^^^ help: change this to: `task_id` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow
this expression creates a reference which is immediately dereferenced by the compiler: src/commands/game.rs#L128
warning: this expression creates a reference which is immediately dereferenced by the compiler --> src/commands/game.rs:128:29 | 128 | if tasks.contains_key(&task_id) && tasks[&task_id].completed { | ^^^^^^^^ help: change this to: `task_id` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow
this expression creates a reference which is immediately dereferenced by the compiler: src/commands/game.rs#L123
warning: this expression creates a reference which is immediately dereferenced by the compiler --> src/commands/game.rs:123:48 | 123 | if tasks.contains_key(&task_id) && tasks[&task_id].introduced { | ^^^^^^^^ help: change this to: `task_id` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow
this expression creates a reference which is immediately dereferenced by the compiler: src/commands/game.rs#L123
warning: this expression creates a reference which is immediately dereferenced by the compiler --> src/commands/game.rs:123:29 | 123 | if tasks.contains_key(&task_id) && tasks[&task_id].introduced { | ^^^^^^^^ help: change this to: `task_id` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow
writing `&Vec` instead of `&[_]` involves a new object where a slice will do: src/commands/game.rs#L82
warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do --> src/commands/game.rs:82:15 | 82 | milestones: &Vec<MilestoneCriteria>, | ^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[MilestoneCriteria]` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg = note: `#[warn(clippy::ptr_arg)]` on by default
unneeded `return` statement: src/commands/game.rs#L134
warning: unneeded `return` statement --> src/commands/game.rs:134:3 | 134 | return None; | ^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return help: remove `return` | 134 - return None; 134 + None |
the borrowed expression implements the required traits: src/commands/features/texture_packs.rs#L317
warning: the borrowed expression implements the required traits --> src/commands/features/texture_packs.rs:317:22 | 317 | match delete_dir(&texture_pack_dir.join(&pack)) { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `texture_pack_dir.join(&pack)` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args
the borrowed expression implements the required traits: src/commands/features/texture_packs.rs#L270
warning: the borrowed expression implements the required traits --> src/commands/features/texture_packs.rs:270:13 | 270 | .join(&pack) | ^^^^^ help: change this to: `pack` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args
this expression creates a reference which is immediately dereferenced by the compiler: src/commands/features/texture_packs.rs#L220
warning: this expression creates a reference which is immediately dereferenced by the compiler --> src/commands/features/texture_packs.rs:220:35 | 220 | extract_zip_file(&zip_path_buf, &destination_dir, false).map_err(|err| { | ^^^^^^^^^^^^^^^^ help: change this to: `destination_dir` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow
the borrowed expression implements the required traits: src/commands/features/texture_packs.rs#L94
warning: the borrowed expression implements the required traits --> src/commands/features/texture_packs.rs:94:17 | 94 | / &entry_path 95 | | .join("custom_assets") 96 | | .join(&game_name) 97 | | .join("texture_replacements"), | |_______________________________________________^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args help: change this to | 94 ~ entry_path 95 + .join("custom_assets") 96 + .join(&game_name) 97 ~ .join("texture_replacements"), |
unneeded `return` statement: src/commands/features/mods.rs#L965
warning: unneeded `return` statement --> src/commands/features/mods.rs:965:7 | 965 | / return Err(CommandError::BinaryExecution( 966 | | "Unable to launch REPL".to_owned(), 967 | | )); | |________^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return help: remove `return` | 965 ~ Err(CommandError::BinaryExecution( 966 + "Unable to launch REPL".to_owned(), 967 ~ )) |
unnecessary use of `to_string`: src/commands/features/mods.rs#L763
warning: unnecessary use of `to_string` --> src/commands/features/mods.rs:763:31 | 763 | return Ok(to_image_base64(&cover_path.to_string_lossy().to_string())); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `cover_path.to_string_lossy().as_ref()` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_to_owned
unnecessary use of `to_string`: src/commands/features/mods.rs#L738
warning: unnecessary use of `to_string` --> src/commands/features/mods.rs:738:31 | 738 | return Ok(to_image_base64(&cover_path.to_string_lossy().to_string())); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `cover_path.to_string_lossy().as_ref()` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_to_owned = note: `#[warn(clippy::unnecessary_to_owned)]` on by default
this expression creates a reference which is immediately dereferenced by the compiler: src/commands/features/mods.rs#L176
warning: this expression creates a reference which is immediately dereferenced by the compiler --> src/commands/features/mods.rs:176:49 | 176 | extract_and_delete_tar_ball(&download_path, &parent_path).map_err(|err| { | ^^^^^^^^^^^^ help: change this to: `parent_path` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow
this expression creates a reference which is immediately dereferenced by the compiler: src/commands/features/mods.rs#L176
warning: this expression creates a reference which is immediately dereferenced by the compiler --> src/commands/features/mods.rs:176:33 | 176 | extract_and_delete_tar_ball(&download_path, &parent_path).map_err(|err| { | ^^^^^^^^^^^^^^ help: change this to: `download_path` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow
this expression creates a reference which is immediately dereferenced by the compiler: src/commands/features/mods.rs#L171
warning: this expression creates a reference which is immediately dereferenced by the compiler --> src/commands/features/mods.rs:171:49 | 171 | extract_and_delete_zip_file(&download_path, &parent_path, false).map_err(|err| { | ^^^^^^^^^^^^ help: change this to: `parent_path` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow
this expression creates a reference which is immediately dereferenced by the compiler: src/commands/features/mods.rs#L171
warning: this expression creates a reference which is immediately dereferenced by the compiler --> src/commands/features/mods.rs:171:33 | 171 | extract_and_delete_zip_file(&download_path, &parent_path, false).map_err(|err| { | ^^^^^^^^^^^^^^ help: change this to: `download_path` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow
this expression creates a reference which is immediately dereferenced by the compiler: src/commands/features/mods.rs#L156
warning: this expression creates a reference which is immediately dereferenced by the compiler --> src/commands/features/mods.rs:156:32 | 156 | download_file(&download_url, &download_path) | ^^^^^^^^^^^^^^ help: change this to: `download_path` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow
unneeded `return` statement: src/commands/features/mods.rs#L186
warning: unneeded `return` statement --> src/commands/features/mods.rs:186:3 | 186 | / return Ok(InstallStepOutput { 187 | | success: true, 188 | | msg: None, 189 | | }); | |____^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return help: remove `return` | 186 ~ Ok(InstallStepOutput { 187 + success: true, 188 + msg: None, 189 ~ }) |
this expression creates a reference which is immediately dereferenced by the compiler: src/commands/features/mods.rs#L109
warning: this expression creates a reference which is immediately dereferenced by the compiler --> src/commands/features/mods.rs:109:40 | 109 | extract_tar_ball(&bundle_path_buf, &destination_dir).map_err(|err| { | ^^^^^^^^^^^^^^^^ help: change this to: `destination_dir` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow
this expression creates a reference which is immediately dereferenced by the compiler: src/commands/features/mods.rs#L104
warning: this expression creates a reference which is immediately dereferenced by the compiler --> src/commands/features/mods.rs:104:40 | 104 | extract_zip_file(&bundle_path_buf, &destination_dir, false).map_err(|err| { | ^^^^^^^^^^^^^^^^ help: change this to: `destination_dir` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow
this expression creates a reference which is immediately dereferenced by the compiler: src/commands/config.rs#L512
warning: this expression creates a reference which is immediately dereferenced by the compiler --> src/commands/config.rs:512:80 | 512 | let tooling_version = Version::parse(version.strip_prefix('v').unwrap_or(&version)) | ^^^^^^^^ help: change this to: `version` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow
this expression creates a reference which is immediately dereferenced by the compiler: src/commands/config.rs#L471
warning: this expression creates a reference which is immediately dereferenced by the compiler --> src/commands/config.rs:471:80 | 471 | let tooling_version = Version::parse(version.strip_prefix('v').unwrap_or(&version)) | ^^^^^^^^ help: change this to: `version` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow
unneeded `return` statement: src/commands/config.rs#L298
warning: unneeded `return` statement --> src/commands/config.rs:298:3 | 298 | return is_game_installed_impl(&mut config_lock, game_name); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return help: remove `return` | 298 - return is_game_installed_impl(&mut config_lock, game_name); 298 + is_game_installed_impl(&mut config_lock, game_name) |
this expression creates a reference which is immediately dereferenced by the compiler: src/commands/config.rs#L220
warning: this expression creates a reference which is immediately dereferenced by the compiler --> src/commands/config.rs:220:83 | 220 | let tooling_version = Version::parse(active_version.strip_prefix('v').unwrap_or(&active_version)) | ^^^^^^^^^^^^^^^ help: change this to: `active_version` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow
unneeded `return` statement: src/commands/config.rs#L138
warning: unneeded `return` statement --> src/commands/config.rs:138:3 | 138 | return Ok(false); | ^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return help: remove `return` | 138 - return Ok(false); 138 + Ok(false) |
unneeded `return` statement: src/commands/config.rs#L112
warning: unneeded `return` statement --> src/commands/config.rs:112:3 | 112 | / return Err(CommandError::Configuration( 113 | | "Unable to find relevant drive to check for space".to_owned(), 114 | | )); | |____^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return help: remove `return` | 112 ~ Err(CommandError::Configuration( 113 + "Unable to find relevant drive to check for space".to_owned(), 114 ~ )) |
the borrowed expression implements the required traits: src/commands/config.rs#L23
warning: the borrowed expression implements the required traits --> src/commands/config.rs:23:32 | 23 | Some(dir) => Ok(delete_dir(&dir.join("data"))?), | ^^^^^^^^^^^^^^^^^ help: change this to: `dir.join("data")` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args = note: `#[warn(clippy::needless_borrows_for_generic_args)]` on by default
unneeded `return` statement: src/commands/binaries.rs#L879
warning: unneeded `return` statement --> src/commands/binaries.rs:879:68 | 879 | log::error!("Error occured when tracking playtime: {}", err); | ____________________________________________________________________^ 880 | | return; | |____________^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return help: remove `return` | 879 - log::error!("Error occured when tracking playtime: {}", err); 880 - return; 879 + log::error!("Error occured when tracking playtime: {}", err); |
this boolean expression can be simplified: src/commands/binaries.rs#L862
warning: this boolean expression can be simplified --> src/commands/binaries.rs:862:12 | 862 | if !status_code.code().is_some() || status_code.code().unwrap() != 0 { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `status_code.code().is_none()` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool = note: `#[warn(clippy::nonminimal_bool)]` on by default
useless use of `format!`: src/commands/binaries.rs#L813
warning: useless use of `format!` --> src/commands/binaries.rs:813:52 | 813 | return Err(CommandError::BinaryExecution(format!( | ____________________________________________________^ 814 | | "Failed to resolve custom binary parent directory" 815 | | ))); | |___________^ help: consider using `.to_string()`: `"Failed to resolve custom binary parent directory".to_string()` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format = note: `#[warn(clippy::useless_format)]` on by default
this expression creates a reference which is immediately dereferenced by the compiler: src/commands/binaries.rs#L737
warning: this expression creates a reference which is immediately dereferenced by the compiler --> src/commands/binaries.rs:737:34 | 737 | let data_folder = get_data_dir(&config_info, &game_name, false)?; | ^^^^^^^^^^^^ help: change this to: `config_info` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow
unneeded `return` statement: src/commands/binaries.rs#L726
warning: unneeded `return` statement --> src/commands/binaries.rs:726:7 | 726 | return Ok(None); | ^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return help: remove `return` | 726 - return Ok(None); 726 + Ok(None) |
unneeded `return` statement: src/commands/binaries.rs#L722
warning: unneeded `return` statement --> src/commands/binaries.rs:722:9 | 722 | return Ok(None); | ^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return help: remove `return` | 722 - return Ok(None); 722 + Ok(None) |
unneeded `return` statement: src/commands/binaries.rs#L718
warning: unneeded `return` statement --> src/commands/binaries.rs:718:13 | 718 | return Ok(None); | ^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return help: remove `return` | 718 - return Ok(None); 718 + Ok(None) |
unneeded `return` statement: src/commands/binaries.rs#L714
warning: unneeded `return` statement --> src/commands/binaries.rs:714:13 | 714 | return Ok(Some(test_results.success)); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return help: remove `return` | 714 - return Ok(Some(test_results.success)); 714 + Ok(Some(test_results.success)) |
unneeded `return` statement: src/commands/binaries.rs#L644
warning: unneeded `return` statement --> src/commands/binaries.rs:644:7 | 644 | / return Err(CommandError::BinaryExecution( 645 | | "Unable to launch REPL".to_owned(), 646 | | )); | |________^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return = note: `#[warn(clippy::needless_return)]` on by default help: remove `return` | 644 ~ Err(CommandError::BinaryExecution( 645 + "Unable to launch REPL".to_owned(), 646 ~ )) |
this expression creates a reference which is immediately dereferenced by the compiler: src/commands/binaries.rs#L77
warning: this expression creates a reference which is immediately dereferenced by the compiler --> src/commands/binaries.rs:77:83 | 77 | let tooling_version = Version::parse(active_version.strip_prefix('v').unwrap_or(&active_version)) | ^^^^^^^^^^^^^^^ help: change this to: `active_version` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow = note: `#[warn(clippy::needless_borrow)]` on by default
variant `ModSource` is never constructed: src/cache.rs#L12
warning: variant `ModSource` is never constructed --> src/cache.rs:12:3 | 10 | pub enum CacheError { | ---------- variant in this enum 11 | #[error("{0}")] 12 | ModSource(String), | ^^^^^^^^^ | = note: `CacheError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis = note: `#[warn(dead_code)]` on by default
variable does not need to be mutable: src/commands/features/mods.rs#L714
warning: variable does not need to be mutable --> src/commands/features/mods.rs:714:7 | 714 | let mut child = command.spawn()?; | ----^^^^^ | | | help: remove this `mut` | = note: `#[warn(unused_mut)]` on by default
unused variable: `child`: src/commands/features/mods.rs#L714
warning: unused variable: `child` --> src/commands/features/mods.rs:714:11 | 714 | let mut child = command.spawn()?; | ^^^^^ help: if this is intentional, prefix it with an underscore: `_child` | = note: `#[warn(unused_variables)]` on by default
value assigned to `process_status` is never read: src/util/process.rs#L58
warning: value assigned to `process_status` is never read --> src/util/process.rs:58:11 | 58 | let mut process_status = None; | ^^^^^^^^^^^^^^ | = help: maybe it is overwritten before being read? = note: `#[warn(unused_assignments)]` on by default
unused import: `BufRead`: src/util/file.rs#L9
warning: unused import: `BufRead` --> src/util/file.rs:9:8 | 9 | io::{BufRead, Read}, | ^^^^^^^
unused import: `FromBase64`: src/util/file.rs#L5
warning: unused import: `FromBase64` --> src/util/file.rs:5:31 | 5 | use rustc_serialize::base64::{FromBase64, ToBase64, MIME}; | ^^^^^^^^^^
unused import: `tauri::Manager`: src/commands/util.rs#L2
warning: unused import: `tauri::Manager` --> src/commands/util.rs:2:5 | 2 | use tauri::Manager; | ^^^^^^^^^^^^^^
unused import: `crate::util::os::get_installed_vcc_runtime`: src/commands/config.rs#L3
warning: unused import: `crate::util::os::get_installed_vcc_runtime` --> src/commands/config.rs:3:5 | 3 | use crate::util::os::get_installed_vcc_runtime; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = note: `#[warn(unused_imports)]` on by default
redundant field names in struct initialization: src/commands/binaries.rs#L84
warning: redundant field names in struct initialization --> src/commands/binaries.rs:84:5 | 84 | tooling_version: tooling_version, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `tooling_version` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names = note: `#[warn(clippy::redundant_field_names)]` on by default
Backend Linter
The following actions uses node12 which is deprecated and will be forced to run on node16: actions-rs/clippy-check@v1. For more info: https://github.blog/changelog/2023-06-13-github-actions-all-actions-will-run-on-node16-instead-of-node12-by-default/
Backend Linter
The following actions use a deprecated Node.js version and will be forced to run on node20: actions-rs/clippy-check@v1. For more info: https://github.blog/changelog/2024-03-07-github-actions-all-actions-will-run-on-node20-instead-of-node16-by-default/