Use this template to create and publish a Tarantool module written in pure Lua.
Note: If you write a Tarantool module in C, see the ckit branch of this repository.
./README.md
- this file./luakit/init.lua
- the Lua module itself, loaded withrequire('luakit')
./luakit-scm-1.rockspec
- a specification for the tarantool/rocks repository./test/luakit.test.lua
- tests for the module./rpm/
- files to build an RPM package./debian/
- files to build a DEB package
Tarantool 1.6.8+ with header files (tarantool
and tarantool-dev
packages)
-
Clone this repository.
git clone https://github.com/tarantool/modulekit.git
The default branch is
luakit
, which is what you need for a module in pure Lua. -
Rename all files to use your favorite name.
For example,
mymodule
:grep -R luakit . mv luakit/ mymodule/ mv test/luakit.test.lua test/mymodule.test.lua ...
-
Implement your code in
./mymodule/
.You will have one or more Lua modules that export their functions for API calls.
As an example, see the Lua module luakit/init.lua from the
luakit
package. Here we have one internal function (test()
), and we export it astest
for API calls.As a result, after we publish the
luakit
package in step 7, Tarantool users will be able to load the package and call the functiontest()
withrequire('luakit').test(arg)
.Note: The basics of creating a Lua module for Tarantool are explained in the Tarantool manual.
-
Add tests to
./test/mymodule.test.lua
:prove -v ./test/luakit.test.lua or ./test/luakit.test.lua
-
Update copyright and README files.
-
Push all files except
rpm/
,debian/
andmymodule-scm-1.rockspec
. -
Update and check the rockspec.
A
.rockspec
file wraps a module into a package. This is what you can publish. If you are new to Lua rocks, see general information on rockspec format and creation.Your rockspec must comply with these requirements and allow to build and install your package locally:
luarocks install --local mymodule-scm-1.rockspec
See an annotated rockspec example in luakit-scm-1.rockspec.
-
Push your rockspec and make a pull request to the tarantool/rocks repository.
The Tarantool team will review the request and decide on including your package in Tarantool rocks list and official Tarantool images for Docker.
-
[Optional] Check DEB packaging and push
debian/
to GitHub.dpkg-buildpackage -D -b -us -uc ls -l ../*.deb
-
[Optional] Check RPM packaging and push
rpm/
to GitHub.tar cvzf ~/rpmbuild/SOURCES/tarantool-mymodule-1.0.0.tar.gz rpmbuild -b rpm/tarantool-mymodule.spec
Enjoy! Thank you for contributing to Tarantool.