A Lua binding for Apache OpenDAL: access the local filesystem, in-memory storage, S3, and 50+ services through one API.
We release the OpenDAL Lua binding independently of the opendal crate (Rust core). For updates and compatibility, use the Lua binding version instead of the opendal crate version.
# Currently only Lua 5.2 is supported (the lua52 Cargo feature). cd bindings/lua cargo build --package opendal-lua --release # Copy the native library to your Lua shared-library directory. cp ../../target/release/libopendal_lua.so /usr/lib/lua/5.2/opendal.so
cd bindings/lua luarocks make
local opendal = require("opendal") -- Errors are raised as Lua errors; use pcall to catch them. local ok, op = pcall(opendal.operator.new, "fs", { root = "/tmp" }) if not ok then print(op) return end op:write("test.txt", "hello world") print("read:", op:read("test.txt")) -- "hello world"
Run the bundled example:
lua5.2 example/fs.lua
For more examples and full API documentation, see the User guide.
Contributions are welcome. Run tests with busted:
busted -o gtest test/opendal_test.lua
Licensed under the Apache License, Version 2.0: http://www.apache.org/licenses/LICENSE-2.0
Apache OpenDAL, OpenDAL, and Apache are either registered trademarks or trademarks of the Apache Software Foundation.