1
0
Fork 0
forked from Simnation/Main
Main/resources/[inventory]/muhaddil-machines/server/autoChecker.lua
2025-07-10 12:07:36 +02:00

120 lines
5.1 KiB
Lua

local currentVersion = GetResourceMetadata(GetCurrentResourceName(), 'version')
local resourceName = 'Muhaddil/muhaddil-machines'
local githubApiUrl = 'https://api.github.com/repos/' .. resourceName .. '/releases/latest'
-- Función para calcular la diferencia en días
local function daysAgo(dateStr)
local year, month, day = dateStr:match("(%d+)-(%d+)-(%d+)")
local releaseTime = os.time({ year = year, month = month, day = day })
local currentTime = os.time()
local difference = os.difftime(currentTime, releaseTime) / (60 * 60 * 24) -- Diferencia en días
return math.floor(difference)
end
-- Función para convertir la fecha a "hace X días"
local function formatDate(releaseDate)
local days = daysAgo(releaseDate)
if days < 1 then
return "Today"
elseif days == 1 then
return "Yesterday"
else
return days .. " days ago"
end
end
-- Función para acortar la URL
local function shortenTexts(text)
local maxLength = 35
if #text > maxLength then
local shortened = text:sub(1, maxLength - 3) .. '...'
return shortened
else
return text
end
end
local function printWithColor(message, colorCode)
if type(message) ~= "string" then
message = tostring(message)
end
print('\27[' .. colorCode .. 'm' .. message .. '\27[0m')
end
local function printCentered(text, length, colorCode)
local padding = math.max(length - #text - 2, 0)
local leftPadding = math.floor(padding / 2)
local rightPadding = padding - leftPadding
printWithColor('' .. string.rep(' ', leftPadding) .. text .. string.rep(' ', rightPadding) .. '', colorCode)
end
local function printWrapped(text, length, colorCode)
if type(text) ~= "string" then
text = tostring(text)
end
local maxLength = length - 2
local pos = 1
while pos <= #text do
local endPos = pos + maxLength - 1
if endPos > #text then
endPos = #text
else
local spaceIndex = text:sub(pos, endPos):match('.*%s') or maxLength
endPos = pos + spaceIndex - 1
end
local line = text:sub(pos, endPos)
if endPos < #text then
line = line .. '...'
end
printWithColor('' .. line .. string.rep(' ', length - #line) .. '', colorCode)
pos = endPos + 1
end
end
if Config.AutoVersionChecker then
PerformHttpRequest(githubApiUrl, function(statusCode, response, headers)
if statusCode == 200 then
local data = json.decode(response)
if data and data.tag_name then
local latestVersion = data.tag_name
local releaseDate = data.published_at or "Unknown"
local formattedDate = formatDate(releaseDate)
local notes = data.body or "No notes available"
local downloadUrl = data.html_url or "No download link available"
local shortenedUrl = shortenTexts(downloadUrl)
local shortenedNotes = shortenTexts(notes)
local boxWidth = 52
if latestVersion ~= currentVersion then
print('╭────────────────────────────────────────────────────╮')
printWrapped('[muhaddil-machines] - New Version Available', boxWidth, '34') -- Blue
printWrapped('Current version: ' .. currentVersion, boxWidth, '32') -- Green
printWrapped('Latest version: ' .. latestVersion, boxWidth, '33') -- Yellow
printWrapped('Released: ' .. formattedDate, boxWidth, '33') -- Yellow
printWrapped('Notes: ' .. shortenedNotes, boxWidth, '33') -- Yellow
printWrapped('Download: ' .. shortenedUrl, boxWidth, '32') -- Green
print('╰────────────────────────────────────────────────────╯')
else
print('╭────────────────────────────────────────────────────╮')
printWrapped('[muhaddil-machines] - Up-to-date', boxWidth, '32') -- Green
printWrapped('Current version: ' .. currentVersion, boxWidth, '32') -- Green
print('╰────────────────────────────────────────────────────╯')
end
else
printWithColor('[muhaddil-machines] - Error: The JSON structure is not as expected.', '31') -- Red
printWithColor('GitHub API Response: ' .. response, '31') -- Red
end
else
printWithColor(
'[muhaddil-machines] - Failed to check for latest version. Status code: ' .. statusCode, '31') -- Red
end
end, 'GET')
end