source resolution works #209
Annotations
19 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
|
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#L128
error: this expression creates a reference which is immediately dereferenced by the compiler
--> src/api/app/mod.rs:128:54
|
128 | addons.append(&mut source.resolve_addons(&self).await?);
| ^^^^^ help: change this to: `self`
|
= 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/api/app/mod.rs#L66
error: this expression creates a reference which is immediately dereferenced by the compiler
--> src/api/app/mod.rs:66:24
|
66 | write_toml(&path, NETWORK_TOML, &*network)?;
| ^^^^^ help: change this to: `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/api/app/mod.rs#L61
error: this expression creates a reference which is immediately dereferenced by the compiler
--> src/api/app/mod.rs:61:24
|
61 | write_toml(&path, SERVER_TOML, &*server)?;
| ^^^^^ help: change this to: `path`
|
= 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#L38
error: methods called `into_*` usually take `self` by value
--> src/api/models/packwiz/mod.rs:38:29
|
38 | pub async fn into_addon(&self, app: &App, target: AddonTarget) -> 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/addon/addon_metadata.rs#L16
error: methods called `into_*` usually take `self` by value
--> src/api/models/addon/addon_metadata.rs:16:21
|
16 | pub fn into_str(&self) -> &'static str {
| ^^^^^
|
= 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)]`
|
question mark operator is useless here:
src/api/models/modpack_source.rs#L27
error: question mark operator is useless here
--> src/api/models/modpack_source.rs:27:9
|
27 | Ok(Accessor::from(str)?)
| ^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing question mark and `Ok()`: `Accessor::from(str)`
|
= 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)]`
|
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/api/utils/accessor.rs#L32
warning: unused `async` for function with no await statements
--> src/api/utils/accessor.rs:32:5
|
32 | / pub async fn dir(&self) -> Result<Vec<String>> {
33 | | match self {
34 | | Accessor::ZipLocal(zip) => Ok(zip.file_names().map(ToOwned::to_owned).collect()),
35 | | Accessor::Local(path) => Ok(path.read_dir()?
... |
40 | | }
41 | | }
| |_____^
|
= 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 | | Ok(Addon {
33 | | environment: self.env.as_ref().map(|e| e.clone().into()),
34 | | addon_type: AddonType::Url { url: self.downloads.first().ok_or(anyhow!("No downloads"))?.clone() },
35 | | target: AddonTarget::from_path(&self.path),
36 | | })
37 | | }
| |_____^
|
= 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#L38
warning: unused `async` for function with no await statements
--> src/api/models/packwiz/mod.rs:38:5
|
38 | / pub async fn into_addon(&self, app: &App, target: AddonTarget) -> Result<Addon> {
39 | | let addon_type = if let Some(update) = &self.update {
40 | | match update {
41 | | PackwizModUpdate::Modrinth { mod_id, version } => AddonType::Modrinth { id: mod_id.clone(), version: version.clone() },
... |
60 | | Ok(addon)
61 | | }
| |_____^
|
= 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#L36
warning: redundant closure
--> src/api/utils/accessor.rs:36:29
|
36 | .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)]`
|
case-sensitive file extension comparison:
src/api/utils/accessor.rs#L23
warning: case-sensitive file extension comparison
--> src/api/utils/accessor.rs:23:19
|
23 | } else if str.ends_with(".zip") || str.ends_with(".mrpack") {
| ^^^^^^^^^^^^^^^^^^^^^
|
= help: consider using a case-insensitive comparison instead
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#case_sensitive_file_extension_comparisons
= note: `-W clippy::case-sensitive-file-extension-comparisons` implied by `-W clippy::pedantic`
= help: to override `-W clippy::pedantic` add `#[allow(clippy::case_sensitive_file_extension_comparisons)]`
help: use std::path::Path
|
23 ~ } else if std::path::Path::new(str)
24 + .extension()
25 ~ .map_or(false, |ext| ext.eq_ignore_ascii_case("zip")) || str.ends_with(".mrpack") {
|
|
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
|
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)]`
|
this argument (1 byte) is passed by reference, but would be more efficient if passed by value (limit: 8 byte):
src/api/models/addon/addon_metadata.rs#L16
warning: this argument (1 byte) is passed by reference, but would be more efficient if passed by value (limit: 8 byte)
--> src/api/models/addon/addon_metadata.rs:16:21
|
16 | pub fn into_str(&self) -> &'static str {
| ^^^^^ 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)]`
|
called `map(<f>).unwrap_or(<a>)` on an `Option` value:
src/api/models/addon/addon_target.rs#L36
warning: called `map(<f>).unwrap_or(<a>)` on an `Option` value
--> src/api/models/addon/addon_target.rs:36:25
|
36 | Self::from_str(&Path::new(path).parent().map(|p| p.to_string_lossy().into_owned()).unwrap_or(".".to_owned()))
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_unwrap_or
= note: `-W clippy::map-unwrap-or` implied by `-W clippy::pedantic`
= help: to override `-W clippy::pedantic` add `#[allow(clippy::map_unwrap_or)]`
help: use `map_or(<a>, <f>)` instead
|
36 - Self::from_str(&Path::new(path).parent().map(|p| p.to_string_lossy().into_owned()).unwrap_or(".".to_owned()))
36 + Self::from_str(&Path::new(path).parent().map_or(".".to_owned(), |p| p.to_string_lossy().into_owned()))
|
|
field name starts with the struct's name:
src/api/models/addon/addon.rs#L12
warning: field name starts with the struct's name
--> src/api/models/addon/addon.rs:12:5
|
12 | 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#L33
warning: this match arm has an identical body to another arm
--> src/api/models/modpack_source.rs:33:13
|
33 | 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:32:13
|
32 | 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 `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 {
| ^^^^^^^^^^^^^^^^^^^^^
|
method `dir` is never used:
src/api/utils/accessor.rs#L32
warning: method `dir` is never used
--> src/api/utils/accessor.rs:32:18
|
19 | impl Accessor {
| ------------- method in this implementation
...
32 | pub async fn dir(&self) -> Result<Vec<String>> {
| ^^^
|
function `write_toml` is never used:
src/api/utils/mod.rs#L32
warning: function `write_toml` is never used
--> src/api/utils/mod.rs:32:8
|
32 | pub fn write_toml<T: Serialize>(path: &Path, filename: &str, value: &T) -> Result<()> {
| ^^^^^^^^^^
|
struct `AppOptions` is never constructed:
src/api/app/options/mod.rs#L1
warning: struct `AppOptions` is never constructed
--> src/api/app/options/mod.rs:1:12
|
1 | pub struct AppOptions {
| ^^^^^^^^^^
|
methods `join`, `try_get_json`, and `try_write_json` are never used:
src/api/app/cache/mod.rs#L17
warning: methods `join`, `try_get_json`, and `try_write_json` are never used
--> src/api/app/cache/mod.rs:17:12
|
12 | impl Cache {
| ---------- methods in this implementation
...
17 | pub fn join(&self, path: &str) -> Option<PathBuf> {
| ^^^^
...
21 | pub fn try_get_json<T: DeserializeOwned>(&self, path: &str) -> Result<Option<T>> {
| ^^^^^^^^^^^^
...
40 | pub fn try_write_json<T: serde::Serialize>(&self, path: &str, data: &T) -> Result<()> {
| ^^^^^^^^^^^^^^
|
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 `vanilla` and `modrinth` are never used:
src/api/app/mod.rs#L147
warning: methods `vanilla` and `modrinth` are never used
--> src/api/app/mod.rs:147:9
|
145 | impl App {
| -------- methods in this implementation
146 | api_methods! {
147 | vanilla => VanillaAPI,
| ^^^^^^^
148 | modrinth => ModrinthAPI,
| ^^^^^^^^
|
= note: this warning originates in the macro `api_methods` (in Nightly builds, run with -Z macro-backtrace for more info)
|
method `save_changes` is never used:
src/api/app/mod.rs#L58
warning: method `save_changes` is never used
--> src/api/app/mod.rs:58:18
|
35 | impl App {
| -------- method in this implementation
...
58 | pub async fn save_changes(&self) -> Result<()> {
| ^^^^^^^^^^^^
|
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_str` is never used:
src/api/models/addon/addon_metadata.rs#L16
warning: method `into_str` is never used
--> src/api/models/addon/addon_metadata.rs:16:12
|
15 | impl AddonMetadataSource {
| ------------------------ method in this implementation
16 | pub fn into_str(&self) -> &'static str {
| ^^^^^^^^
|
method `as_str` is never used:
src/api/models/addon/addon_target.rs#L27
warning: method `as_str` is never used
--> src/api/models/addon/addon_target.rs:27:12
|
18 | impl AddonTarget {
| ---------------- method in this implementation
...
27 | pub fn as_str(&self) -> &str {
| ^^^^^^
|
method `resolve_steps` is never used:
src/api/models/addon/addon.rs#L17
warning: method `resolve_steps` is never used
--> src/api/models/addon/addon.rs:17:18
|
16 | impl Addon {
| ---------- method in this implementation
17 | pub async fn resolve_steps(&self, app: &App) -> Result<Vec<Step>> {
| ^^^^^^^^^^^^^
|
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 {
| ^^^^^^^^^^
|
= note: `#[warn(dead_code)]` on by default
|
variable does not need to be mutable:
src/commands/sources/mod.rs#L12
warning: variable does not need to be mutable
--> src/commands/sources/mod.rs:12:18
|
12 | pub async fn run(mut app: App, args: Commands) -> Result<()> {
| ----^^^
| |
| help: remove this `mut`
|
variable does not need to be mutable:
src/commands/sources/list.rs#L10
warning: variable does not need to be mutable
--> src/commands/sources/list.rs:10:18
|
10 | pub async fn run(mut app: App, args: Args) -> Result<()> {
| ----^^^
| |
| help: remove this `mut`
|
unused variable: `args`:
src/commands/sources/list.rs#L10
warning: unused variable: `args`
--> src/commands/sources/list.rs:10:32
|
10 | pub async fn run(mut app: App, args: Args) -> Result<()> {
| ^^^^ help: if this is intentional, prefix it with an underscore: `_args`
|
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`
|
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: `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`
|
unused variable: `app`:
src/api/models/packwiz/mod.rs#L38
warning: unused variable: `app`
--> src/api/models/packwiz/mod.rs:38:36
|
38 | pub async fn into_addon(&self, app: &App, target: AddonTarget) -> Result<Addon> {
| ^^^ help: if this is intentional, prefix it with an underscore: `_app`
|
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: _`
|
= 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 imports: `Read`, `Seek`:
src/api/utils/accessor.rs#L1
warning: unused imports: `Read`, `Seek`
--> src/api/utils/accessor.rs:1:16
|
1 | use std::{io::{Read, Seek}, path::PathBuf};
| ^^^^ ^^^^
|
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: `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: `Environment`:
src/api/models/mrpack/mod.rs#L13
warning: unused import: `Environment`
--> src/api/models/mrpack/mod.rs:13:44
|
13 | use super::{Addon, AddonTarget, AddonType, Environment};
| ^^^^^^^^^^^
|
unused import: `models::Environment`:
src/api/models/mrpack/mrpack_file.rs#L5
warning: unused import: `models::Environment`
--> src/api/models/mrpack/mrpack_file.rs:5:18
|
5 | use crate::api::{models::Environment, utils::hashing::HashFormat};
| ^^^^^^^^^^^^^^^^^^^
|
unused import: `std::path::Path`:
src/api/models/packwiz/mod.rs#L4
warning: unused import: `std::path::Path`
--> src/api/models/packwiz/mod.rs:4:5
|
4 | use std::path::Path;
| ^^^^^^^^^^^^^^^
|
unused import: `addon_metadata::*`:
src/api/models/addon/mod.rs#L9
warning: unused import: `addon_metadata::*`
--> src/api/models/addon/mod.rs:9:9
|
9 | pub use addon_metadata::*;
| ^^^^^^^^^^^^^^^^^
|
= 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
|
3.78 MB |
|
mcman-windows-latest
Expired
|
4.03 MB |
|