Skip to content

Commit 42c822f

Browse files
committed
add is_cwd_only
1 parent 86cf493 commit 42c822f

File tree

2 files changed

+34
-23
lines changed

2 files changed

+34
-23
lines changed

crates/vite_task/src/cli/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ impl ResolvedRunCommand {
154154
) -> Result<QueryPlanRequest, CLITaskQueryError> {
155155
let task_specifier = self.task_specifier.ok_or(CLITaskQueryError::MissingTaskSpecifier)?;
156156

157-
let package_query =
157+
let (package_query, _is_cwd_only) =
158158
self.flags.package_query.into_package_query(task_specifier.package_name, cwd)?;
159159

160160
let include_explicit_deps = !self.flags.ignore_depends_on;

crates/vite_workspace/src/package_filter.rs

Lines changed: 33 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -250,6 +250,10 @@ impl PackageQueryArgs {
250250
/// `package_name` is the optional package name from a `package#task` specifier.
251251
/// `cwd` is the working directory (used as fallback when no package name or filter is given).
252252
///
253+
/// Returns `(query, is_cwd_only)` where `is_cwd_only` is `true` when the query
254+
/// falls through to the implicit-cwd path (no `-r`, `-t`, `-w`, `--filter`,
255+
/// or explicit package name).
256+
///
253257
/// # Errors
254258
///
255259
/// Returns [`PackageQueryError`] if conflicting flags are set, a package name
@@ -258,7 +262,7 @@ impl PackageQueryArgs {
258262
self,
259263
package_name: Option<Str>,
260264
cwd: &Arc<AbsolutePath>,
261-
) -> Result<PackageQuery, PackageQueryError> {
265+
) -> Result<(PackageQuery, bool), PackageQueryError> {
262266
let Self { recursive, transitive, workspace_root, filter } = self;
263267

264268
if recursive {
@@ -272,7 +276,7 @@ impl PackageQueryArgs {
272276
return Err(PackageQueryError::PackageNameWithRecursive { package_name });
273277
}
274278
// -w is redundant with -r (all packages already includes root).
275-
return Ok(PackageQuery::all());
279+
return Ok((PackageQuery::all(), false));
276280
}
277281

278282
if !filter.is_empty() {
@@ -301,7 +305,7 @@ impl PackageQueryArgs {
301305
source: None,
302306
});
303307
}
304-
return Ok(PackageQuery::filters(parsed));
308+
return Ok((PackageQuery::filters(parsed), false));
305309
}
306310

307311
// No --filter, no --recursive.
@@ -319,15 +323,19 @@ impl PackageQueryArgs {
319323
} else {
320324
None
321325
};
322-
return Ok(PackageQuery::filters(Vec1::new(PackageFilter {
323-
exclude: false,
324-
selector: PackageSelector::WorkspaceRoot,
325-
traversal,
326-
source: None,
327-
})));
326+
return Ok((
327+
PackageQuery::filters(Vec1::new(PackageFilter {
328+
exclude: false,
329+
selector: PackageSelector::WorkspaceRoot,
330+
traversal,
331+
source: None,
332+
})),
333+
false,
334+
));
328335
}
329336

330337
// No --filter, no --recursive, no -w: implicit cwd or package-name specifier.
338+
let is_cwd_only = !transitive && package_name.is_none();
331339
let selector = package_name.map_or_else(
332340
|| PackageSelector::ContainingPackage(Arc::clone(cwd)),
333341
|name| PackageSelector::Name(PackageNamePattern::Exact(name)),
@@ -340,12 +348,15 @@ impl PackageQueryArgs {
340348
} else {
341349
None
342350
};
343-
Ok(PackageQuery::filters(Vec1::new(PackageFilter {
344-
exclude: false,
345-
selector,
346-
traversal,
347-
source: None,
348-
})))
351+
Ok((
352+
PackageQuery::filters(Vec1::new(PackageFilter {
353+
exclude: false,
354+
selector,
355+
traversal,
356+
source: None,
357+
})),
358+
is_cwd_only,
359+
))
349360
}
350361
}
351362

@@ -1040,7 +1051,7 @@ mod tests {
10401051
workspace_root: true,
10411052
filter: Vec::new(),
10421053
};
1043-
let query = args.into_package_query(None, &cwd).unwrap();
1054+
let (query, _) = args.into_package_query(None, &cwd).unwrap();
10441055
match &query.0 {
10451056
crate::package_graph::PackageQueryKind::Filters(filters) => {
10461057
assert_eq!(filters.len(), 1);
@@ -1066,7 +1077,7 @@ mod tests {
10661077
workspace_root: true,
10671078
filter: Vec::new(),
10681079
};
1069-
let query = args.into_package_query(None, &cwd).unwrap();
1080+
let (query, _) = args.into_package_query(None, &cwd).unwrap();
10701081
assert!(
10711082
matches!(&query.0, crate::package_graph::PackageQueryKind::All),
10721083
"expected All, got {:?}",
@@ -1084,7 +1095,7 @@ mod tests {
10841095
workspace_root: true,
10851096
filter: Vec::new(),
10861097
};
1087-
let query = args.into_package_query(None, &cwd).unwrap();
1098+
let (query, _) = args.into_package_query(None, &cwd).unwrap();
10881099
match &query.0 {
10891100
crate::package_graph::PackageQueryKind::Filters(filters) => {
10901101
assert_eq!(filters.len(), 1);
@@ -1109,7 +1120,7 @@ mod tests {
11091120
workspace_root: true,
11101121
filter: vec![Str::from("foo")],
11111122
};
1112-
let query = args.into_package_query(None, &cwd).unwrap();
1123+
let (query, _) = args.into_package_query(None, &cwd).unwrap();
11131124
match &query.0 {
11141125
crate::package_graph::PackageQueryKind::Filters(filters) => {
11151126
assert_eq!(filters.len(), 2);
@@ -1157,7 +1168,7 @@ mod tests {
11571168
workspace_root: false,
11581169
filter: vec![Str::from("a b")],
11591170
};
1160-
let query = args.into_package_query(None, &cwd).unwrap();
1171+
let (query, _) = args.into_package_query(None, &cwd).unwrap();
11611172
match &query.0 {
11621173
crate::package_graph::PackageQueryKind::Filters(filters) => {
11631174
assert_eq!(filters.len(), 2);
@@ -1177,7 +1188,7 @@ mod tests {
11771188
workspace_root: true,
11781189
filter: vec![Str::from("foo")],
11791190
};
1180-
let query = args.into_package_query(None, &cwd).unwrap();
1191+
let (query, _) = args.into_package_query(None, &cwd).unwrap();
11811192
match &query.0 {
11821193
crate::package_graph::PackageQueryKind::Filters(filters) => {
11831194
assert_eq!(filters.len(), 2);
@@ -1197,7 +1208,7 @@ mod tests {
11971208
workspace_root: false,
11981209
filter: Vec::new(),
11991210
};
1200-
let query = args.into_package_query(None, &cwd).unwrap();
1211+
let (query, _) = args.into_package_query(None, &cwd).unwrap();
12011212
match &query.0 {
12021213
crate::package_graph::PackageQueryKind::Filters(filters) => {
12031214
assert_eq!(filters.len(), 1);

0 commit comments

Comments
 (0)