diff --git a/crates/aiken-project/src/lib.rs b/crates/aiken-project/src/lib.rs index 25943a87..0e1901bd 100644 --- a/crates/aiken-project/src/lib.rs +++ b/crates/aiken-project/src/lib.rs @@ -565,6 +565,7 @@ where pub fn construct_parameter_incrementally( &self, title: Option<&String>, + blueprint_input: &Option, ask: F, ) -> Result where @@ -574,7 +575,12 @@ where ) -> Result, { // Read blueprint - let blueprint = File::open(self.blueprint_path()) + let project_blueprint_path = self.blueprint_path(); + let blueprint_path = blueprint_input + .as_ref() + .map(|p| p.as_path()) + .unwrap_or_else(|| &project_blueprint_path); + let blueprint = File::open(blueprint_path) .map_err(|_| blueprint::error::Error::InvalidOrMissingFile)?; let blueprint: Blueprint = serde_json::from_reader(BufReader::new(blueprint))?; diff --git a/crates/aiken/src/cmd/blueprint/apply.rs b/crates/aiken/src/cmd/blueprint/apply.rs index 247eb857..40029408 100644 --- a/crates/aiken/src/cmd/blueprint/apply.rs +++ b/crates/aiken/src/cmd/blueprint/apply.rs @@ -26,6 +26,10 @@ pub struct Args { /// `plutus.json`), or use the `cbor.serialise` function from the Aiken standard library. parameter: Option, + /// Path to a blueprint file to be used as input. + #[clap(short = 'b', long, value_parser)] + blueprint_input: Option, + /// Output file. Optional, print on stdout when omitted. #[clap(short, long)] out: Option, @@ -42,6 +46,7 @@ pub struct Args { pub fn exec( Args { parameter, + blueprint_input, out, module, validator, @@ -103,7 +108,7 @@ pub fn exec( }) } - None => p.construct_parameter_incrementally(title, ask_schema)?, + None => p.construct_parameter_incrementally(title, &blueprint_input, ask_schema)?, }; eprintln!(