Skip to content

Commit

Permalink
just fetch the target once
Browse files Browse the repository at this point in the history
  • Loading branch information
davepacheco committed Aug 26, 2024
1 parent 0674cc5 commit 201f303
Showing 1 changed file with 37 additions and 35 deletions.
72 changes: 37 additions & 35 deletions dev-tools/omdb/src/bin/omdb/nexus.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1726,6 +1726,40 @@ async fn cmd_nexus_blueprints_target_set(
args: &BlueprintTargetSetArgs,
_destruction_token: DestructiveOperationToken,
) -> Result<(), anyhow::Error> {
let found_enabled = if args.diff
|| matches!(args.enabled, BlueprintTargetSetEnabled::Inherit)
{
let current_target = client
.blueprint_target_view()
.await
.context("failed to fetch current target blueprint")?
.into_inner();

if args.diff {
let blueprint1 = client
.blueprint_view(&current_target.target_id)
.await
.context("failed to fetch target blueprint")?
.into_inner();
let blueprint2 =
client.blueprint_view(&args.blueprint_id).await.with_context(
|| format!("fetching blueprint {}", args.blueprint_id),
)?;
let diff = blueprint2.diff_since_blueprint(&blueprint1);
println!("{}", diff.display());
println!(
"\nDo you want to make {} the target blueprint?",
args.blueprint_id
);
let mut prompt = ConfirmationPrompt::new();
prompt.read_and_validate("y/N", "y")?;
}

Some(current_target.enabled)
} else {
None
};

let enabled = match args.enabled {
BlueprintTargetSetEnabled::Enabled => true,
BlueprintTargetSetEnabled::Disabled => false,
Expand All @@ -1738,43 +1772,11 @@ async fn cmd_nexus_blueprints_target_set(
// operator. (In the case of the current target blueprint being changed
// entirely, that will result in a failure to set the current target
// below, because its parent will no longer be the current target.)
BlueprintTargetSetEnabled::Inherit => {
client
.blueprint_target_view()
.await
.context("failed to fetch current target blueprint")?
.into_inner()
.enabled
}
//
// unwrap(): this is always `Some` due to the branch above.
BlueprintTargetSetEnabled::Inherit => found_enabled.unwrap(),
};

if args.diff {
let blueprint1 = client
.blueprint_view(
&client
.blueprint_target_view()
.await
.context("failed to fetch current target blueprint")?
.into_inner()
.target_id,
)
.await
.context("failed to fetch target blueprint")?
.into_inner();
let blueprint2 =
client.blueprint_view(&args.blueprint_id).await.with_context(
|| format!("fetching blueprint {}", args.blueprint_id),
)?;
let diff = blueprint2.diff_since_blueprint(&blueprint1);
println!("{}", diff.display());
println!(
"\nDo you want to make {} the target blueprint?",
args.blueprint_id
);
let mut prompt = ConfirmationPrompt::new();
prompt.read_and_validate("y/N", "y")?;
}

client
.blueprint_target_set(&nexus_client::types::BlueprintTargetSet {
target_id: args.blueprint_id,
Expand Down

0 comments on commit 201f303

Please sign in to comment.