This seems to be the crux: perhaps two different versions of crate stellar_xdr are being used?
error[E0308]: `if` and `else` have incompatible types
--> /Users/weller/.cargo/registry/src/github.com-1ecc6299db9ec823/soroban-cli-0.3.3/src/invoke.rs:295:13
|
287 | let spec_entries = if let Some(f) = &self.wasm {
| ____________________________-
288 | | // Get the contract from a file
289 | | let wasm = fs::read(f).map_err(|e| Error::CannotReadContractFile {
290 | | filepath: f.clone(),
... |
293 | | soroban_spec::read::from_wasm(&wasm).map_err(Error::CannotParseContractSpec)?
| | ----------------------------------------------------------------------------- expected because of this
294 | | } else {
295 | | get_remote_contract_spec_entries(&client, &contract_id).await?
| | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected enum `stellar_xdr::next::generated::ScSpecEntry`, found enum `soroban_env_host::stellar_xdr::ScSpecEntry`
296 | | };
| |_________- `if` and `else` have incompatible types
|
= note: expected struct `std::vec::Vec<stellar_xdr::next::generated::ScSpecEntry>`
found struct `std::vec::Vec<soroban_env_host::stellar_xdr::ScSpecEntry>`
= note: perhaps two different versions of crate `stellar_xdr` are being used?