fix: use workspace specifiers target field

This commit is contained in:
daimond113 2024-10-07 00:01:10 +02:00
parent 6c76a21b14
commit 1c2a232aba
No known key found for this signature in database
GPG key ID: 3A8ECE51328B513C
2 changed files with 11 additions and 4 deletions

View file

@ -5,6 +5,10 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
### Fixed
- Use workspace specifiers' `target` field when resolving by @daimond113
## [0.5.0-rc.2] - 2024-10-06
### Added
- Add support for multiple targets under the same package name in workspace members by @daimond113

View file

@ -36,22 +36,24 @@ impl PackageSource for WorkspacePackageSource {
&self,
specifier: &Self::Specifier,
project: &Project,
_package_target: TargetKind,
package_target: TargetKind,
) -> Result<ResolveResult<Self::Ref>, Self::ResolveError> {
let (path, manifest) = 'finder: {
let workspace_dir = project
.workspace_dir
.as_ref()
.unwrap_or(&project.package_dir);
let target = specifier.target.unwrap_or(package_target);
for (path, manifest) in project.workspace_members(workspace_dir)? {
if manifest.name == specifier.name {
if manifest.name == specifier.name && manifest.target.kind() == target {
break 'finder (path, manifest);
}
}
return Err(errors::ResolveError::NoWorkspaceMember(
specifier.name.to_string(),
target,
));
};
@ -134,6 +136,7 @@ impl PackageSource for WorkspacePackageSource {
/// Errors that can occur when using a workspace package source
pub mod errors {
use crate::manifest::target::TargetKind;
use thiserror::Error;
/// Errors that can occur when refreshing the workspace package source
@ -150,8 +153,8 @@ pub mod errors {
ReadWorkspaceMembers(#[from] crate::errors::WorkspaceMembersError),
/// No workspace member was found with the given name
#[error("no workspace member found with name {0}")]
NoWorkspaceMember(String),
#[error("no workspace member found with name {0} and target {1}")]
NoWorkspaceMember(String, TargetKind),
/// An error occurred getting all dependencies
#[error("failed to get all dependencies")]