From c9da049712754e8b71e02520bf27185d716b777b Mon Sep 17 00:00:00 2001 From: rvcas Date: Thu, 10 Nov 2022 10:27:03 -0500 Subject: [PATCH] feat: rework how modules are loaded --- crates/project/src/lib.rs | 33 +++---------------- examples/aiken_std/aiken.toml | 6 ++++ examples/aiken_std/lib/aiken/context.ak | 8 +++++ examples/aiken_std/validators/always_true.ak | 3 ++ examples/sample/{src => lib}/sample.ak | 0 .../sample/{src => lib}/sample/context.ak | 0 examples/sample/{src => lib}/sample/mint.ak | 0 examples/sample/{src => lib}/sample/spend.ak | 0 .../{src/scripts => validators}/swap.ak | 0 9 files changed, 22 insertions(+), 28 deletions(-) create mode 100644 examples/aiken_std/aiken.toml create mode 100644 examples/aiken_std/lib/aiken/context.ak create mode 100644 examples/aiken_std/validators/always_true.ak rename examples/sample/{src => lib}/sample.ak (100%) rename examples/sample/{src => lib}/sample/context.ak (100%) rename examples/sample/{src => lib}/sample/mint.ak (100%) rename examples/sample/{src => lib}/sample/spend.ak (100%) rename examples/sample/{src/scripts => validators}/swap.ak (100%) diff --git a/crates/project/src/lib.rs b/crates/project/src/lib.rs index 354983c4..86d3d15f 100644 --- a/crates/project/src/lib.rs +++ b/crates/project/src/lib.rs @@ -104,26 +104,15 @@ impl Project { } fn read_source_files(&mut self) -> Result<(), Error> { - let lib = self.root.join(format!("src/{}", self.config.name)); - let scripts = self.root.join("src/scripts"); + let lib = self.root.join("lib"); + let scripts = self.root.join("validators"); - self.read_root_lib_file()?; self.aiken_files(&scripts, ModuleKind::Script)?; self.aiken_files(&lib, ModuleKind::Lib)?; Ok(()) } - fn read_root_lib_file(&mut self) -> Result<(), Error> { - let root_lib_path = self.root.join(format!("src/{}.ak", self.config.name)); - - if root_lib_path.exists() { - self.add_module(root_lib_path, &self.root.join("src"), ModuleKind::Lib)?; - } - - Ok(()) - } - fn parse_sources(&mut self) -> Result { let mut errors = Vec::new(); let mut parsed_modules = HashMap::with_capacity(self.sources.len()); @@ -458,7 +447,7 @@ impl Project { } fn add_module(&mut self, path: PathBuf, dir: &Path, kind: ModuleKind) -> Result<(), Error> { - let name = self.module_name(dir, &path, kind); + let name = self.module_name(dir, &path); let code = fs::read_to_string(&path).map_err(|error| Error::FileIo { path: path.clone(), error, @@ -474,12 +463,7 @@ impl Project { Ok(()) } - fn module_name( - &self, - package_path: &Path, - full_module_path: &Path, - kind: ModuleKind, - ) -> String { + fn module_name(&self, package_path: &Path, full_module_path: &Path) -> String { // ../../{config.name}/module.ak // module.ak @@ -498,14 +482,7 @@ impl Project { .to_string(); // normalise windows paths - let name = name.replace('\\', "/"); - - // project_name/module - if kind.is_lib() && name != self.config.name { - format!("{}/{}", self.config.name, name) - } else { - name - } + name.replace('\\', "/") } } diff --git a/examples/aiken_std/aiken.toml b/examples/aiken_std/aiken.toml new file mode 100644 index 00000000..83bff769 --- /dev/null +++ b/examples/aiken_std/aiken.toml @@ -0,0 +1,6 @@ +name = "aiken_std" +version = "0.1.0" +licences = ["Apache-2.0"] +description = "Aiken contracts" + +[dependencies] diff --git a/examples/aiken_std/lib/aiken/context.ak b/examples/aiken_std/lib/aiken/context.ak new file mode 100644 index 00000000..380de2e6 --- /dev/null +++ b/examples/aiken_std/lib/aiken/context.ak @@ -0,0 +1,8 @@ +pub type ScriptContext(purpose) { + tx_info: TxInfo, + script_purpose: purpose, +} + +pub type TxInfo { + idk: Int, +} diff --git a/examples/aiken_std/validators/always_true.ak b/examples/aiken_std/validators/always_true.ak new file mode 100644 index 00000000..764cc61b --- /dev/null +++ b/examples/aiken_std/validators/always_true.ak @@ -0,0 +1,3 @@ +pub fn spend() -> Bool { + True +} diff --git a/examples/sample/src/sample.ak b/examples/sample/lib/sample.ak similarity index 100% rename from examples/sample/src/sample.ak rename to examples/sample/lib/sample.ak diff --git a/examples/sample/src/sample/context.ak b/examples/sample/lib/sample/context.ak similarity index 100% rename from examples/sample/src/sample/context.ak rename to examples/sample/lib/sample/context.ak diff --git a/examples/sample/src/sample/mint.ak b/examples/sample/lib/sample/mint.ak similarity index 100% rename from examples/sample/src/sample/mint.ak rename to examples/sample/lib/sample/mint.ak diff --git a/examples/sample/src/sample/spend.ak b/examples/sample/lib/sample/spend.ak similarity index 100% rename from examples/sample/src/sample/spend.ak rename to examples/sample/lib/sample/spend.ak diff --git a/examples/sample/src/scripts/swap.ak b/examples/sample/validators/swap.ak similarity index 100% rename from examples/sample/src/scripts/swap.ak rename to examples/sample/validators/swap.ak