Skip to content

Commit c38673c

Browse files
committed
refactor(resolve): Make it easier to customize around the resolve call
1 parent ea27ec1 commit c38673c

File tree

1 file changed

+39
-17
lines changed

1 file changed

+39
-17
lines changed

src/cargo/ops/resolve.rs

Lines changed: 39 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -134,15 +134,26 @@ pub fn resolve_ws_with_opts<'gctx>(
134134
force_all_targets: ForceAllTargets,
135135
) -> CargoResult<WorkspaceResolve<'gctx>> {
136136
let mut registry = PackageRegistry::new(ws.gctx())?;
137-
let mut add_patches = true;
138-
let resolve = if ws.ignore_lock() {
139-
None
137+
let (resolve, resolved_with_overrides) = if ws.ignore_lock() {
138+
let add_patches = true;
139+
let resolve = None;
140+
let resolved_with_overrides = resolve_with_previous(
141+
&mut registry,
142+
ws,
143+
cli_features,
144+
has_dev_units,
145+
resolve.as_ref(),
146+
None,
147+
specs,
148+
add_patches,
149+
)?;
150+
(resolve, resolved_with_overrides)
140151
} else if ws.require_optional_deps() {
141152
// First, resolve the root_package's *listed* dependencies, as well as
142153
// downloading and updating all remotes and such.
143154
let resolve = resolve_with_registry(ws, &mut registry)?;
144155
// No need to add patches again, `resolve_with_registry` has done it.
145-
add_patches = false;
156+
let add_patches = false;
146157

147158
// Second, resolve with precisely what we're doing. Filter out
148159
// transitive dependencies if necessary, specify features, handle
@@ -170,22 +181,33 @@ pub fn resolve_ws_with_opts<'gctx>(
170181
}
171182
}
172183

173-
Some(resolve)
184+
let resolved_with_overrides = resolve_with_previous(
185+
&mut registry,
186+
ws,
187+
cli_features,
188+
has_dev_units,
189+
Some(&resolve),
190+
None,
191+
specs,
192+
add_patches,
193+
)?;
194+
(Some(resolve), resolved_with_overrides)
174195
} else {
175-
ops::load_pkg_lockfile(ws)?
196+
let add_patches = true;
197+
let resolve = ops::load_pkg_lockfile(ws)?;
198+
let resolved_with_overrides = resolve_with_previous(
199+
&mut registry,
200+
ws,
201+
cli_features,
202+
has_dev_units,
203+
resolve.as_ref(),
204+
None,
205+
specs,
206+
add_patches,
207+
)?;
208+
(resolve, resolved_with_overrides)
176209
};
177210

178-
let resolved_with_overrides = resolve_with_previous(
179-
&mut registry,
180-
ws,
181-
cli_features,
182-
has_dev_units,
183-
resolve.as_ref(),
184-
None,
185-
specs,
186-
add_patches,
187-
)?;
188-
189211
let pkg_set = get_resolved_packages(&resolved_with_overrides, registry)?;
190212

191213
let member_ids = ws

0 commit comments

Comments
 (0)