mirror of
https://github.com/IgorTimofeev/MineOS.git
synced 2025-12-20 02:59:20 +01:00
123 lines
2.8 KiB
Lua
123 lines
2.8 KiB
Lua
local component = require("component")
|
||
local computer = require("computer")
|
||
local os = require("os")
|
||
|
||
local gpu = component.gpu
|
||
|
||
-- Checking if computer is tough enough for such a S T Y L I S H product as MineOS
|
||
do
|
||
local potatoes = {}
|
||
|
||
-- GPU/screen
|
||
if gpu.getDepth() < 8 or gpu.maxResolution() < 160 then
|
||
table.insert(potatoes, "Tier 3 graphics card and screen");
|
||
end
|
||
|
||
-- RAM
|
||
if computer.totalMemory() < 2 * 1024 * 1024 then
|
||
table.insert(potatoes, "At least 2x tier 3.5 RAM modules");
|
||
end
|
||
|
||
-- HDD
|
||
do
|
||
local filesystemFound = false
|
||
|
||
for address in component.list("filesystem") do
|
||
if component.invoke(address, "spaceTotal") >= 2 * 1024 * 1024 then
|
||
filesystemFound = true
|
||
break
|
||
end
|
||
end
|
||
|
||
if not filesystemFound then
|
||
table.insert(potatoes, "At least tier 2 hard disk drive");
|
||
end
|
||
end
|
||
|
||
-- Internet
|
||
if not component.isAvailable("internet") then
|
||
table.insert(potatoes, "Internet card");
|
||
end
|
||
|
||
-- EEPROM
|
||
if not component.isAvailable("eeprom") then
|
||
table.insert(potatoes, "EEPROM");
|
||
end
|
||
|
||
-- SORRY BRO NOT TODAY
|
||
if #potatoes > 0 then
|
||
print("Your computer does not meet the minimum system requirements:")
|
||
|
||
for i = 1, #potatoes do
|
||
print(" ⨯ " .. potatoes[i])
|
||
end
|
||
|
||
return
|
||
end
|
||
end
|
||
|
||
-- Checking if installer can be downloaded from GitHub, because of PKIX errors, server blacklists, etc
|
||
do
|
||
local success, result = pcall(component.internet.request, "https://raw.githubusercontent.com/happymimimix/MineOS_Bugfix/master/Installer/Main.lua")
|
||
|
||
if not success then
|
||
if result then
|
||
if result:match("PKIX") then
|
||
print("Download server SSL sertificate was rejected by Java. Update your Java version or install sertificate for github.com manually")
|
||
else
|
||
print("Download server is unavailable: " .. tostring(result))
|
||
end
|
||
else
|
||
print("Download server is unavailable for unknown reasons")
|
||
end
|
||
|
||
return
|
||
end
|
||
|
||
local deadline = computer.uptime() + 5
|
||
local message
|
||
|
||
while computer.uptime() < deadline do
|
||
success, message = result.finishConnect()
|
||
|
||
if success then
|
||
break
|
||
else
|
||
if message then
|
||
break
|
||
else
|
||
os.sleep(0.1)
|
||
end
|
||
end
|
||
end
|
||
|
||
result.close()
|
||
|
||
if not success then
|
||
print("Download server is unavailable. Check if github.com is not blocked by your internet provider or OpenComputers configuration file")
|
||
return
|
||
end
|
||
end
|
||
|
||
-- Flashing EEPROM with tiny script that will run installer itself after reboot.
|
||
-- It's necessary, because we need clean computer without OpenOS hooks to computer.pullSignal()
|
||
component.eeprom.set([[
|
||
local connection, data, chunk = component.proxy(component.list("internet")()).request("https://raw.githubusercontent.com/happymimimix/MineOS_Bugfix/master/Installer/Main.lua"), ""
|
||
|
||
while true do
|
||
chunk = connection.read(math.huge)
|
||
|
||
if chunk then
|
||
data = data .. chunk
|
||
else
|
||
break
|
||
end
|
||
end
|
||
|
||
connection.close()
|
||
|
||
load(data)()
|
||
]])
|
||
|
||
computer.shutdown(true)
|