better naming in Policy.parse()

This commit is contained in:
kevin zhao
2025-11-13 13:47:26 -05:00
parent 175e3530bc
commit 820e26f9d2
2 changed files with 18 additions and 6 deletions

View File

@@ -44,8 +44,11 @@ fn cmd_check(policy_path: PathBuf, args: Vec<String>) -> Result<()> {
}
fn load_policy(policy_path: &Path) -> Result<codex_execpolicy2::Policy> {
let content = fs::read_to_string(policy_path)
let policy_file_contents = fs::read_to_string(policy_path)
.with_context(|| format!("failed to read policy at {}", policy_path.display()))?;
let policy_source = policy_path.to_string_lossy();
Ok(PolicyParser::parse(policy_source.as_ref(), &content)?)
let policy_identifier = policy_path.to_string_lossy();
Ok(PolicyParser::parse(
policy_identifier.as_ref(),
&policy_file_contents,
)?)
}

View File

@@ -28,11 +28,20 @@ use crate::rule::validate_not_match_examples;
pub struct PolicyParser;
impl PolicyParser {
pub fn parse(policy_source: &str, unparsed_policy: &str) -> Result<crate::policy::Policy> {
/// Parses a policy, tagging parser errors with `policy_identifier` so failures include the
/// identifier alongside line numbers.
pub fn parse(
policy_identifier: &str,
policy_file_contents: &str,
) -> Result<crate::policy::Policy> {
let mut dialect = Dialect::Extended.clone();
dialect.enable_f_strings = true;
let ast = AstModule::parse(policy_source, unparsed_policy.to_string(), &dialect)
.map_err(|e| Error::Starlark(e.to_string()))?;
let ast = AstModule::parse(
policy_identifier,
policy_file_contents.to_string(),
&dialect,
)
.map_err(|e| Error::Starlark(e.to_string()))?;
let globals = GlobalsBuilder::standard().with(policy_builtins).build();
let module = Module::new();