From 6fbeb546bc3c925a1e1c7bcaf87ff0df7c3168ed Mon Sep 17 00:00:00 2001 From: cos Date: Sat, 9 Aug 2025 09:43:12 +0200 Subject: [PATCH] add --help and --full-version options --- crates/luals/src/main.rs | 3 +++ main.lua | 2 +- script/cli/full_version.lua | 2 ++ script/cli/init.lua | 10 ++++++++++ script/cli/usage.lua | 2 ++ script/version.lua | 36 ++++++++++++++++++++++++++++++++++++ 6 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 script/cli/full_version.lua create mode 100644 script/cli/usage.lua diff --git a/crates/luals/src/main.rs b/crates/luals/src/main.rs index 5d6f36a..2eac8a9 100644 --- a/crates/luals/src/main.rs +++ b/crates/luals/src/main.rs @@ -3,6 +3,9 @@ use std::{env, path::{Path, PathBuf}}; #[tokio::main(flavor = "current_thread")] async fn main() -> LuaResult<()> { + unsafe { + env::set_var("LUALS_BIN", env!("CARGO_PKG_NAME")); + } dynamic_set_root(); let lua = unsafe { Lua::unsafe_new() }; diff --git a/main.lua b/main.lua index 823d49c..bb95386 100644 --- a/main.lua +++ b/main.lua @@ -22,7 +22,7 @@ local function loadArgs() local lastKey for _, v in ipairs(arg) do ---@type string? - local key, tail = v:match '^%-%-([%w_]+)(.*)$' + local key, tail = v:match '^%-%-([%w_-]+)(.*)$' local value if key then value = tail:match '=(.+)' diff --git a/script/cli/full_version.lua b/script/cli/full_version.lua new file mode 100644 index 0000000..4de6245 --- /dev/null +++ b/script/cli/full_version.lua @@ -0,0 +1,2 @@ +local version = require 'version' +print(version.getFullVersion()) diff --git a/script/cli/init.lua b/script/cli/init.lua index 65e7e10..4fcde14 100644 --- a/script/cli/init.lua +++ b/script/cli/init.lua @@ -1,3 +1,13 @@ +if _G['HELP'] then + require 'cli.usage' + os.exit(0, true) +end + +if _G['FULL_VERSION'] then + require 'cli.full_version' + os.exit(0, true) +end + if _G['VERSION'] then require 'cli.version' os.exit(0, true) diff --git a/script/cli/usage.lua b/script/cli/usage.lua new file mode 100644 index 0000000..37a9e37 --- /dev/null +++ b/script/cli/usage.lua @@ -0,0 +1,2 @@ +print('Usage: ' .. os.getenv("LUALS_BIN") .. + " [--help|--version|--full-version|--check|--check-worker|--doc-update|--doc]" ) diff --git a/script/version.lua b/script/version.lua index fa17856..69d3f7b 100644 --- a/script/version.lua +++ b/script/version.lua @@ -17,6 +17,34 @@ local function loadVersion() return version end +local function loadFullVersion() + local git_config = fsu.loadFile(ROOT / '.git/config') + local repo + local version + + if not git_config then + repo = '' + else + repo = git_config:match 'url = %g+github.com/LuaLS/(%g+)' + if not repo then + return + end + end + + local phandle = io.popen('git describe --tags') + if phandle == nil then + version = '' + else + version = phandle:read("*l") + phandle:close() + end + + if not version then + version = '' + end + return repo .. ' ' .. version +end + local m = {} function m.getVersion() @@ -27,4 +55,12 @@ function m.getVersion() return m.version end +function m.getFullVersion() + if not m.full_version then + m.full_version = loadFullVersion() or '' + end + + return m.full_version +end + return m