forked from Simnation/Main
93 lines
2.6 KiB
Lua
93 lines
2.6 KiB
Lua
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)
|