mirror of
https://github.com/pesde-pkg/pesde.git
synced 2025-05-04 10:33:47 +01:00
Adds quite a lot of Clippy lints which fit with my personal taste for how pesde's codebase should look like. Stylistic lints are mostly warns, and behavioural lints are mostly denied.
71 lines
2.3 KiB
Rust
71 lines
2.3 KiB
Rust
use crate::{
|
|
manifest::{Alias, DependencyType},
|
|
source::{pesde, specifiers::DependencySpecifiers, traits::PackageRef, PackageSources},
|
|
};
|
|
use serde::{Deserialize, Serialize};
|
|
use std::collections::BTreeMap;
|
|
|
|
/// All possible package references
|
|
#[derive(Debug, Serialize, Deserialize, Clone)]
|
|
#[serde(rename_all = "snake_case", tag = "ref_ty")]
|
|
pub enum PackageRefs {
|
|
/// A pesde package reference
|
|
Pesde(pesde::pkg_ref::PesdePackageRef),
|
|
/// A Wally package reference
|
|
#[cfg(feature = "wally-compat")]
|
|
Wally(crate::source::wally::pkg_ref::WallyPackageRef),
|
|
/// A Git package reference
|
|
Git(crate::source::git::pkg_ref::GitPackageRef),
|
|
/// A workspace package reference
|
|
Workspace(crate::source::workspace::pkg_ref::WorkspacePackageRef),
|
|
/// A path package reference
|
|
Path(crate::source::path::pkg_ref::PathPackageRef),
|
|
}
|
|
|
|
impl PackageRefs {
|
|
/// Returns whether this package reference should be treated as a Wally package
|
|
#[must_use]
|
|
pub fn is_wally_package(&self) -> bool {
|
|
match self {
|
|
#[cfg(feature = "wally-compat")]
|
|
PackageRefs::Wally(_) => true,
|
|
PackageRefs::Git(git) => !git.use_new_structure(),
|
|
_ => false,
|
|
}
|
|
}
|
|
}
|
|
|
|
impl PackageRef for PackageRefs {
|
|
fn dependencies(&self) -> &BTreeMap<Alias, (DependencySpecifiers, DependencyType)> {
|
|
match self {
|
|
PackageRefs::Pesde(pkg_ref) => pkg_ref.dependencies(),
|
|
#[cfg(feature = "wally-compat")]
|
|
PackageRefs::Wally(pkg_ref) => pkg_ref.dependencies(),
|
|
PackageRefs::Git(pkg_ref) => pkg_ref.dependencies(),
|
|
PackageRefs::Workspace(pkg_ref) => pkg_ref.dependencies(),
|
|
PackageRefs::Path(pkg_ref) => pkg_ref.dependencies(),
|
|
}
|
|
}
|
|
|
|
fn use_new_structure(&self) -> bool {
|
|
match self {
|
|
PackageRefs::Pesde(pkg_ref) => pkg_ref.use_new_structure(),
|
|
#[cfg(feature = "wally-compat")]
|
|
PackageRefs::Wally(pkg_ref) => pkg_ref.use_new_structure(),
|
|
PackageRefs::Git(pkg_ref) => pkg_ref.use_new_structure(),
|
|
PackageRefs::Workspace(pkg_ref) => pkg_ref.use_new_structure(),
|
|
PackageRefs::Path(pkg_ref) => pkg_ref.use_new_structure(),
|
|
}
|
|
}
|
|
|
|
fn source(&self) -> PackageSources {
|
|
match self {
|
|
PackageRefs::Pesde(pkg_ref) => pkg_ref.source(),
|
|
#[cfg(feature = "wally-compat")]
|
|
PackageRefs::Wally(pkg_ref) => pkg_ref.source(),
|
|
PackageRefs::Git(pkg_ref) => pkg_ref.source(),
|
|
PackageRefs::Workspace(pkg_ref) => pkg_ref.source(),
|
|
PackageRefs::Path(pkg_ref) => pkg_ref.source(),
|
|
}
|
|
}
|
|
}
|