diff --git a/crates/cli/src/cmd/build.rs b/crates/cli/src/cmd/build.rs index b16a0140..31c6fb7f 100644 --- a/crates/cli/src/cmd/build.rs +++ b/crates/cli/src/cmd/build.rs @@ -6,8 +6,12 @@ pub struct Args { /// Path to project #[clap(short, long)] directory: Option, + + /// Also dump textual uplc + #[clap(short, long)] + uplc: bool, } -pub fn exec(Args { directory }: Args) -> miette::Result<()> { - crate::with_project(directory, |p| p.build()) +pub fn exec(Args { directory, uplc }: Args) -> miette::Result<()> { + crate::with_project(directory, |p| p.build(uplc)) } diff --git a/crates/project/src/lib.rs b/crates/project/src/lib.rs index 2086c37c..1f4c4435 100644 --- a/crates/project/src/lib.rs +++ b/crates/project/src/lib.rs @@ -25,6 +25,7 @@ use pallas::{ use pallas_traverse::ComputeHash; use script::Script; use serde_json::json; +use uplc::ast::{DeBruijn, Program}; use crate::{ config::Config, @@ -76,15 +77,15 @@ impl Project { } } - pub fn build(&mut self) -> Result<(), Error> { - self.compile(true) + pub fn build(&mut self, uplc: bool) -> Result<(), Error> { + self.compile(true, uplc) } pub fn check(&mut self) -> Result<(), Error> { - self.compile(false) + self.compile(false, false) } - pub fn compile(&mut self, uplc_gen: bool) -> Result<(), Error> { + pub fn compile(&mut self, uplc_gen: bool, uplc_dump: bool) -> Result<(), Error> { self.read_source_files()?; let parsed_modules = self.parse_sources()?; @@ -98,7 +99,7 @@ impl Project { if uplc_gen { let programs = self.code_gen(validators, &checked_modules)?; - self.write_build_outputs(programs)?; + self.write_build_outputs(programs, uplc_dump)?; } Ok(()) @@ -383,7 +384,7 @@ impl Project { Ok(programs) } - fn write_build_outputs(&self, programs: Vec