diff --git a/exec/pkg.lua b/exec/pkg.lua index 6c138d1..8ac5f54 100644 --- a/exec/pkg.lua +++ b/exec/pkg.lua @@ -1,10 +1,14 @@ local tA = {...} -local rf = tA[1] +local rf = tA[2] local wget = wget or loadfile("/boot/exec/wget.lua") if not wget then print("wget is required to run this program") elseif rf and pcall(fs.exists,rf) then - local pref = tA[2] or "/boot/" + local pref = tA[3] or "/boot/" + local mode = "install" + if tA[1]:sub(1,1) == "r" then + mode = "remove" + end local files = {} local lrf = "/tmp/rf.txt" @@ -32,6 +36,10 @@ elseif rf and pcall(fs.exists,rf) then local function dl(p,u) if u:sub(1,8) == "https://" or u:sub(1,7) == "http://" then wget(u,pref..p) + elseif u == "dir" then + fs.mkdir(pref..p) + else + fs.cp(u,pref..p) end end @@ -45,13 +53,21 @@ elseif rf and pcall(fs.exists,rf) then if not f then return false, "no recipe" end files=precipe(f:read("*a")) f:close() - local count = 1 local total = #files + print(mode.." the following files to "..pref.."?") + for k,v in ipairs(files) do io.write(v[2].." ") end + io.write("\n[yN] ") + local c = io.read():lower():sub(1,1) + if c ~= "y" then return false, "aborted" end + for k,v in ipairs(files) do - print(tostring(count).."/"..tostring(total)..": "..pref..v[2]) - dl(v[2],v[1]) - count=count+1 + print(tostring(k).."/"..tostring(total)..": "..pref..v[2]) + if mode == "install" then + dl(v[2],v[1]) + elseif mode == "remove" then + fs.rm(pref..v[2]) + end end end