diff --git a/scripts/auto-boot-ollama-host.lua b/scripts/auto-boot-ollama-host.lua index f3fdb02..0ccc731 100644 --- a/scripts/auto-boot-ollama-host.lua +++ b/scripts/auto-boot-ollama-host.lua @@ -22,12 +22,13 @@ local function handle_error_pattern(config, powered_on) -- Check if user is currently logged into a desktop session utils.log("Checking if user is currently logged into desktop session...") local user_logged_in = session_check.is_user_logged_in(config) - + if user_logged_in then - utils.log(("User '%s' is currently logged into a desktop session. Skipping Ollama startup to avoid interruption."):format(config.SSH_USER)) + utils.log(("User '%s' is currently logged into a desktop session. Skipping Ollama startup to avoid interruption.") + :format(config.SSH_USER)) return powered_on -- Return current powered_on state without changes end - + utils.log(("User '%s' is not logged into a desktop session. Proceeding with Ollama startup."):format(config.SSH_USER)) -- Send Wake-on-LAN if configured @@ -45,25 +46,34 @@ local function handle_error_pattern(config, powered_on) -- Wait for SSH and start service utils.log("Waiting for SSH to become reachable...") if network.port_is_up(config.OLLAMA_HOST, config.SSH_PORT, 60) then + -- If SSH is reachable, the host is powered on (regardless of WOL status) + powered_on = true + utils.log("SSH is reachable - host is powered on") ollama_manager.start_service(config) + else + utils.log("SSH timeout - host may not be powered on") end + return powered_on end -- Handle finish pattern detection and shutdown -local function handle_finish_pattern(config) +local function handle_finish_pattern(config, powered_on) utils.log(("Detected finish pattern: %q"):format(config.FINISH_PATTERN)) - + -- Check if user is currently logged into a desktop session utils.log("Checking if user is currently logged into desktop session before shutdown...") local user_logged_in = session_check.is_user_logged_in(config) - + if user_logged_in then - utils.log(("User '%s' is currently logged into a desktop session. Skipping shutdown to avoid interruption."):format(config.SSH_USER)) - return -- Exit without shutting down + utils.log(("User '%s' is currently logged into a desktop session. Skipping shutdown to avoid interruption."):format( + config.SSH_USER)) + return powered_on -- Exit without shutting down end - + utils.log(("User '%s' is not logged into a desktop session. Proceeding with shutdown."):format(config.SSH_USER)) ollama_manager.stop_service_and_shutdown(config) + powered_on = false + return powered_on end -- Main application logic @@ -76,18 +86,16 @@ local function main() while true do local fh = assert(io.popen(cmd, "r")) - + for line in fh:lines() do -- Handle error pattern detection if line:find(config.ERROR_PATTERN, 1, true) ~= nil then - handle_error_pattern(config, powered_on) - powered_on = true + powered_on = handle_error_pattern(config, powered_on) end -- Handle finish pattern detection if line:find(config.FINISH_PATTERN, 1, true) ~= nil and powered_on == true then - handle_finish_pattern(config) - powered_on = false + powered_on = handle_finish_pattern(config, powered_on) break end end