Skip to content

Commit

Permalink
lang: Remove a potential panic while getting the IDL in `declare_prog…
Browse files Browse the repository at this point in the history
…ram!`
  • Loading branch information
acheroncrypto committed Dec 28, 2024
1 parent c237d17 commit f6d3fc9
Showing 1 changed file with 6 additions and 3 deletions.
9 changes: 6 additions & 3 deletions lang/attribute/program/src/declare_program/mod.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
mod common;
mod mods;

use std::{env, fs, path::PathBuf};

use anchor_lang_idl::{convert::convert_idl, types::Idl};
use anyhow::anyhow;
use quote::{quote, ToTokens};
Expand Down Expand Up @@ -34,16 +36,17 @@ impl ToTokens for DeclareProgram {
}

fn get_idl(name: &syn::Ident) -> anyhow::Result<Idl> {
let manifest_dir = std::env::var("CARGO_MANIFEST_DIR").expect("Failed to get manifest dir");
std::path::Path::new(&manifest_dir)
env::var("CARGO_MANIFEST_DIR")
.map(PathBuf::from)
.map_err(|e| anyhow!("Failed to get environment variable `CARGO_MANIFEST_DIR`: {e}"))?
.ancestors()
.find_map(|ancestor| {
let idl_dir = ancestor.join("idls");
idl_dir.exists().then_some(idl_dir)
})
.ok_or_else(|| anyhow!("`idls` directory not found"))
.map(|idl_dir| idl_dir.join(name.to_string()).with_extension("json"))
.map(std::fs::read)?
.map(fs::read)?
.map_err(|e| anyhow!("Failed to read IDL `{name}`: {e}"))
.map(|buf| convert_idl(&buf))?
}
Expand Down

0 comments on commit f6d3fc9

Please sign in to comment.