forked from Simnation/Main
120 lines
5.1 KiB
Lua
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
|