diff --git a/crates/aiken-project/src/blueprint/mod.rs b/crates/aiken-project/src/blueprint/mod.rs index 6347ebb9..298e4741 100644 --- a/crates/aiken-project/src/blueprint/mod.rs +++ b/crates/aiken-project/src/blueprint/mod.rs @@ -33,6 +33,7 @@ impl Blueprint { let (_, redeemer, datum) = (args.next(), args.next().unwrap(), args.next()); validators.push(Validator { + title: validator.name.clone(), description: None, purpose, datum: datum diff --git a/crates/aiken-project/src/blueprint/validator.rs b/crates/aiken-project/src/blueprint/validator.rs index f3dc0b30..7166df4b 100644 --- a/crates/aiken-project/src/blueprint/validator.rs +++ b/crates/aiken-project/src/blueprint/validator.rs @@ -10,6 +10,7 @@ use uplc::ast::{NamedDeBruijn, Program}; #[derive(Debug, PartialEq, Clone)] pub struct Validator { + pub title: String, pub purpose: Purpose, pub description: Option, pub datum: Option, @@ -22,6 +23,7 @@ impl Serialize for Validator { let cbor = self.program.to_cbor().unwrap(); let source_code = hex::encode(&cbor); let mut s = serializer.serialize_struct("Validator", 5)?; + s.serialize_field("title", &self.title)?; s.serialize_field("purpose", &self.purpose)?; let hash = cardano::PlutusV2Script(cbor.into()).compute_hash(); s.serialize_field("hash", &hash)?; @@ -92,6 +94,7 @@ mod test { .try_into() .unwrap(); let validator = Validator { + title: "foo".to_string(), description: Some("Lorem ipsum".to_string()), purpose: Purpose::Spend, datum: None, @@ -104,6 +107,7 @@ mod test { assert_eq!( serde_json::to_value(&validator).unwrap(), json!({ + "title": "foo", "description": "Lorem ipsum", "purpose": "spend", "redeemer": { diff --git a/crates/aiken-project/src/lib.rs b/crates/aiken-project/src/lib.rs index 01c85c04..5bdd3411 100644 --- a/crates/aiken-project/src/lib.rs +++ b/crates/aiken-project/src/lib.rs @@ -190,8 +190,9 @@ where .handle_event(Event::DumpingUPLC { path: dir.clone() }); fs::create_dir_all(&dir)?; for validator in &blueprint.validators { - // TODO: Also include validator name. - let path = dir.clone().join(format!("{}.uplc", validator.purpose)); + let path = dir + .clone() + .join(format!("{}::{}>.uplc", validator.title, validator.purpose)); fs::write(&path, validator.program.to_pretty()) .map_err(|error| Error::FileIo { error, path })?; }