From 9f5af13c86a2072210ddbd2ac82fea760100c148 Mon Sep 17 00:00:00 2001 From: Chip Senkbeil Date: Tue, 12 Oct 2021 17:18:18 -0500 Subject: [PATCH] Add version information to lua module --- distant-lua/src/lib.rs | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/distant-lua/src/lib.rs b/distant-lua/src/lib.rs index 48810e6..64e422d 100644 --- a/distant-lua/src/lib.rs +++ b/distant-lua/src/lib.rs @@ -23,10 +23,36 @@ mod utils; fn distant_lua(lua: &Lua) -> LuaResult { let exports = lua.create_table()?; - exports.set("PENDING", utils::pending(lua)?)?; + // Provide a static pending type used when consumer wants to use async functions + // directly without wrapping them with a scheduler + exports.set("pending", utils::pending(lua)?)?; + + // API modules available for users exports.set("log", log::make_log_tbl(lua)?)?; exports.set("session", session::make_session_tbl(lua)?)?; exports.set("utils", utils::make_utils_tbl(lua)?)?; + exports.set("version", make_version_tbl(lua)?)?; Ok(exports) } + +macro_rules! set_nonempty_env { + ($tbl:ident, $key:literal, $env_key:literal) => {{ + let value = env!($env_key); + if !value.is_empty() { + $tbl.set($key, value)?; + } + }}; +} + +fn make_version_tbl(lua: &Lua) -> LuaResult { + let tbl = lua.create_table()?; + + set_nonempty_env!(tbl, "full", "CARGO_PKG_VERSION"); + set_nonempty_env!(tbl, "major", "CARGO_PKG_VERSION_MAJOR"); + set_nonempty_env!(tbl, "minor", "CARGO_PKG_VERSION_MINOR"); + set_nonempty_env!(tbl, "patch", "CARGO_PKG_VERSION_PATCH"); + set_nonempty_env!(tbl, "pre", "CARGO_PKG_VERSION_PRE"); + + Ok(tbl) +}