Fix clippy warnings and add new workflow clippy (#306)

* Derive `Eq` for `PkgFmt`, `PkgFmtDecomposed` & `TarBasedFmt`
* Derive `Eq` for `PkgMeta`, `PkgOverride` & `BinMeta`
* Rm unnecessary reborrow in `install_from_source`
* Rm unnecessary `into()` in `args::parse`
* Fix `clippy` warning in `CratesToml::append_to_path`
* Fix clippy warning in `cratesio_url`
* Fix clippy warning in `detect_targets_linux`
* Add `clippy` and `rustfmt` to workflow `unit-test`

Because `clippy` would not check inactive code disabled by `cfg`, so we
have to also run `clippy` on multiple targets.

Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com>
This commit is contained in:
Jiahao XU 2022-08-21 00:40:50 +10:00 committed by GitHub
parent 4812456357
commit 1102284684
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 19 additions and 14 deletions

View file

@ -27,7 +27,7 @@ jobs:
- uses: actions/checkout@v3 - uses: actions/checkout@v3
- name: Configure toolchain - name: Configure toolchain
run: | run: |
rustup toolchain install --profile minimal --no-self-update nightly rustup toolchain install nightly --component rustfmt,clippy --no-self-update --profile minimal
rustup default nightly rustup default nightly
- name: Configure caching - name: Configure caching
@ -53,3 +53,9 @@ jobs:
- name: Test (Windows) - name: Test (Windows)
if: matrix.os == 'windows' if: matrix.os == 'windows'
run: cargo test --no-default-features --features native-tls run: cargo test --no-default-features --features native-tls
- name: fmt
run: cargo fmt --all --check
- name: clippy
run: cargo clippy --no-deps -- -D clippy::all

View file

@ -244,7 +244,7 @@ pub fn parse() -> Result<Args, BinstallError> {
}; };
if !option.is_empty() { if !option.is_empty() {
return Err(BinstallError::OverrideOptionUsedWithMultiInstall { option }.into()); return Err(BinstallError::OverrideOptionUsedWithMultiInstall { option });
} }
} }

View file

@ -19,5 +19,5 @@ pub fn cratesio_url() -> &'static Url {
static CRATESIO: Lazy<Url, fn() -> Url> = static CRATESIO: Lazy<Url, fn() -> Url> =
Lazy::new(|| Url::parse("https://github.com/rust-lang/crates.io-index").unwrap()); Lazy::new(|| Url::parse("https://github.com/rust-lang/crates.io-index").unwrap());
&*CRATESIO &CRATESIO
} }

View file

@ -99,7 +99,7 @@ impl CratesToml {
} }
file.rewind()?; file.rewind()?;
c1.write_to_file(&mut *file)?; c1.write_to_file(&mut file)?;
Ok(()) Ok(())
} }

View file

@ -30,7 +30,7 @@ pub struct Meta {
/// Metadata for binary installation use. /// Metadata for binary installation use.
/// ///
/// Exposed via `[package.metadata]` in `Cargo.toml` /// Exposed via `[package.metadata]` in `Cargo.toml`
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] #[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "kebab-case", default)] #[serde(rename_all = "kebab-case", default)]
pub struct PkgMeta { pub struct PkgMeta {
/// URL template for package downloads /// URL template for package downloads
@ -79,7 +79,7 @@ impl PkgMeta {
/// Target specific overrides for binary installation /// Target specific overrides for binary installation
/// ///
/// Exposed via `[package.metadata.TARGET]` in `Cargo.toml` /// Exposed via `[package.metadata.TARGET]` in `Cargo.toml`
#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)] #[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "kebab-case", default)] #[serde(rename_all = "kebab-case", default)]
pub struct PkgOverride { pub struct PkgOverride {
/// URL template override for package downloads /// URL template override for package downloads
@ -92,7 +92,7 @@ pub struct PkgOverride {
pub bin_dir: Option<String>, pub bin_dir: Option<String>,
} }
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] #[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "kebab-case")] #[serde(rename_all = "kebab-case")]
pub struct BinMeta { pub struct BinMeta {
/// Binary name /// Binary name

View file

@ -2,7 +2,7 @@ use serde::{Deserialize, Serialize};
use strum_macros::{Display, EnumString}; use strum_macros::{Display, EnumString};
/// Binary format enumeration /// Binary format enumeration
#[derive(Debug, Copy, Clone, PartialEq, Serialize, Deserialize, EnumString)] #[derive(Debug, Copy, Clone, Eq, PartialEq, Serialize, Deserialize, EnumString)]
#[serde(rename_all = "snake_case")] #[serde(rename_all = "snake_case")]
pub enum PkgFmt { pub enum PkgFmt {
/// Download format is TAR (uncompressed) /// Download format is TAR (uncompressed)
@ -55,14 +55,14 @@ impl PkgFmt {
} }
} }
#[derive(Debug, Copy, Clone, PartialEq)] #[derive(Debug, Copy, Clone, Eq, PartialEq)]
pub enum PkgFmtDecomposed { pub enum PkgFmtDecomposed {
Tar(TarBasedFmt), Tar(TarBasedFmt),
Bin, Bin,
Zip, Zip,
} }
#[derive(Debug, Display, Copy, Clone, PartialEq)] #[derive(Debug, Display, Copy, Clone, Eq, PartialEq)]
pub enum TarBasedFmt { pub enum TarBasedFmt {
/// Download format is TAR (uncompressed) /// Download format is TAR (uncompressed)
Tar, Tar,

View file

@ -161,7 +161,7 @@ async fn install_from_source(
.arg("--version") .arg("--version")
.arg(package.version) .arg(package.version)
.arg("--target") .arg("--target")
.arg(&*target); .arg(target);
if quiet { if quiet {
cmd.arg("--quiet"); cmd.arg("--quiet");

View file

@ -136,12 +136,11 @@ mod linux {
pub(super) async fn detect_targets_linux() -> Vec<String> { pub(super) async fn detect_targets_linux() -> Vec<String> {
let (abi, libc) = parse_abi_and_libc(); let (abi, libc) = parse_abi_and_libc();
match libc { if let Libc::Glibc = libc {
// Glibc can only be dynamically linked. // Glibc can only be dynamically linked.
// If we can run this binary, then it means that the target // If we can run this binary, then it means that the target
// supports both glibc and musl. // supports both glibc and musl.
Libc::Glibc => return create_targets_str(&["gnu", "musl"], abi), return create_targets_str(&["gnu", "musl"], abi);
_ => (),
} }
if let Ok(Output { if let Ok(Output {