0.0.1
This commit is contained in:
95
resources/[esx_addons]/esx_hud/server/main.lua
Normal file
95
resources/[esx_addons]/esx_hud/server/main.lua
Normal file
@@ -0,0 +1,95 @@
|
||||
HUD = HUD or {}
|
||||
|
||||
HUD.VersionCheckBaseURL = "https://raw.githubusercontent.com/esx-framework/ESX-Legacy-Addons/main/%5Besx_addons%5D/"
|
||||
|
||||
function HUD:ErrorHandle(msg)
|
||||
local resourceName = GetCurrentResourceName()
|
||||
print(("[^1ERROR^7] ^3%s^7: %s"):format(resourceName, msg))
|
||||
end
|
||||
|
||||
function HUD:InfoHandle(msg, color)
|
||||
local resourceName = GetCurrentResourceName()
|
||||
local c = ({green=2, red=1, blue=4})[color] or 3
|
||||
print(("[^9INFO^7] ^3%s^7: ^" .. c .. "%s^7"):format(resourceName, msg))
|
||||
end
|
||||
|
||||
local function normalizeSemver(v)
|
||||
if type(v) ~= "string" then return nil end
|
||||
local three = v:match("%d+%.%d+%.%d+")
|
||||
if three then return three end
|
||||
local two = v:match("^%d+%.%d+$")
|
||||
if two then return (two .. ".0") end
|
||||
local one = v:match("^%d+$")
|
||||
if one then return (one .. ".0.0") end
|
||||
return nil
|
||||
end
|
||||
|
||||
VERSION = {
|
||||
Check = function(err, response, headers)
|
||||
local resourceName = GetCurrentResourceName()
|
||||
local currentVersion = GetResourceMetadata(resourceName, "version", 0)
|
||||
if not currentVersion then return end
|
||||
|
||||
local manifestURL = HUD.VersionCheckBaseURL .. resourceName .. "/fxmanifest.lua"
|
||||
HUD:InfoHandle(("Checking manifest from %s"):format(manifestURL), "blue")
|
||||
|
||||
if err ~= 200 or not response then
|
||||
HUD:ErrorHandle(Translate("errorGetCurrentVersion"))
|
||||
return
|
||||
end
|
||||
|
||||
local remoteVersion = response:match("version%s+'([%d%.]+)'")
|
||||
if not remoteVersion then
|
||||
HUD:ErrorHandle(Translate("errorGetRemoteVersion"))
|
||||
return
|
||||
end
|
||||
|
||||
local latestVersion = normalizeSemver(remoteVersion)
|
||||
currentVersion = normalizeSemver(currentVersion)
|
||||
|
||||
if not latestVersion or not currentVersion then
|
||||
HUD:ErrorHandle(Translate("invalidVersion"))
|
||||
return
|
||||
end
|
||||
|
||||
if currentVersion == latestVersion then
|
||||
HUD:InfoHandle(Translate("latestVersion"), "green")
|
||||
HUD:InfoHandle(("Up to date version (%s)"):format(currentVersion), "green")
|
||||
return
|
||||
end
|
||||
|
||||
local currentVersionSplitted = { string.strsplit(".", currentVersion) }
|
||||
local latestVersionSplitted = { string.strsplit(".", latestVersion) }
|
||||
|
||||
HUD:InfoHandle(Translate("currentVersion") .. latestVersion, "green")
|
||||
HUD:InfoHandle(Translate("yourVersion") .. currentVersion, "blue")
|
||||
HUD:InfoHandle(("Update available: remote %s > local %s"):format(latestVersion, currentVersion), "red")
|
||||
|
||||
for i = 1, #currentVersionSplitted do
|
||||
local current, latest = tonumber(currentVersionSplitted[i]), tonumber(latestVersionSplitted[i])
|
||||
if current ~= latest then
|
||||
if not current or not latest then return end
|
||||
if current < latest then
|
||||
HUD:InfoHandle(Translate("needUpdateResource"), "red")
|
||||
end
|
||||
break
|
||||
end
|
||||
end
|
||||
end,
|
||||
|
||||
RunVersionChecker = function()
|
||||
CreateThread(function()
|
||||
local resourceName = GetCurrentResourceName()
|
||||
local manifestURL = HUD.VersionCheckBaseURL .. resourceName .. "/fxmanifest.lua"
|
||||
PerformHttpRequest(manifestURL, VERSION.Check, "GET")
|
||||
end)
|
||||
end,
|
||||
}
|
||||
|
||||
AddEventHandler("onResourceStart", function(resourceName)
|
||||
local currentName = GetCurrentResourceName()
|
||||
if resourceName ~= currentName then return end
|
||||
|
||||
Wait(100)
|
||||
VERSION:RunVersionChecker()
|
||||
end)
|
||||
Reference in New Issue
Block a user