@@ -11,9 +11,10 @@ use crate::{Action, Target, TargetKind};
1111fn convert ( metadata : CargoMetadata , current_dir : & Path ) -> Vec < Target > {
1212 let mut targets = Vec :: new ( ) ;
1313 for p in & metadata. packages {
14+ let package_name = p. name . as_str ( ) ;
1415 for t in & p. targets {
1516 if is_select_target ( t) {
16- targets. push ( build_target ( t, current_dir) ) ;
17+ targets. push ( build_target ( t, package_name , current_dir) ) ;
1718 }
1819 }
1920 }
@@ -24,8 +25,9 @@ fn is_select_target(t: &CargoTarget) -> bool {
2425 t. is_bin ( ) || t. is_example ( )
2526}
2627
27- fn build_target ( t : & CargoTarget , current_dir : & Path ) -> Target {
28+ fn build_target ( t : & CargoTarget , package_name : & str , current_dir : & Path ) -> Target {
2829 let name = t. name . to_owned ( ) ;
30+ let package = package_name. to_owned ( ) ;
2931 let kind = if t. is_bin ( ) {
3032 TargetKind :: Bin
3133 } else {
@@ -40,6 +42,7 @@ fn build_target(t: &CargoTarget, current_dir: &Path) -> Target {
4042
4143 Target {
4244 name,
45+ package,
4346 kind,
4447 path,
4548 required_features,
@@ -77,6 +80,8 @@ pub fn exec_cargo_run(
7780 let mut cmd = Command :: new ( "cargo" ) ;
7881 cmd. arg ( action) . arg ( kind) . arg ( name) ;
7982
83+ cmd. arg ( "--package" ) . arg ( & target. package ) ;
84+
8085 let require_features = !target. required_features . is_empty ( ) ;
8186
8287 if require_features {
0 commit comments