refactor(wt): extract exit module

Amolith created

Assisted-by: Claude Opus 4.5 via Amp

Change summary

dist/wt         | 54 +++++++++++++++++++++++++++++++++++++++++++-------
src/main.lua    | 16 +++++++-------
src/wt/exit.lua | 15 ++++++++++++++
3 files changed, 69 insertions(+), 16 deletions(-)

Detailed changes

dist/wt 🔗

@@ -7,16 +7,54 @@
 -- AUTO-GENERATED FILE - Do not edit directly
 -- Edit src/*.lua and run 'make dist' to regenerate
 
+-- Embedded module loader
+local _EMBEDDED_MODULES = {}
+local _LOADED_MODULES = {}
+local _real_require = require
+
+local function _embedded_require(name)
+	if _LOADED_MODULES[name] then
+		return _LOADED_MODULES[name]
+	end
+	if _EMBEDDED_MODULES[name] then
+		local loader = load(_EMBEDDED_MODULES[name], name)
+		if loader then
+			local result = loader()
+			_LOADED_MODULES[name] = result or true
+			return _LOADED_MODULES[name]
+		end
+	end
+	return _real_require(name)
+end
+require = _embedded_require
+
+_EMBEDDED_MODULES["wt.exit"] = [[-- SPDX-FileCopyrightText: Amolith <amolith@secluded.site>
+--
+-- SPDX-License-Identifier: GPL-3.0-or-later
+
+---@class wt.exit
+---@field EXIT_SUCCESS integer
+---@field EXIT_USER_ERROR integer
+---@field EXIT_SYSTEM_ERROR integer
+local M = {}
+
+M.EXIT_SUCCESS = 0
+M.EXIT_USER_ERROR = 1
+M.EXIT_SYSTEM_ERROR = 2
+
+return M
+]]
+
 
 if _VERSION < "Lua 5.2" then
 	io.stderr:write("error: wt requires Lua 5.2 or later\n")
 	os.exit(1)
 end
 
--- Exit codes
-local EXIT_SUCCESS = 0
-local EXIT_USER_ERROR = 1
-local EXIT_SYSTEM_ERROR = 2
+local exit = require("wt.exit")
+local EXIT_SUCCESS = exit.EXIT_SUCCESS
+local EXIT_USER_ERROR = exit.EXIT_USER_ERROR
+local EXIT_SYSTEM_ERROR = exit.EXIT_SYSTEM_ERROR
 
 ---Execute command, return output and exit code
 ---@param cmd string
@@ -1966,10 +2004,10 @@ if pcall(debug.getlocal, 4, 1) then
 		-- Command execution (for integration tests)
 		run_cmd = run_cmd,
 		run_cmd_silent = run_cmd_silent,
-		-- Exit codes
-		EXIT_SUCCESS = EXIT_SUCCESS,
-		EXIT_USER_ERROR = EXIT_USER_ERROR,
-		EXIT_SYSTEM_ERROR = EXIT_SYSTEM_ERROR,
+		-- Exit codes (re-exported from wt.exit)
+		EXIT_SUCCESS = exit.EXIT_SUCCESS,
+		EXIT_USER_ERROR = exit.EXIT_USER_ERROR,
+		EXIT_SYSTEM_ERROR = exit.EXIT_SYSTEM_ERROR,
 	}
 end
 

src/main.lua 🔗

@@ -9,10 +9,10 @@ if _VERSION < "Lua 5.2" then
 	os.exit(1)
 end
 
--- Exit codes
-local EXIT_SUCCESS = 0
-local EXIT_USER_ERROR = 1
-local EXIT_SYSTEM_ERROR = 2
+local exit = require("wt.exit")
+local EXIT_SUCCESS = exit.EXIT_SUCCESS
+local EXIT_USER_ERROR = exit.EXIT_USER_ERROR
+local EXIT_SYSTEM_ERROR = exit.EXIT_SYSTEM_ERROR
 
 ---Execute command, return output and exit code
 ---@param cmd string
@@ -1962,10 +1962,10 @@ if pcall(debug.getlocal, 4, 1) then
 		-- Command execution (for integration tests)
 		run_cmd = run_cmd,
 		run_cmd_silent = run_cmd_silent,
-		-- Exit codes
-		EXIT_SUCCESS = EXIT_SUCCESS,
-		EXIT_USER_ERROR = EXIT_USER_ERROR,
-		EXIT_SYSTEM_ERROR = EXIT_SYSTEM_ERROR,
+		-- Exit codes (re-exported from wt.exit)
+		EXIT_SUCCESS = exit.EXIT_SUCCESS,
+		EXIT_USER_ERROR = exit.EXIT_USER_ERROR,
+		EXIT_SYSTEM_ERROR = exit.EXIT_SYSTEM_ERROR,
 	}
 end
 

src/wt/exit.lua 🔗

@@ -0,0 +1,15 @@
+-- SPDX-FileCopyrightText: Amolith <amolith@secluded.site>
+--
+-- SPDX-License-Identifier: GPL-3.0-or-later
+
+---@class wt.exit
+---@field EXIT_SUCCESS integer
+---@field EXIT_USER_ERROR integer
+---@field EXIT_SYSTEM_ERROR integer
+local M = {}
+
+M.EXIT_SUCCESS = 0
+M.EXIT_USER_ERROR = 1
+M.EXIT_SYSTEM_ERROR = 2
+
+return M