Create installer.lua

This commit is contained in:
Ale2610 2015-07-31 21:21:28 +02:00
parent fe2d529fde
commit 9b818711ab

118
src/installer.lua Normal file
View file

@ -0,0 +1,118 @@
if not pocket or not term.isColor() then
print("sPhone is only for Advanced Pocket Computers!")
return
end
local files = {
["src/sPhone.lua"] = "/.sPhone/sPhone",
["src/apis/sha256.lua"] = "/.sPhone/apis/sha256",
["src/apis/sertextext.lua"] = "/.sPhone/apis/sertextext",
["src/apis/graphics.lua"] = "/.sPhone/apis/graphics",
}
local githubUser = "Sertex-Team"
local githubRepo = "sPhone"
local githubBranch = "master"
local function clear()
term.setBackgroundColor(colors.white)
term.clear()
term.setCursorPos(1, 1)
term.setTextColor(colors.white)
end
local function center(text)
local w, h = term.getSize()
local x, y = term.getCursorPos()
term.setCursorPos(math.ceil(w/2) - #text, y)
write(text)
end
local function httpGet(url, save)
if not url then
error("not enough arguments, expected 1 or 2", 2)
end
local remote = http.get(url)
if not remote then
return false
end
local text = remote.readAll()
remote.close()
if save then
local file = fs.open(save, "w")
file.write(text)
file.close()
return true
end
return text
end
local function get(user, repo, bran, path, save)
if not user or not repo or not bran or not path then
error("not enough arguments, expected 4 or 5", 2)
end
local url = "https://raw.github.com/"..user.."/"..repo.."/"..bran.."/"..path
local remote = http.get(url)
if not remote then
return false
end
local text = remote.readAll()
remote.close()
if save then
local file = fs.open(save, "w")
file.write(text)
file.close()
return true
end
return text
end
local function getFile(file, target)
return get(githubUser, githubRepo, githubBranch, file, target)
end
shell.setDir("")
clear()
local fileCount = 0
for _ in pairs(files) do
fileCount = fileCount + 1
end
local filesDownloaded = 0
local w, h = term.getSize()
for k, v in pairs(files) do
term.setTextColor(colors.black)
term.setBackgroundColor(colors.white)
clear()
term.setCursorPos(2, 2)
center("sPhone")
print("")
center("Getting files")
term.setCursorPos(2, h - 1)
local ok = k:sub(1, 4) == "ext:" and httpGet(k:sub(5), v) or getFile(k, v)
if not ok then
if term.isColor() then
term.setTextColor(colors.red)
end
term.setCursorPos(2, 6)
print("Error getting file:")
term.setCursorPos(2, 7)
print(k)
sleep(1)
end
filesDownloaded = filesDownloaded + 1
end
clear()
term.setCursorPos(2, 2)
center("sPhone")
print("")
center("sPhone installed!")
for i = 1, 5 do
write(".")
sleep(1)
end
os.reboot()