Skip to content

Commit 33431d7

Browse files
committed
Proper building virtual manifest with -p flag
1 parent 15791c7 commit 33431d7

File tree

9 files changed

+219
-272
lines changed

9 files changed

+219
-272
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,5 @@ src/registry/Cargo.lock
1010
rustc
1111
__pycache__
1212
.idea/
13-
*.iml
13+
*.iml
14+
*.swp

src/bin/bench.rs

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -102,13 +102,10 @@ pub fn execute(options: Options, config: &Config) -> CliResult {
102102
let root = find_root_manifest_for_wd(options.flag_manifest_path, config.cwd())?;
103103
let ws = Workspace::new(&root, config)?;
104104

105-
let spec = if options.flag_all || ws.is_virtual() {
106-
Packages::All
107-
} else {
108-
Packages::from_flags(options.flag_all,
109-
&options.flag_exclude,
110-
&options.flag_package)?
111-
};
105+
let spec = Packages::from_flags(ws.is_virtual(),
106+
options.flag_all,
107+
&options.flag_exclude,
108+
&options.flag_package)?;
112109

113110
let ops = ops::TestOptions {
114111
no_run: options.flag_no_run,

src/bin/build.rs

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -94,13 +94,10 @@ pub fn execute(options: Options, config: &Config) -> CliResult {
9494
let root = find_root_manifest_for_wd(options.flag_manifest_path, config.cwd())?;
9595
let ws = Workspace::new(&root, config)?;
9696

97-
let spec = if options.flag_all || ws.is_virtual() {
98-
Packages::All
99-
} else {
100-
Packages::from_flags(options.flag_all,
101-
&options.flag_exclude,
102-
&options.flag_package)?
103-
};
97+
let spec = Packages::from_flags(ws.is_virtual(),
98+
options.flag_all,
99+
&options.flag_exclude,
100+
&options.flag_package)?;
104101

105102
let opts = CompileOptions {
106103
config: config,

src/bin/check.rs

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -91,13 +91,10 @@ pub fn execute(options: Options, config: &Config) -> CliResult {
9191
let root = find_root_manifest_for_wd(options.flag_manifest_path, config.cwd())?;
9292
let ws = Workspace::new(&root, config)?;
9393

94-
let spec = if options.flag_all || ws.is_virtual() {
95-
Packages::All
96-
} else {
97-
Packages::from_flags(options.flag_all,
98-
&options.flag_exclude,
99-
&options.flag_package)?
100-
};
94+
let spec = Packages::from_flags(ws.is_virtual(),
95+
options.flag_all,
96+
&options.flag_exclude,
97+
&options.flag_package)?;
10198

10299
let opts = CompileOptions {
103100
config: config,

src/bin/doc.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ pub fn execute(options: Options, config: &Config) -> CliResult {
8383
let root = find_root_manifest_for_wd(options.flag_manifest_path, config.cwd())?;
8484
let ws = Workspace::new(&root, config)?;
8585

86-
let spec = if options.flag_all || ws.is_virtual() {
86+
let spec = if options.flag_all || (ws.is_virtual() && options.flag_package.is_empty()) {
8787
Packages::All
8888
} else {
8989
Packages::Packages(&options.flag_package)

src/bin/test.rs

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -138,13 +138,10 @@ pub fn execute(options: Options, config: &Config) -> CliResult {
138138
&options.flag_bench, options.flag_benches);
139139
}
140140

141-
let spec = if options.flag_all || ws.is_virtual() {
142-
Packages::All
143-
} else {
144-
Packages::from_flags(options.flag_all,
145-
&options.flag_exclude,
146-
&options.flag_package)?
147-
};
141+
let spec = Packages::from_flags(ws.is_virtual(),
142+
options.flag_all,
143+
&options.flag_exclude,
144+
&options.flag_package)?;
148145

149146
let ops = ops::TestOptions {
150147
no_run: options.flag_no_run,

src/cargo/ops/cargo_compile.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,9 +110,11 @@ pub enum Packages<'a> {
110110
}
111111

112112
impl<'a> Packages<'a> {
113-
pub fn from_flags(all: bool, exclude: &'a Vec<String>, package: &'a Vec<String>)
113+
pub fn from_flags(virtual_ws: bool, all: bool, exclude: &'a Vec<String>, package: &'a Vec<String>)
114114
-> CargoResult<Self>
115115
{
116+
let all = all || (virtual_ws && package.is_empty());
117+
116118
let packages = match (all, &exclude) {
117119
(true, exclude) if exclude.is_empty() => Packages::All,
118120
(true, exclude) => Packages::OptOut(exclude),

0 commit comments

Comments
 (0)