Use default solana config for anchor idl fetch

Signed-off-by: Nikhil B N <nikhilbn365@gmail.com>
This commit is contained in:
Nikhil B N 2022-02-23 20:15:08 +05:30
parent b643ca8eb8
commit 4b39ef2996
5 changed files with 23 additions and 17 deletions

View File

@ -22,6 +22,7 @@ incremented for features.
* lang: Add check that declared id == program id ([#1451](https://github.com/project-serum/anchor/pull/1451)).
* ts: Added float types support ([#1425](https://github.com/project-serum/anchor/pull/1425)).
* cli: Add `--skip-lint` option to disable check linting introduced in ([#1452](https://github.com/project-serum/anchor/pull/1452)) for rapid prototyping ([#1482](https://github.com/project-serum/anchor/pull/1482)).
* cli: Add support for `anchor idl fetch` to work outside anchor workspace ([#1509](https://github.com/project-serum/anchor/pull/1509)).
### Fixes

13
Cargo.lock generated
View File

@ -165,6 +165,7 @@ dependencies = [
"serde_json",
"serum-common",
"shellexpand",
"solana-cli-config",
"solana-client",
"solana-program",
"solana-sdk",
@ -1089,12 +1090,6 @@ dependencies = [
"syn 0.15.44",
]
[[package]]
name = "dtoa"
version = "0.4.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "56899898ce76aaf4a0f24d914c97ea6ed976d42fec6ad33fcbb0a1103e07b2b0"
[[package]]
name = "ed25519"
version = "1.2.0"
@ -2844,12 +2839,12 @@ dependencies = [
[[package]]
name = "serde_yaml"
version = "0.8.21"
version = "0.8.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d8c608a35705a5d3cdc9fbe403147647ff34b921f8e833e49306df898f9b20af"
checksum = "a4a521f2940385c165a24ee286aa8599633d162077a54bdcae2a6fd5a7bfa7a0"
dependencies = [
"dtoa",
"indexmap",
"ryu",
"serde",
"yaml-rust",
]

View File

@ -27,6 +27,7 @@ serde = { version = "1.0.122", features = ["derive"] }
solana-sdk = "1.8.5"
solana-program = "1.8.5"
solana-client = "1.8.5"
solana-cli-config = "1.8.5"
serum-common = { git = "https://github.com/project-serum/serum-dex", features = ["client"] }
dirs = "3.0"
heck = "0.3.1"

View File

@ -4,11 +4,13 @@ use anyhow::{anyhow, Error, Result};
use clap::{ArgEnum, Parser};
use heck::SnakeCase;
use serde::{Deserialize, Serialize};
use solana_cli_config::{Config as SolanaConfig, CONFIG_FILE};
use solana_sdk::pubkey::Pubkey;
use solana_sdk::signature::{Keypair, Signer};
use std::collections::BTreeMap;
use std::convert::TryFrom;
use std::fs::{self, File};
use std::io;
use std::io::prelude::*;
use std::ops::Deref;
use std::path::Path;
@ -445,6 +447,16 @@ impl FromStr for Config {
}
}
pub fn get_solana_cfg_url() -> Result<String, io::Error> {
let config_file = CONFIG_FILE.as_ref().ok_or_else(|| {
io::Error::new(
io::ErrorKind::NotFound,
"Default Solana config was not found",
)
})?;
SolanaConfig::load(config_file).map(|config| config.json_rpc_url)
}
fn ser_programs(
programs: &BTreeMap<Cluster, BTreeMap<String, ProgramDeployment>>,
) -> BTreeMap<String, BTreeMap<String, serde_json::Value>> {

View File

@ -1401,16 +1401,13 @@ fn fetch_idl(cfg_override: &ConfigOverride, idl_addr: Pubkey) -> Result<Idl> {
Some(cfg) => cluster_url(&cfg),
None => {
// If the command is not run inside a workspace,
// provider.cluster option has to be provided
// cluster_url will be used from default solana config
// provider.cluster option can be used to override this
if let Some(cluster) = cfg_override.cluster.clone() {
let is_localnet = cluster == Cluster::Localnet;
match is_localnet {
// If Cluster is Localnet, default url will be used
true => "http://localhost:8899".to_string(),
false => cluster.url().to_string(),
}
cluster.url().to_string()
} else {
return Err(anyhow!("provider.cluster option required"));
config::get_solana_cfg_url()?
}
}
};