From f9d66eadb47d75ccda0d70c3ebe5fa440752de7c Mon Sep 17 00:00:00 2001 From: Aire-One Date: Sun, 30 Jan 2022 20:53:26 +0100 Subject: [PATCH] add(README) update --- README.md | 41 ++++++++++++++++++++++++++++------------- 1 file changed, 28 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index ab1c708..5d79e5d 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,6 @@ -# Calculon : My try to build a library Distributable with Luarocks using Teal +# Calculon + +My try to build a library with Luarocks using Teal! ![Calculon](doc/Calculon.webp "Calculon") @@ -6,14 +8,14 @@ ## e18f54c977 init -Init a teal project with `cyan init`, then write the `calculon.tl` lua. +Initialize a teal project with `cyan init`, then write the `calculon.tl` Lua. Note : I also added `.gitignore` and `.gitkeep` files to not commit generated files from `cyan build`. ## d24e69a41e add(consumer) init -Add a Lua consumer script to try the calculon lib. It can be run with +Add a Lua consumer script to try the calculon lib. It can be run with: ```sh lua consumer.lua @@ -26,41 +28,54 @@ Notes : ## a433eb2fe4 add(luarocks) init -Init a Luarocks module in the current directory. +Initialize a Luarocks module in the current directory. I need to add the module `calculon = "build/calculon/init.lua"` to make the rock not empty. ## b4d00c05ae add(build) force commit lua -Because the rock needs the generated lua, I force commit it :'( +Because the rock needs the generated Lua, I have force commit it 😭 ## acb833e8e1 add(consumer) load calculon as module -The consumer can now load calculon as a "normal" module! +Now that the calculon lib ships the Lua files, the consumer can load it as a normal module! ## 5eb06ccafb chore(consumer) move it to a project Move the consumer to its own project with Luarocks. -Notes : We need to install calculon manually from the rockspec with -`./luarocks install ../calculon-0.1-1.rockspec` +Notes : Calculon is not uploaded to Luarocks repositories. We need to install calculon manually from the rockspec file with: `./luarocks install ../calculon-0.1-1.rockspec` ## dac8260ea9 add(consumer) teal Move the consumer to teal! -It can be build with `tl build`. Then run with `./lua build/consumer.lua`. +It can be built with `tl build`. Then run with `./lua build/consumer.lua`. Note : * To prevent the missing types definition error, I need to use the trick from tabular module -* We can't run the teal file directly `tl run src/consumer.tl` :'( +* We can't run the teal file directly `tl run src/consumer.tl` 😭 + +# 72c84c39e6 add(d.tl) calculon type definition + +Add type definition to the calculon module and package. + +Note : We force the type definition to be part of the module by abusing the `build.install.lua` table. + +# 3baa006cb0 add(consumer) use type definitions + +The consumer module doesn't need any trick thanks to the type definition file being part of the rock! + +Note : We need to include the `lua_modules/share/lua/5.4` path to the tlconfig for this to work # TODO -* The consumer works only because the generated file can "find" the module thanks to `./lua` -* Distribute teal files in the rock +* ~~The consumer works only because the generated file can find the module thanks to `./lua` that includes paths to locally installed packages~~ → is it really an issue? +* ~~Distribute teal files in the rock~~ → I think the rock should be Lua only (+ types definition for teal optionally) +* To not commit generated Lua files, the calculon module can have a `generate-rock` script that build and package the module (Can be done from a CI/CD like GitHub Actions 💡) +* The type definition trick works by abusing Luarocks specs, this needs to me standardized # References @@ -69,4 +84,4 @@ Note : * https://github.com/teal-language/teal-types * https://github.com/hishamhm/tabular -Image from https://futurama.fandom.com/wiki/Calculon \ No newline at end of file +Image from https://futurama.fandom.com/wiki/Calculon