diff --git a/clippy.toml b/clippy.toml new file mode 100644 index 00000000..dcec9d87 --- /dev/null +++ b/clippy.toml @@ -0,0 +1 @@ +too-many-arguments-threshold = 8 \ No newline at end of file diff --git a/src/child.rs b/src/child.rs index 6558ebdb..7246ef6e 100644 --- a/src/child.rs +++ b/src/child.rs @@ -41,7 +41,7 @@ pub fn new_command(program: &str) -> Command { /// given sender. fn read_and_send( mut reader: R, - sender: mpsc::Sender, + sender: &mpsc::Sender, mut map: F, ) -> io::Result<()> where @@ -104,10 +104,7 @@ where .rev() .find(|(_, ch)| *ch == b'\n') { - let next_in_progress: Vec = self.in_progress[last_newline + 1..] - .iter() - .cloned() - .collect(); + let next_in_progress: Vec = self.in_progress[last_newline + 1..].to_vec(); let mut these_lines = mem::replace(&mut self.in_progress, next_in_progress); these_lines.truncate(last_newline + 1); let these_lines = String::from_utf8(these_lines)?; @@ -153,9 +150,9 @@ pub fn run(mut command: Command, command_name: &str) -> Result { // waiting on the child process. let stdout_handle = - thread::spawn(move || read_and_send(stdout, stdout_send, OutputFragment::Stdout)); + thread::spawn(move || read_and_send(stdout, &stdout_send, OutputFragment::Stdout)); let stderr_handle = - thread::spawn(move || read_and_send(stderr, stderr_send, OutputFragment::Stderr)); + thread::spawn(move || read_and_send(stderr, &stderr_send, OutputFragment::Stderr)); let mut stdout = OutputAccumulator::new(|line| { info!("{} (stdout): {}", command_name, line); @@ -182,7 +179,7 @@ pub fn run(mut command: Command, command_name: &str) -> Result { let exit = child.wait()?; if exit.success() { - return Ok(stdout); + Ok(stdout) } else { drop((stdout, stderr)); bail!("failed to execute `{}`: exited with {}", command_name, exit) diff --git a/src/command/build.rs b/src/command/build.rs index c6bad240..c55d55dd 100644 --- a/src/command/build.rs +++ b/src/command/build.rs @@ -220,7 +220,7 @@ impl Build { Ok(()) } - fn get_process_steps(mode: &BuildMode) -> Vec<(&'static str, BuildStep)> { + fn get_process_steps(mode: BuildMode) -> Vec<(&'static str, BuildStep)> { macro_rules! steps { ($($name:ident),+) => { { diff --git a/src/command/login.rs b/src/command/login.rs index 0ee09c3d..4c0aa942 100644 --- a/src/command/login.rs +++ b/src/command/login.rs @@ -5,11 +5,11 @@ use PBAR; pub fn login( registry: Option, - scope: Option, + scope: &Option, always_auth: bool, - auth_type: Option, + auth_type: &Option, ) -> result::Result<(), failure::Error> { - let registry = registry.unwrap_or(npm::DEFAULT_NPM_REGISTRY.to_string()); + let registry = registry.unwrap_or_else(|| npm::DEFAULT_NPM_REGISTRY.to_string()); info!("Logging in to npm..."); info!( @@ -20,6 +20,6 @@ pub fn login( npm::npm_login(®istry, &scope, always_auth, &auth_type)?; info!("Logged you in!"); - PBAR.message(&format!("👋 logged you in!")); + PBAR.message(&"👋 logged you in!".to_string()); Ok(()) } diff --git a/src/command/mod.rs b/src/command/mod.rs index 86a8235b..7259720e 100644 --- a/src/command/mod.rs +++ b/src/command/mod.rs @@ -90,7 +90,7 @@ pub enum Command { pub fn run_wasm_pack(command: Command) -> result::Result<(), Error> { // Run the correct command based off input and store the result of it so that we can clear // the progress bar then return it - let status = match command { + match command { Command::Build(build_opts) => { info!("Running build command..."); Build::try_from_opts(build_opts).and_then(|mut b| b.run()) @@ -120,14 +120,11 @@ pub fn run_wasm_pack(command: Command) -> result::Result<(), Error> { "Registry: {:?}, Scope: {:?}, Always Auth: {}, Auth Type: {:?}", ®istry, &scope, &always_auth, &auth_type ); - login(registry, scope, always_auth, auth_type) + login(registry, &scope, always_auth, &auth_type) } Command::Test(test_opts) => { info!("Running test command..."); Test::try_from_opts(test_opts).and_then(|t| t.run()) } - }; - - // Return the actual status of the program to the main function - status + } } diff --git a/src/command/publish/mod.rs b/src/command/publish/mod.rs index 568104b4..f71fb534 100644 --- a/src/command/publish/mod.rs +++ b/src/command/publish/mod.rs @@ -15,7 +15,7 @@ use PBAR; /// Creates a tarball from a 'pkg' directory /// and publishes it to the NPM registry pub fn publish( - _target: String, + _target: &str, path: Option, access: Option, ) -> result::Result<(), Error> { diff --git a/src/command/utils.rs b/src/command/utils.rs index f1711150..5a29a747 100644 --- a/src/command/utils.rs +++ b/src/command/utils.rs @@ -11,7 +11,7 @@ use PBAR; /// If an explicit path is given, then use it, otherwise assume the current /// directory is the crate path. pub fn set_crate_path(path: Option) -> Result { - Ok(path.unwrap_or(PathBuf::from("."))) + Ok(path.unwrap_or_else(|| PathBuf::from("."))) } /// Construct our `pkg` directory in the crate. diff --git a/src/installer.rs b/src/installer.rs index b2e42ad2..ce89667c 100644 --- a/src/installer.rs +++ b/src/installer.rs @@ -114,7 +114,7 @@ fn confirm_can_overwrite(dst: &Path) -> Result<(), failure::Error> { .read_line(&mut line) .with_context(|_| "failed to read stdin")?; - if line.starts_with("y") || line.starts_with("Y") { + if line.starts_with('y') || line.starts_with('Y') { return Ok(()); } diff --git a/src/lockfile.rs b/src/lockfile.rs index d174f6a0..3edd6cff 100644 --- a/src/lockfile.rs +++ b/src/lockfile.rs @@ -1,5 +1,7 @@ //! Reading Cargo.lock lock file. +#![allow(clippy::new_ret_no_self)] + use std::fs; use std::path::PathBuf; diff --git a/src/manifest/mod.rs b/src/manifest/mod.rs index 92f03cd4..0d8802a9 100644 --- a/src/manifest/mod.rs +++ b/src/manifest/mod.rs @@ -1,5 +1,7 @@ //! Reading and writing Cargo.toml and package.json manifests. +#![allow(clippy::new_ret_no_self, clippy::needless_pass_by_value)] + mod npm; use std::fs; @@ -20,7 +22,7 @@ use strsim::levenshtein; use toml; use PBAR; -const WASM_PACK_METADATA_KEY: &'static str = "package.metadata.wasm-pack"; +const WASM_PACK_METADATA_KEY: &str = "package.metadata.wasm-pack"; /// Store for metadata learned about a crate pub struct CrateData { @@ -145,7 +147,7 @@ impl CargoWasmPackProfile { D: serde::Deserializer<'de>, { let mut profile = >::deserialize(deserializer)?.unwrap_or_default(); - profile.update_with_defaults(Self::default_dev()); + profile.update_with_defaults(&Self::default_dev()); Ok(profile) } @@ -154,7 +156,7 @@ impl CargoWasmPackProfile { D: serde::Deserializer<'de>, { let mut profile = >::deserialize(deserializer)?.unwrap_or_default(); - profile.update_with_defaults(Self::default_release()); + profile.update_with_defaults(&Self::default_release()); Ok(profile) } @@ -163,11 +165,11 @@ impl CargoWasmPackProfile { D: serde::Deserializer<'de>, { let mut profile = >::deserialize(deserializer)?.unwrap_or_default(); - profile.update_with_defaults(Self::default_profiling()); + profile.update_with_defaults(&Self::default_profiling()); Ok(profile) } - fn update_with_defaults(&mut self, defaults: Self) { + fn update_with_defaults(&mut self, defaults: &Self) { macro_rules! d { ( $( $path:ident ).* ) => { self. $( $path ).* .get_or_insert(defaults. $( $path ).* .unwrap()); @@ -248,7 +250,7 @@ impl CrateData { for e in errors[..errors.len() - 1].iter().rev() { err = err.context(e.to_string()).into(); } - return err; + err } } diff --git a/src/npm.rs b/src/npm.rs index d99732fd..9ea2dcd9 100644 --- a/src/npm.rs +++ b/src/npm.rs @@ -6,7 +6,7 @@ use failure::{self, ResultExt}; use log::info; /// The default npm registry used when we aren't working with a custom registry. -pub const DEFAULT_NPM_REGISTRY: &'static str = "https://registry.npmjs.org/"; +pub const DEFAULT_NPM_REGISTRY: &str = "https://registry.npmjs.org/"; /// Run the `npm pack` command. pub fn npm_pack(path: &str) -> Result<(), failure::Error> { @@ -33,7 +33,7 @@ pub fn npm_publish(path: &str, access: Option) -> Result<(), failure::Er /// Run the `npm login` command. pub fn npm_login( - registry: &String, + registry: &str, scope: &Option, always_auth: bool, auth_type: &Option, diff --git a/src/progressbar.rs b/src/progressbar.rs index 24a89477..fa51cc65 100644 --- a/src/progressbar.rs +++ b/src/progressbar.rs @@ -75,7 +75,7 @@ impl ProgressOutput { } /// Add an error message. - pub fn error(&self, message: String) { + pub fn error(&self, message: &str) { let err = format!( "{} {}: {}", emoji::ERROR, @@ -135,3 +135,9 @@ impl Drop for ProgressOutput { self.done(); } } + +impl Default for ProgressOutput { + fn default() -> Self { + Self::new() + } +} diff --git a/src/readme.rs b/src/readme.rs index 83a4b10c..2eec0608 100644 --- a/src/readme.rs +++ b/src/readme.rs @@ -23,8 +23,8 @@ pub fn copy_from_crate(path: &Path, out_dir: &Path, step: &Step) -> Result<(), f PBAR.step(step, &msg); let crate_readme_path = path.join("README.md"); let new_readme_path = out_dir.join("README.md"); - if let Err(_) = fs::copy(&crate_readme_path, &new_readme_path) { + if fs::copy(&crate_readme_path, &new_readme_path).is_err() { PBAR.warn("origin crate has no README"); - }; + } Ok(()) }