ed
This commit is contained in:
parent
993501dc99
commit
5f0d428070
18 changed files with 1236 additions and 49 deletions
120
resources/[inventory]/muhaddil-machines/server/autoChecker.lua
Normal file
120
resources/[inventory]/muhaddil-machines/server/autoChecker.lua
Normal file
|
@ -0,0 +1,120 @@
|
|||
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
|
Loading…
Add table
Add a link
Reference in a new issue