Skip to content

vanilla source impl and more #207

vanilla source impl and more

vanilla source impl and more #207

Triggered via push June 3, 2024 18:11
Status Failure
Total duration 3m 6s
Artifacts 2

build.yml

on: push
Matrix: build
Fit to window
Zoom out
Zoom in

Annotations

15 errors and 84 warnings
useless conversion to the same type: `std::string::String`: src/api/sources/mod.rs#L28
error: useless conversion to the same type: `std::string::String` --> src/api/sources/mod.rs:28:18 | 28 | url: url.into(), | ^^^^^^^^^^ help: consider removing `.into()`: `url` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion = note: `-D clippy::useless-conversion` implied by `-D clippy::all` = help: to override `-D clippy::all` add `#[allow(clippy::useless_conversion)]`
question mark operator is useless here: src/api/sources/modrinth/mod.rs#L29
error: question mark operator is useless here --> src/api/sources/modrinth/mod.rs:29:9 | 29 | Ok(self.fetch_all_versions(id).await?) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing question mark and `Ok()`: `self.fetch_all_versions(id).await` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark = note: `-D clippy::needless-question-mark` implied by `-D clippy::all` = help: to override `-D clippy::all` add `#[allow(clippy::needless_question_mark)]`
methods called `into_*` usually take `self` by value: src/api/sources/vanilla/version.rs#L37
error: methods called `into_*` usually take `self` by value --> src/api/sources/vanilla/version.rs:37:22 | 37 | pub fn into_step(&self, ty: DownloadType) -> Option<Vec<Step>> { | ^^^^^ | = help: consider choosing a less ambiguous name = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention
redundant guard: src/api/utils/pathdiff.rs#L52
error: redundant guard --> src/api/utils/pathdiff.rs:52:39 | 52 | (Some(_), Some(b)) if b == Component::ParentDir => return None, | ^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_guards help: try | 52 - (Some(_), Some(b)) if b == Component::ParentDir => return None, 52 + (Some(_), Some(Component::ParentDir)) => return None, |
redundant guard: src/api/utils/pathdiff.rs#L51
error: redundant guard --> src/api/utils/pathdiff.rs:51:39 | 51 | (Some(a), Some(b)) if b == Component::CurDir => comps.push(a), | ^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_guards = note: `-D clippy::redundant-guards` implied by `-D clippy::all` = help: to override `-D clippy::all` add `#[allow(clippy::redundant_guards)]` help: try | 51 - (Some(a), Some(b)) if b == Component::CurDir => comps.push(a), 51 + (Some(a), Some(Component::CurDir)) => comps.push(a), |
this expression creates a reference which is immediately dereferenced by the compiler: src/api/app/mod.rs#L79
error: this expression creates a reference which is immediately dereferenced by the compiler --> src/api/app/mod.rs:79:51 | 79 | addons.append(&mut source.resolve(&self).await?); | ^^^^^ help: change this to: `self` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow = note: `-D clippy::needless-borrow` implied by `-D clippy::all` = help: to override `-D clippy::all` add `#[allow(clippy::needless_borrow)]`
match expression looks like `matches!` macro: src/api/models/server/server_flavor.rs#L20
error: match expression looks like `matches!` macro --> src/api/models/server/server_flavor.rs:20:9 | 20 | / match self { 21 | | ServerFlavor::Modded => true, 22 | | _ => false, 23 | | } | |_________^ help: try: `matches!(self, ServerFlavor::Modded)` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro
match expression looks like `matches!` macro: src/api/models/server/server_flavor.rs#L13
error: match expression looks like `matches!` macro --> src/api/models/server/server_flavor.rs:13:9 | 13 | / match self { 14 | | ServerFlavor::Proxy => false, 15 | | _ => true, 16 | | } | |_________^ help: try: `!matches!(self, ServerFlavor::Proxy)` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro = note: `-D clippy::match-like-matches-macro` implied by `-D clippy::all` = help: to override `-D clippy::all` add `#[allow(clippy::match_like_matches_macro)]`
methods called `into_*` usually take `self` by value: src/api/models/mrpack/mod.rs#L31
error: methods called `into_*` usually take `self` by value --> src/api/models/mrpack/mod.rs:31:29 | 31 | pub async fn into_addon(&self) -> Result<Addon> { | ^^^^^ | = help: consider choosing a less ambiguous name = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention
methods called `into_*` usually take `self` by value: src/api/models/packwiz/mod.rs#L11
error: methods called `into_*` usually take `self` by value --> src/api/models/packwiz/mod.rs:11:29 | 11 | pub async fn into_addon(&self) -> Result<Addon> { | ^^^^^ | = help: consider choosing a less ambiguous name = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention = note: `-D clippy::wrong-self-convention` implied by `-D clippy::all` = help: to override `-D clippy::all` add `#[allow(clippy::wrong_self_convention)]`
module has the same name as its containing module: src/api/models/addon/mod.rs#L1
error: module has the same name as its containing module --> src/api/models/addon/mod.rs:1:1 | 1 | mod addon; | ^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception = note: `-D clippy::module-inception` implied by `-D clippy::all` = help: to override `-D clippy::all` add `#[allow(clippy::module_inception)]`
lint group `pedantic` has the same priority (0) as a lint: Cargo.toml#L24
error: lint group `pedantic` has the same priority (0) as a lint --> Cargo.toml:24:1 | 24 | pedantic = "warn" | ^^^^^^^^ ------ has an implicit priority of 0 25 | missing_docs_in_private_items = "allow" | ----------------------------- has the same priority as this lint | = note: the order of the lints in the table is ignored by Cargo = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#lint_groups_priority help: to have lints override the group set `pedantic` to a lower priority | 24 | pedantic = { level = "warn", priority = -1 } | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lint group `all` has the same priority (0) as a lint: Cargo.toml#L23
error: lint group `all` has the same priority (0) as a lint --> Cargo.toml:23:1 | 23 | all = "deny" | ^^^ ------ has an implicit priority of 0 24 | pedantic = "warn" 25 | missing_docs_in_private_items = "allow" | ----------------------------- has the same priority as this lint | = note: the order of the lints in the table is ignored by Cargo = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#lint_groups_priority = note: `-D clippy::lint-groups-priority` implied by `-D clippy::all` = help: to override `-D clippy::all` add `#[allow(clippy::lint_groups_priority)]` help: to have lints override the group set `all` to a lower priority | 23 | all = { level = "deny", priority = -1 } | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
redundant field names in struct initialization: src/api/sources/vanilla/version.rs#L46
error: redundant field names in struct initialization --> src/api/sources/vanilla/version.rs:46:17 | 46 | filename: filename, | ^^^^^^^^^^^^^^^^^^ help: replace it with: `filename` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names = note: `-D clippy::redundant-field-names` implied by `-D clippy::all` = help: to override `-D clippy::all` add `#[allow(clippy::redundant_field_names)]`
clippy
Clippy had exited with the 101 exit code
build (ubuntu-latest)
Node.js 16 actions are deprecated. Please update the following actions to use Node.js 20: actions/checkout@v3, actions/upload-artifact@v3. For more information see: https://github.blog/changelog/2023-09-22-github-actions-transitioning-from-node-16-to-node-20/.
unused `async` for function with no await statements: src/commands/init.rs#L14
warning: unused `async` for function with no await statements --> src/commands/init.rs:14:1 | 14 | / pub async fn run(mut app: App, args: Args) -> Result<()> { 15 | | 16 | | 17 | | Ok(()) 18 | | } | |_^ | = help: consider removing the `async` from this function = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_async
unused `async` for function with no await statements: src/api/sources/mod.rs#L10
warning: unused `async` for function with no await statements --> src/api/sources/mod.rs:10:1 | 10 | / pub async fn resolve_steps_for_url( 11 | | app: &App, 12 | | url: impl Into<String>, 13 | | filename: Option<String>, ... | 33 | | ]) 34 | | } | |_^ | = help: consider removing the `async` from this function = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_async
unused `async` for function with no await statements: src/api/utils/accessor.rs#L18
warning: unused `async` for function with no await statements --> src/api/utils/accessor.rs:18:5 | 18 | / pub async fn dir(&self) -> Result<Vec<String>> { 19 | | match self { 20 | | Accessor::Zip(zip) => Ok(zip.file_names().map(ToOwned::to_owned).collect()), 21 | | Accessor::Local(path) => Ok(path.read_dir()? ... | 26 | | } 27 | | } | |_____^ | = help: consider removing the `async` from this function = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_async
unused `async` for function with no await statements: src/api/app/actions/init/mod.rs#L27
warning: unused `async` for function with no await statements --> src/api/app/actions/init/mod.rs:27:5 | 27 | / pub async fn init_network(&mut self) -> Result<()> { 28 | | intro("initializing network")?; 29 | | 30 | | let name: String = input("Name of the network?") ... | 39 | | Ok(()) 40 | | } | |_____^ | = help: consider removing the `async` from this function = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_async
unused `async` for function with no await statements: src/api/app/actions/init/mod.rs#L10
warning: unused `async` for function with no await statements --> src/api/app/actions/init/mod.rs:10:5 | 10 | / pub async fn init_server(&mut self) -> Result<()> { 11 | | intro("initializing server")?; 12 | | 13 | | let name: String = input("Name of the server?") ... | 24 | | Ok(()) 25 | | } | |_____^ | = help: consider removing the `async` from this function = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_async
unused `async` for function with no await statements: src/api/models/mrpack/mod.rs#L31
warning: unused `async` for function with no await statements --> src/api/models/mrpack/mod.rs:31:5 | 31 | / pub async fn into_addon(&self) -> Result<Addon> { 32 | | todo!() 33 | | } | |_____^ | = help: consider removing the `async` from this function = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_async
unused `async` for function with no await statements: src/api/models/packwiz/mod.rs#L11
warning: unused `async` for function with no await statements --> src/api/models/packwiz/mod.rs:11:5 | 11 | / pub async fn into_addon(&self) -> Result<Addon> { 12 | | todo!() 13 | | } | |_____^ | = help: consider removing the `async` from this function = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_async
unused `async` for function with no await statements: src/api/models/addon/addon.rs#L23
warning: unused `async` for function with no await statements --> src/api/models/addon/addon.rs:23:5 | 23 | / async fn resolve_steps(&self) -> Result<Vec<Step>> { 24 | | Ok(vec![]) 25 | | } | |_____^ | = help: consider removing the `async` from this function = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_async
unused `async` for function with no await statements: src/api/models/source.rs#L25
warning: unused `async` for function with no await statements --> src/api/models/source.rs:25:5 | 25 | / pub async fn resolve(&self, app: &App) -> Result<Vec<Addon>> { 26 | | match self { 27 | | Source::File { path } => { 28 | | Ok(vec![]) ... | 38 | | } 39 | | } | |_____^ | = help: consider removing the `async` from this function = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_async
unused `async` for function with no await statements: src/api/models/step.rs#L44
warning: unused `async` for function with no await statements --> src/api/models/step.rs:44:5 | 44 | / async fn run(&self) -> Result<StepResult> { 45 | | Ok(StepResult::Continue) 46 | | } | |_____^ | = help: consider removing the `async` from this function = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_async = note: `-W clippy::unused-async` implied by `-W clippy::pedantic` = help: to override `-W clippy::pedantic` add `#[allow(clippy::unused_async)]`
wildcard matches only a single variant and will also match any future added variants: src/api/sources/vanilla/mod.rs#L30
warning: wildcard matches only a single variant and will also match any future added variants --> src/api/sources/vanilla/mod.rs:30:13 | 30 | _ => bail!("You cant have both smh"), | ^ help: try: `Environment::Both` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_wildcard_for_single_variants = note: `-W clippy::match-wildcard-for-single-variants` implied by `-W clippy::pedantic` = help: to override `-W clippy::pedantic` add `#[allow(clippy::match_wildcard_for_single_variants)]`
item in documentation is missing backticks: src/api/sources/vanilla/version.rs#L201
warning: item in documentation is missing backticks --> src/api/sources/vanilla/version.rs:201:10 | 201 | /// (AssetIndex only) The size of the game version's assets | ^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown help: try | 201 | /// (`AssetIndex` only) The size of the game version's assets | ~~~~~~~~~~~~
item in documentation is missing backticks: src/api/sources/vanilla/version.rs#L199
warning: item in documentation is missing backticks --> src/api/sources/vanilla/version.rs:199:10 | 199 | /// (AssetIndex only) The game version ID the assets are for | ^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown help: try | 199 | /// (`AssetIndex` only) The game version ID the assets are for | ~~~~~~~~~~~~
item in documentation is missing backticks: src/api/sources/vanilla/version.rs#L171
warning: item in documentation is missing backticks --> src/api/sources/vanilla/version.rs:171:13 | 171 | /// The HashMap key specifies a classifier as additional information for downloading files | ^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown help: try | 171 | /// The `HashMap` key specifies a classifier as additional information for downloading files | ~~~~~~~~~
possible intra-doc link using quotes instead of backticks: src/api/sources/vanilla/version.rs#L109
warning: possible intra-doc link using quotes instead of backticks --> src/api/sources/vanilla/version.rs:109:25 | 109 | /// "exclude": ["META-INF/"], | ^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_link_with_quotes = note: `-W clippy::doc-link-with-quotes` implied by `-W clippy::pedantic` = help: to override `-W clippy::pedantic` add `#[allow(clippy::doc_link_with_quotes)]`
unnecessary `!=` operation: src/api/utils/pathdiff.rs#L31
warning: unnecessary `!=` operation --> src/api/utils/pathdiff.rs:31:5 | 31 | / if path.is_absolute() != base.is_absolute() { 32 | | if path.is_absolute() { 33 | | Some(PathBuf::from(path)) 34 | | } else { ... | 64 | | Some(comps.iter().map(|c| c.as_os_str()).collect()) 65 | | } | |_____^ | = help: change to `==` and swap the blocks of the `if`/`else` = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_not_else = note: `-W clippy::if-not-else` implied by `-W clippy::pedantic` = help: to override `-W clippy::pedantic` add `#[allow(clippy::if_not_else)]`
usage of wildcard import: src/api/utils/pathdiff.rs#L3
warning: usage of wildcard import --> src/api/utils/pathdiff.rs:3:5 | 3 | use std::path::*; | ^^^^^^^^^^^^ help: try: `std::path::{Component, Path, PathBuf}` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wildcard_imports
you should put bare URLs between `<`/`>` or make a proper Markdown link: src/api/utils/pathdiff.rs#L1
warning: you should put bare URLs between `<`/`>` or make a proper Markdown link --> src/api/utils/pathdiff.rs:1:5 | 1 | //! https://github.com/Manishearth/pathdiff | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown = note: `-W clippy::doc-markdown` implied by `-W clippy::pedantic` = help: to override `-W clippy::pedantic` add `#[allow(clippy::doc_markdown)]`
redundant closure: src/api/utils/accessor.rs#L22
warning: redundant closure --> src/api/utils/accessor.rs:22:29 | 22 | .filter_map(|r| r.ok()) | ^^^^^^^^^^ help: replace the closure with the method itself: `std::result::Result::ok` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure_for_method_calls = note: `-W clippy::redundant-closure-for-method-calls` implied by `-W clippy::pedantic` = help: to override `-W clippy::pedantic` add `#[allow(clippy::redundant_closure_for_method_calls)]`
this match arm has an identical body to another arm: src/api/models/server/server_flavor.rs#L30
warning: this match arm has an identical body to another arm --> src/api/models/server/server_flavor.rs:30:13 | 30 | ServerFlavor::Patched => true, | ---------------------^^^^^^^^ | | | help: try merging the arm patterns: `ServerFlavor::Patched | ServerFlavor::Proxy` | = help: or try changing either arm body note: other arm here --> src/api/models/server/server_flavor.rs:31:13 | 31 | ServerFlavor::Proxy => true, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_same_arms
this match arm has an identical body to another arm: src/api/models/server/server_flavor.rs#L29
warning: this match arm has an identical body to another arm --> src/api/models/server/server_flavor.rs:29:13 | 29 | ServerFlavor::Modded => false, | --------------------^^^^^^^^^ | | | help: try merging the arm patterns: `ServerFlavor::Modded | ServerFlavor::Vanilla` | = help: or try changing either arm body note: other arm here --> src/api/models/server/server_flavor.rs:28:13 | 28 | ServerFlavor::Vanilla => false, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_same_arms
this argument (1 byte) is passed by reference, but would be more efficient if passed by value (limit: 8 byte): src/api/models/server/server_flavor.rs#L26
warning: this argument (1 byte) is passed by reference, but would be more efficient if passed by value (limit: 8 byte) --> src/api/models/server/server_flavor.rs:26:29 | 26 | pub fn supports_plugins(&self) -> bool { | ^^^^^ help: consider passing by value instead: `self` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref
this argument (1 byte) is passed by reference, but would be more efficient if passed by value (limit: 8 byte): src/api/models/server/server_flavor.rs#L19
warning: this argument (1 byte) is passed by reference, but would be more efficient if passed by value (limit: 8 byte) --> src/api/models/server/server_flavor.rs:19:26 | 19 | pub fn supports_mods(&self) -> bool { | ^^^^^ help: consider passing by value instead: `self` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref
this argument (1 byte) is passed by reference, but would be more efficient if passed by value (limit: 8 byte): src/api/models/server/server_flavor.rs#L12
warning: this argument (1 byte) is passed by reference, but would be more efficient if passed by value (limit: 8 byte) --> src/api/models/server/server_flavor.rs:12:31 | 12 | pub fn supports_datapacks(&self) -> bool { | ^^^^^ help: consider passing by value instead: `self` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref = note: `-W clippy::trivially-copy-pass-by-ref` implied by `-W clippy::pedantic` = help: to override `-W clippy::pedantic` add `#[allow(clippy::trivially_copy_pass_by_ref)]`
usage of wildcard import: src/api/models/server/server_type.rs#L2
warning: usage of wildcard import --> src/api/models/server/server_type.rs:2:5 | 2 | use crate::api::utils::serde::*; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `crate::api::utils::serde::str_latest` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wildcard_imports = note: `-W clippy::wildcard-imports` implied by `-W clippy::pedantic` = help: to override `-W clippy::pedantic` add `#[allow(clippy::wildcard_imports)]`
field name starts with the struct's name: src/api/models/addon/addon.rs#L18
warning: field name starts with the struct's name --> src/api/models/addon/addon.rs:18:5 | 18 | pub addon_type: AddonType, | ^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#struct_field_names = note: `-W clippy::struct-field-names` implied by `-W clippy::pedantic` = help: to override `-W clippy::pedantic` add `#[allow(clippy::struct_field_names)]`
this match arm has an identical body to another arm: src/api/models/modpack_source.rs#L30
warning: this match arm has an identical body to another arm --> src/api/models/modpack_source.rs:30:13 | 30 | Self::Remote { modpack_type, .. } => *modpack_type, | ---------------------------------^^^^^^^^^^^^^^^^^ | | | help: try merging the arm patterns: `Self::Remote { modpack_type, .. } | Self::Local { modpack_type, .. }` | = help: or try changing either arm body note: other arm here --> src/api/models/modpack_source.rs:29:13 | 29 | Self::Local { modpack_type, .. } => *modpack_type, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_same_arms = note: `-W clippy::match-same-arms` implied by `-W clippy::pedantic` = help: to override `-W clippy::pedantic` add `#[allow(clippy::match_same_arms)]`
method `wait_ratelimit` is never used: src/api/sources/modrinth/ratelimit.rs#L7
warning: method `wait_ratelimit` is never used --> src/api/sources/modrinth/ratelimit.rs:7:14 | 6 | pub trait ModrinthWaitRatelimit<T> { | --------------------- method in this trait 7 | async fn wait_ratelimit(self) -> Result<T>; | ^^^^^^^^^^^^^^
multiple methods are never used: src/api/sources/modrinth/mod.rs#L15
warning: multiple methods are never used --> src/api/sources/modrinth/mod.rs:15:18 | 14 | impl<'a> ModrinthAPI<'a> { | ------------------------ methods in this implementation 15 | pub async fn fetch_api<T: DeserializeOwned>(&self, url: String) -> Result<T> { | ^^^^^^^^^ ... 19 | pub async fn fetch_project(&self, id: &str) -> Result<ModrinthProject> { | ^^^^^^^^^^^^^ ... 23 | pub async fn fetch_all_versions(&self, id: &str) -> Result<Vec<ModrinthVersion>> { | ^^^^^^^^^^^^^^^^^^ ... 28 | pub async fn fetch_versions(&self, id: &str) -> Result<Vec<ModrinthVersion>> { | ^^^^^^^^^^^^^^ ... 32 | pub async fn fetch_version(&self, id: &str, version: &str) -> Result<ModrinthVersion> { | ^^^^^^^^^^^^^ ... 45 | pub async fn fetch_file( | ^^^^^^^^^^ ... 82 | pub async fn version_from_hash(&self, hash: &str, algo: &str) -> Result<ModrinthVersion> { | ^^^^^^^^^^^^^^^^^ ... 94 | pub async fn resolve_steps(&self, id: &str, version: &str) -> Result<Vec<Step>> { | ^^^^^^^^^^^^^
static `API_URL` is never used: src/api/sources/modrinth/mod.rs#L12
warning: static `API_URL` is never used --> src/api/sources/modrinth/mod.rs:12:8 | 12 | static API_URL: &str = "https://api.modrinth.com/v2"; | ^^^^^^^
struct `ModrinthAPI` is never constructed: src/api/sources/modrinth/mod.rs#L10
warning: struct `ModrinthAPI` is never constructed --> src/api/sources/modrinth/mod.rs:10:12 | 10 | pub struct ModrinthAPI<'a>(pub &'a App); | ^^^^^^^^^^^
function `dollar_repl` is never used: src/api/sources/vanilla/rulematcher.rs#L182
warning: function `dollar_repl` is never used --> src/api/sources/vanilla/rulematcher.rs:182:4 | 182 | fn dollar_repl<F>(input: &str, replacer: F) -> String | ^^^^^^^^^^^
multiple associated items are never used: src/api/sources/vanilla/rulematcher.rs#L17
warning: multiple associated items are never used --> src/api/sources/vanilla/rulematcher.rs:17:12 | 14 | impl PistonRuleMatcher { | ---------------------- associated items in this implementation ... 17 | pub fn new(os_name: String, os_arch: String, os_version: String) -> Self { | ^^^ ... 30 | pub fn empty() -> Self { | ^^^^^ ... 44 | pub fn from_os() -> Self { | ^^^^^^^ ... 68 | pub fn should_download_library(&self, library: &PistonLibrary) -> bool { | ^^^^^^^^^^^^^^^^^^^^^^^ ... 76 | pub fn get_native_library(&self, library: &PistonLibrary) -> Option<PistonFile> { | ^^^^^^^^^^^^^^^^^^ ... 90 | pub fn match_rules(&self, rules: &Vec<PistonRule>) -> bool { | ^^^^^^^^^^^ ... 104 | pub fn match_rule(&self, rule: &PistonRule) -> bool { | ^^^^^^^^^^ ... 114 | pub fn match_constraint(&self, constraint: &PistonRuleConstraints) -> bool { | ^^^^^^^^^^^^^^^^ ... 140 | pub fn build_args( | ^^^^^^^^^^ ... 167 | pub fn process_string(&self, map: &HashMap<String, String>, input: &str) -> String { | ^^^^^^^^^^^^^^
struct `PistonRuleMatcher` is never constructed: src/api/sources/vanilla/rulematcher.rs#L9
warning: struct `PistonRuleMatcher` is never constructed --> src/api/sources/vanilla/rulematcher.rs:9:12 | 9 | pub struct PistonRuleMatcher { | ^^^^^^^^^^^^^^^^^
method `into_step` is never used: src/api/sources/vanilla/version.rs#L37
warning: method `into_step` is never used --> src/api/sources/vanilla/version.rs:37:12 | 36 | impl VersionInfo { | ---------------- method in this implementation 37 | pub fn into_step(&self, ty: DownloadType) -> Option<Vec<Step>> { | ^^^^^^^^^
method `find` is never used: src/api/sources/vanilla/manifest.rs#L15
warning: method `find` is never used --> src/api/sources/vanilla/manifest.rs:15:12 | 12 | impl VersionManifest { | -------------------- method in this implementation ... 15 | pub fn find(&self, id: &str) -> Option<VersionIndex> { | ^^^^
constant `VERSION_MANIFEST_URL` is never used: src/api/sources/vanilla/manifest.rs#L3
warning: constant `VERSION_MANIFEST_URL` is never used --> src/api/sources/vanilla/manifest.rs:3:11 | 3 | pub const VERSION_MANIFEST_URL: &str = "https://piston-meta.mojang.com/mc/game/version_manifest_v2.json"; | ^^^^^^^^^^^^^^^^^^^^
methods `get_url` and `get_path` are never used: src/api/sources/vanilla/assets.rs#L21
warning: methods `get_url` and `get_path` are never used --> src/api/sources/vanilla/assets.rs:21:12 | 18 | impl MCAsset { | ------------ methods in this implementation ... 21 | pub fn get_url(&self) -> String { | ^^^^^^^ ... 27 | pub fn get_path(&self) -> String { | ^^^^^^^^
constant `RESOURCES_URL` is never used: src/api/sources/vanilla/assets.rs#L4
warning: constant `RESOURCES_URL` is never used --> src/api/sources/vanilla/assets.rs:4:11 | 4 | pub const RESOURCES_URL: &str = "https://resources.download.minecraft.net"; | ^^^^^^^^^^^^^
methods `fetch_manifest`, `fetch_latest_mcver`, and `resolve_steps` are never used: src/api/sources/vanilla/mod.rs#L15
warning: methods `fetch_manifest`, `fetch_latest_mcver`, and `resolve_steps` are never used --> src/api/sources/vanilla/mod.rs:15:18 | 14 | impl<'a> VanillaAPI<'a> { | ----------------------- methods in this implementation 15 | pub async fn fetch_manifest(&self) -> Result<VersionManifest> { | ^^^^^^^^^^^^^^ ... 19 | pub async fn fetch_latest_mcver(&self) -> Result<String> { | ^^^^^^^^^^^^^^^^^^ ... 26 | pub async fn resolve_steps(&self, version: &str, env: Environment) -> Result<Vec<Step>> { | ^^^^^^^^^^^^^
struct `VanillaAPI` is never constructed: src/api/sources/vanilla/mod.rs#L12
warning: struct `VanillaAPI` is never constructed --> src/api/sources/vanilla/mod.rs:12:12 | 12 | pub struct VanillaAPI<'a>(pub &'a App); | ^^^^^^^^^^
function `resolve_steps_for_url` is never used: src/api/sources/mod.rs#L10
warning: function `resolve_steps_for_url` is never used --> src/api/sources/mod.rs:10:14 | 10 | pub async fn resolve_steps_for_url( | ^^^^^^^^^^^^^^^^^^^^^
function `diff_paths` is never used: src/api/utils/pathdiff.rs#L23
warning: function `diff_paths` is never used --> src/api/utils/pathdiff.rs:23:8 | 23 | pub fn diff_paths<P, B>(path: P, base: B) -> Option<PathBuf> | ^^^^^^^^^^
function `get_filename_from_url` is never used: src/api/utils/url.rs#L1
warning: function `get_filename_from_url` is never used --> src/api/utils/url.rs:1:8 | 1 | pub fn get_filename_from_url(url: &str) -> String { | ^^^^^^^^^^^^^^^^^^^^^
methods `dir` and `json` are never used: src/api/utils/accessor.rs#L18
warning: methods `dir` and `json` are never used --> src/api/utils/accessor.rs:18:18 | 17 | impl Accessor { | ------------- methods in this implementation 18 | pub async fn dir(&self) -> Result<Vec<String>> { | ^^^ ... 29 | pub async fn json<T: DeserializeOwned>(&mut self, app: &App, path: &str) -> Result<T> { | ^^^^
enum `Accessor` is never used: src/api/utils/accessor.rs#L11
warning: enum `Accessor` is never used --> src/api/utils/accessor.rs:11:10 | 11 | pub enum Accessor { | ^^^^^^^^
trait `ReadSeek` is never used: src/api/utils/accessor.rs#L9
warning: trait `ReadSeek` is never used --> src/api/utils/accessor.rs:9:11 | 9 | pub trait ReadSeek: std::io::Read + Seek {} | ^^^^^^^^
methods `init_server` and `init_network` are never used: src/api/app/actions/init/mod.rs#L10
warning: methods `init_server` and `init_network` are never used --> src/api/app/actions/init/mod.rs:10:18 | 9 | impl App { | -------- methods in this implementation 10 | pub async fn init_server(&mut self) -> Result<()> { | ^^^^^^^^^^^ ... 27 | pub async fn init_network(&mut self) -> Result<()> { | ^^^^^^^^^^^^
methods `http_get_json` and `collect_addons` are never used: src/api/app/mod.rs#L42
warning: methods `http_get_json` and `collect_addons` are never used --> src/api/app/mod.rs:42:18 | 27 | impl App { | -------- methods in this implementation ... 42 | pub async fn http_get_json<T: DeserializeOwned>(&self, url: impl IntoUrl) -> Result<T> { | ^^^^^^^^^^^^^ ... 72 | pub async fn collect_addons(&self) -> Result<Vec<Addon>> { | ^^^^^^^^^^^^^^
struct `Lockfile` is never constructed: src/api/models/lockfile/mod.rs#L1
warning: struct `Lockfile` is never constructed --> src/api/models/lockfile/mod.rs:1:12 | 1 | pub struct Lockfile { | ^^^^^^^^
methods `supports_datapacks`, `supports_mods`, and `supports_plugins` are never used: src/api/models/server/server_flavor.rs#L12
warning: methods `supports_datapacks`, `supports_mods`, and `supports_plugins` are never used --> src/api/models/server/server_flavor.rs:12:12 | 11 | impl ServerFlavor { | ----------------- methods in this implementation 12 | pub fn supports_datapacks(&self) -> bool { | ^^^^^^^^^^^^^^^^^^ ... 19 | pub fn supports_mods(&self) -> bool { | ^^^^^^^^^^^^^ ... 26 | pub fn supports_plugins(&self) -> bool { | ^^^^^^^^^^^^^^^^
method `into_addon` is never used: src/api/models/mrpack/mod.rs#L31
warning: method `into_addon` is never used --> src/api/models/mrpack/mod.rs:31:18 | 30 | impl MRPackFile { | --------------- method in this implementation 31 | pub async fn into_addon(&self) -> Result<Addon> { | ^^^^^^^^^^
function `resolve_mrpack_addons` is never used: src/api/models/mrpack/mod.rs#L15
warning: function `resolve_mrpack_addons` is never used --> src/api/models/mrpack/mod.rs:15:14 | 15 | pub async fn resolve_mrpack_addons( | ^^^^^^^^^^^^^^^^^^^^^
constant `MRPACK_INDEX_FILE` is never used: src/api/models/mrpack/mod.rs#L9
warning: constant `MRPACK_INDEX_FILE` is never used --> src/api/models/mrpack/mod.rs:9:11 | 9 | pub const MRPACK_INDEX_FILE: &str = "modrinth.index.json"; | ^^^^^^^^^^^^^^^^^
method `into_addon` is never used: src/api/models/packwiz/mod.rs#L11
warning: method `into_addon` is never used --> src/api/models/packwiz/mod.rs:11:18 | 10 | impl PackwizMod { | --------------- method in this implementation 11 | pub async fn into_addon(&self) -> Result<Addon> { | ^^^^^^^^^^
method `resolve_steps` is never used: src/api/models/addon/addon.rs#L23
warning: method `resolve_steps` is never used --> src/api/models/addon/addon.rs:23:14 | 22 | impl Addon { | ---------- method in this implementation 23 | async fn resolve_steps(&self) -> Result<Vec<Step>> { | ^^^^^^^^^^^^^
method `resolve` is never used: src/api/models/source.rs#L25
warning: method `resolve` is never used --> src/api/models/source.rs:25:18 | 24 | impl Source { | ----------- method in this implementation 25 | pub async fn resolve(&self, app: &App) -> Result<Vec<Addon>> { | ^^^^^^^
method `run` is never used: src/api/models/step.rs#L44
warning: method `run` is never used --> src/api/models/step.rs:44:14 | 43 | impl Step { | --------- method in this implementation 44 | async fn run(&self) -> Result<StepResult> { | ^^^
enum `StepResult` is never used: src/api/models/step.rs#L35
warning: enum `StepResult` is never used --> src/api/models/step.rs:35:10 | 35 | pub enum StepResult { | ^^^^^^^^^^
methods `accessor` and `modpack_type` are never used: src/api/models/modpack_source.rs#L20
warning: methods `accessor` and `modpack_type` are never used --> src/api/models/modpack_source.rs:20:12 | 19 | impl ModpackSource { | ------------------ methods in this implementation 20 | pub fn accessor(&self) -> Result<Accessor> { | ^^^^^^^^ ... 27 | pub fn modpack_type(&self) -> ModpackType { | ^^^^^^^^^^^^ | = note: `#[warn(dead_code)]` on by default
variable does not need to be mutable: src/commands/init.rs#L14
warning: variable does not need to be mutable --> src/commands/init.rs:14:18 | 14 | pub async fn run(mut app: App, args: Args) -> Result<()> { | ----^^^ | | | help: remove this `mut`
unused variable: `args`: src/commands/init.rs#L14
warning: unused variable: `args` --> src/commands/init.rs:14:32 | 14 | pub async fn run(mut app: App, args: Args) -> Result<()> { | ^^^^ help: if this is intentional, prefix it with an underscore: `_args`
unused variable: `app`: src/commands/init.rs#L14
warning: unused variable: `app` --> src/commands/init.rs:14:22 | 14 | pub async fn run(mut app: App, args: Args) -> Result<()> { | ^^^ help: if this is intentional, prefix it with an underscore: `_app`
unused variable: `app`: src/api/sources/mod.rs#L11
warning: unused variable: `app` --> src/api/sources/mod.rs:11:5 | 11 | app: &App, | ^^^ help: if this is intentional, prefix it with an underscore: `_app`
variable does not need to be mutable: src/api/app/actions/init/mod.rs#L33
warning: variable does not need to be mutable --> src/api/app/actions/init/mod.rs:33:13 | 33 | let mut nw = Network { | ----^^ | | | help: remove this `mut`
variable does not need to be mutable: src/api/app/actions/init/mod.rs#L16
warning: variable does not need to be mutable --> src/api/app/actions/init/mod.rs:16:13 | 16 | let mut server = Server { | ----^^^^^^ | | | help: remove this `mut` | = note: `#[warn(unused_mut)]` on by default
unused variable: `modpack`: src/api/models/source.rs#L35
warning: unused variable: `modpack` --> src/api/models/source.rs:35:31 | 35 | Source::Modpack { modpack } => { | ^^^^^^^ help: try ignoring the field: `modpack: _`
unused variable: `path`: src/api/models/source.rs#L31
warning: unused variable: `path` --> src/api/models/source.rs:31:30 | 31 | Source::Folder { path } => { | ^^^^ help: try ignoring the field: `path: _`
unused variable: `path`: src/api/models/source.rs#L27
warning: unused variable: `path` --> src/api/models/source.rs:27:28 | 27 | Source::File { path } => { | ^^^^ help: try ignoring the field: `path: _`
unused variable: `app`: src/api/models/source.rs#L25
warning: unused variable: `app` --> src/api/models/source.rs:25:33 | 25 | pub async fn resolve(&self, app: &App) -> Result<Vec<Addon>> { | ^^^ help: if this is intentional, prefix it with an underscore: `_app` | = note: `#[warn(unused_variables)]` on by default
unused imports: `assets::*`, `rulematcher::*`: src/api/sources/vanilla/mod.rs#L10
warning: unused imports: `assets::*`, `rulematcher::*` --> src/api/sources/vanilla/mod.rs:10:16 | 10 | pub use self::{assets::*, manifest::*, version::*, rulematcher::*}; | ^^^^^^^^^ ^^^^^^^^^^^^^^
binding's name is too similar to existing binding: src/api/utils/pathdiff.rs#L39
warning: binding's name is too similar to existing binding --> src/api/utils/pathdiff.rs:39:17 | 39 | let mut itb = base.components(); | ^^^ | note: existing binding defined here --> src/api/utils/pathdiff.rs:38:17 | 38 | let mut ita = path.components(); | ^^^ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#similar_names = note: `-W clippy::similar-names` implied by `-W clippy::pedantic` = help: to override `-W clippy::pedantic` add `#[allow(clippy::similar_names)]`
unused import: `std::collections::HashMap`: src/api/utils/hashing.rs#L1
warning: unused import: `std::collections::HashMap` --> src/api/utils/hashing.rs:1:5 | 1 | use std::collections::HashMap; | ^^^^^^^^^^^^^^^^^^^^^^^^^
unused import: `init::*`: src/api/app/actions/mod.rs#L5
warning: unused import: `init::*` --> src/api/app/actions/mod.rs:5:9 | 5 | pub use init::*; | ^^^^^^^
unused import: `build::*`: src/api/app/actions/mod.rs#L4
warning: unused import: `build::*` --> src/api/app/actions/mod.rs:4:9 | 4 | pub use build::*; | ^^^^^^^^
unused import: `Url`: src/api/app/mod.rs#L4
warning: unused import: `Url` --> src/api/app/mod.rs:4:24 | 4 | use reqwest::{IntoUrl, Url}; | ^^^
unused import: `server_flavor::*`: src/api/models/server/mod.rs#L9
warning: unused import: `server_flavor::*` --> src/api/models/server/mod.rs:9:9 | 9 | pub use server_flavor::*; | ^^^^^^^^^^^^^^^^
unused import: `server_type::*`: src/api/models/server/mod.rs#L8
warning: unused import: `server_type::*` --> src/api/models/server/mod.rs:8:9 | 8 | pub use server_type::*; | ^^^^^^^^^^^^^^
unused import: `packwiz_pack::*`: src/api/models/packwiz/mod.rs#L5
warning: unused import: `packwiz_pack::*` --> src/api/models/packwiz/mod.rs:5:9 | 5 | pub use packwiz_pack::*; | ^^^^^^^^^^^^^^^ | = note: `#[warn(unused_imports)]` on by default
clippy
Node.js 16 actions are deprecated. Please update the following actions to use Node.js 20: actions/checkout@v3, actions-rs/clippy-check@v1. For more information see: https://github.blog/changelog/2023-09-22-github-actions-transitioning-from-node-16-to-node-20/.
clippy
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/
build (windows-latest)
Node.js 16 actions are deprecated. Please update the following actions to use Node.js 20: actions/checkout@v3, actions/upload-artifact@v3. For more information see: https://github.blog/changelog/2023-09-22-github-actions-transitioning-from-node-16-to-node-20/.
Deprecation notice: v1, v2, and v3 of the artifact actions
The following artifacts were uploaded using a version of actions/upload-artifact that is scheduled for deprecation: "mcman-ubuntu-latest", "mcman-windows-latest". Please update your workflow to use v4 of the artifact actions. Learn more: https://github.blog/changelog/2024-04-16-deprecation-notice-v3-of-the-artifact-actions/

Artifacts

Produced during runtime
Name Size
mcman-ubuntu-latest Expired
1.78 MB
mcman-windows-latest Expired
1.7 MB