Main/resources/[jobs]/[weapons]/force-sling/version.lua

94 lines
2.6 KiB
Lua
Raw Normal View History

2025-06-07 08:51:21 +02:00
lib.versionCheck('Force-Developing/force-sling')
local latestVersionUrl =
"https://gist.githubusercontent.com/Force-Developing/ee739a3263bc3421257d901e53e27b10/raw/force-sling"
local currentVersion = GetResourceMetadata(GetCurrentResourceName(), 'version', 0)
local function parseVersion(version)
local major, minor, patch = version:match("(%d+)%.(%d+)%.(%d+)")
if not major then return nil end
return {
major = tonumber(major),
minor = tonumber(minor),
patch = tonumber(patch)
}
end
local function isNewerVersion(current, latest)
local currentParsed = parseVersion(current)
local latestParsed = parseVersion(latest)
if not currentParsed or not latestParsed then
return false
end
if latestParsed.major > currentParsed.major then return true end
if latestParsed.major < currentParsed.major then return false end
if latestParsed.minor > currentParsed.minor then return true end
if latestParsed.minor < currentParsed.minor then return false end
return latestParsed.patch > currentParsed.patch
end
local function formatChangelogs(changelogs)
if not changelogs then return "No changelog available" end
return changelogs:gsub("%-", "\n-"):gsub("^%s*(.-)%s*$", "%1")
end
local function versionCheck()
PerformHttpRequest(latestVersionUrl, function(err, response, headers)
if err ~= 200 then
lib.print.error(string.format("Version check failed with error code: %s", err))
return
end
local success, result = pcall(function()
local version, changelogs = response:match("<(.-)>(.-)<")
if not version then
version = response:match("<(.-)>")
changelogs = response:match(">(.-)<")
end
if not version then
error("Invalid version format in response")
end
version = version:gsub("[<>]", "")
local isNewer = isNewerVersion(currentVersion, version)
local output = string.format([[
-------------
Current Version: %s
Latest Version: %s
-------------
%s
-------------]],
currentVersion,
version,
isNewer and string.format(
"Update available!\nChangelogs:\n%s",
formatChangelogs(changelogs)
) or "You are running the latest version."
)
if isNewer then
lib.print.warn(output)
else
lib.print.info(output)
end
end)
if not success then
lib.print.error(string.format("Failed to process version check: %s", result))
end
end, 'GET', '', {
['Cache-Control'] = 'no-cache',
['Content-Type'] = 'application/json',
['User-Agent'] = string.format('force-appearance/%s', currentVersion)
})
end
CreateThread(function()
Wait(5000)
versionCheck()
end)