From 44063cbce1924d806e1f8cda3962ffe99df35d9f Mon Sep 17 00:00:00 2001 From: Adam Spofford Date: Mon, 3 Oct 2022 16:47:27 -0700 Subject: [PATCH] Add useful error message to `dfx canister info` --- src/dfx/src/commands/canister/info.rs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/dfx/src/commands/canister/info.rs b/src/dfx/src/commands/canister/info.rs index 784654cead..aff25339a6 100644 --- a/src/dfx/src/commands/canister/info.rs +++ b/src/dfx/src/commands/canister/info.rs @@ -29,10 +29,15 @@ pub async fn exec(env: &dyn Environment, opts: InfoOpts) -> DfxResult { .or_else(|_| canister_id_store.get(callee_canister))?; fetch_root_key_if_needed(env).await?; - let controller_blob = agent + let controller_blob = match agent .read_state_canister_info(canister_id, "controllers", false) .await - .with_context(|| format!("Failed to read controllers of canister {}.", canister_id))?; + { + Err(AgentError::LookupPathUnknown(_) | AgentError::LookupPathAbsent(_)) => { + bail!("Canister {canister_id} does not exist.") + } + r => r.with_context(|| format!("Failed to read controllers of canister {canister_id}."))?, + }; let cbor: Value = serde_cbor::from_slice(&controller_blob) .map_err(|_| anyhow!("Invalid cbor data in controllers canister info."))?; let controllers = if let Value::Array(vec) = cbor {