Files
CC_monorepo/pm_installer/install.lua
2024-11-16 22:30:21 +01:00

64 lines
2.0 KiB
Lua

local baseURL = "https://gitea.ar2000.me/AR2000/CC_monorepo/raw/branch/main"
--wget run http://127.0.0.1:8888/pm_installer/install.lua
local function concatPath(...) return table.concat({...}, '/') end
---@type function
local mkdir = fs.makeDir
local function wget(src, dst)
local r, rr = http.get(src)
if (not r) then
error(rr, 0)
end
io.open(dst, 'w'):write(r.readAll()):close()
r.close()
end
local path = "/tmp/" .. math.floor(math.random() * 10E9) .. "/"
mkdir("/tmp")
mkdir(path)
mkdir(concatPath(path, 'bin'))
mkdir(concatPath(path, 'lib'))
mkdir(concatPath(path, 'lib/arutils'))
local files = {
['pm_get/bin/pm-get.lua'] = 'bin/pm-get.lua',
['pm/bin/pm.lua'] = 'bin/pm.lua',
['pm/lib/libpm.lua'] = 'lib/libpm.lua',
['tar/lib/tar.lua'] = 'lib/tar.lua',
['arutils/lib/arutils/init.lua'] = 'lib/arutils/init.lua',
['arutils/lib/arutils/parse.lua'] = 'lib/arutils/parse.lua',
}
local packages = {'pm.tar', 'pm_get.tar', 'libtar.tar', 'arutils.tar', 'usrpath.tar',}
for src, dst in pairs(files) do
print(string.format("Downloading %q as %q", path, dst))
wget(concatPath(baseURL, src), concatPath(path, dst))
end
for _, pkg in pairs(packages) do
print(string.format("Downloading %q as %q", path, pkg))
wget(concatPath(baseURL, "packages", pkg), concatPath(path, pkg))
end
print("Installing ...")
--init path
local oldPackagePath = package.path
package.path = table.concat({oldPackagePath, string.format("%s/lib/?.lua;%s/lib/?/init.lua", path, path)}, ";")
local pm = loadfile(path .. "bin/pm.lua", "bt", _ENV)
--install
if (pm) then
pm("install", "--allow-same-version", path .. "libtar.tar")
pm("install", "--allow-same-version", path .. "arutils.tar")
pm("install", "--allow-same-version", path .. "usrpath.tar")
pm("install", "--allow-same-version", path .. "pm.tar")
pm("install", "--allow-same-version", path .. "pm_get.tar")
package.path = oldPackagePath
shell.setPath(shell.path() .. ":/usr/bin")
shell.run("pm-get update")
shell.run("pm-get upgrade")
end
fs.delete(path)