| # Apache OpenDALâ„¢ Lua Binding (WIP) |
| |
| [](https://opendal.apache.org/docs/bindings/lua) |
| |
| A Lua binding for [Apache OpenDAL](https://opendal.apache.org/): access the |
| local filesystem, in-memory storage, S3, and 50+ services through one API. |
| |
| > **Note**: This binding has its own independent version number, which may |
| > differ from the Rust core version. |
| |
| ## Useful Links |
| |
| - **User guide**: https://opendal.apache.org/docs/bindings/lua |
| - **Services & configuration**: https://opendal.apache.org/docs/category/services/ |
| - **Source**: https://github.com/apache/opendal/tree/main/bindings/lua |
| |
| ## Build and install |
| |
| ### Build from source |
| |
| ```bash |
| # 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 |
| ``` |
| |
| ### Install with LuaRocks |
| |
| ```bash |
| cd bindings/lua |
| luarocks make |
| ``` |
| |
| ## Quickstart |
| |
| ```lua |
| 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: |
| |
| ```bash |
| lua5.2 example/fs.lua |
| ``` |
| |
| For more examples and full API documentation, see the |
| [User guide](https://opendal.apache.org/docs/bindings/lua). |
| |
| ## Contributing |
| |
| Contributions are welcome. Run tests with |
| [busted](https://lunarmodules.github.io/busted/): |
| |
| ```bash |
| busted -o gtest test/opendal_test.lua |
| ``` |
| |
| ## License and Trademarks |
| |
| 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. |