kd8lvt

kdpm

Dec 25th, 2020 (edited)
549
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. --Change this if you want to use your own repo. Github Pages works great, if you don't have your own webserver.
  2. local repoURL = "http://kd.funniray.com/kdpm/packages"
  3.  
  4. local function download(package,fileName)
  5.     if (not fs.exists("/kdpm/packages/"..package.."/")) then
  6.         fs.makeDir("/kdpm/packages/"..package.."/")
  7.     end
  8.     local res = http.get(repoURL.."/"..package.."/"..fileName)
  9.     local file = fs.open("/kdpm/packages/"..package.."/"..fileName,"w")
  10.     file.write(res.readAll())
  11.     res.close()
  12.     file.close()
  13. end
  14.  
  15. local function getPackageData(package)
  16.     local res = http.get(repoURL.."/"..package.."/pkgManifest.json")
  17.     local pkgData = json.decode(res.readAll())
  18.     res.close()
  19.     return pkgData
  20. end
  21.  
  22. local function downloadPackage(package)
  23.     local pkgData = getPackageData(package)
  24.     local packageDir = "/kdpm/packages/"..package.."/"
  25.     for k,fileName in ipairs(pkgData.files) do
  26.         print("[DL] "..k.."/"..pkgData.fileCount.." -> "..fileName)
  27.         download(package,fileName)
  28.     end
  29.     return pkgData
  30. end
  31.  
  32. function package_installed(package)
  33.     return fs.exists("/kdpm/packages/"..package.."/")
  34. end    
  35.  
  36. if (package_installed("json")) then
  37.     os.loadAPI("/kdpm/packages/json/json.lua")
  38. else
  39.     print("WARNING: \"json\" package not installed!")
  40.     json = { decode=function() print("JSON package not installed! This will cause errors!")end}
  41. end
  42.  
  43. function installPackage(package)
  44.     local pkgData = downloadPackage(package)
  45.     if (pkgData.isExecutable == true) then
  46.         fs.copy("/kdpm/packages/"..package.."/"..pkgData.exe,"/"..pkgData.exe)
  47.     end
  48.     if (pkgData.hasInstallScript == true) then
  49.         print("This package has an install script - run it? [y/N]: ")
  50.         local runit = io.read()
  51.         if (runit == "y" or runit == "Y") then
  52.             shell.run("/kdpm/packages/"..package.."/"..pkgData.installScript)
  53.         else
  54.             print("Not running the install script. Keep in mind this may make the package non-functional - you'll probably want to run it manually if things don't work.")
  55.         end
  56.     end
  57. end
  58.  
  59. local function install_kdpm()
  60.     if (not fs.exists("/kdpm/")) then
  61.         fs.makeDir("/kdpm/")
  62.     end
  63.     if (not fs.exists("/kdpm/packages/")) then
  64.         fs.makeDir("/kdpm/packages/")
  65.     end
  66.     if (not fs.exists("/kdpm/packages/json/")) then
  67.         download("json","json.lua")
  68.         os.loadAPI("/kdpm/packages/json/json.lua")
  69.     end
  70. end
  71.  
  72. function removePackage(package)
  73.     local pkgData = getPackageData(package)
  74.     if (pkgData.isExecutable) then
  75.         shell.run("rm /"..pkgData.exe)
  76.     end
  77.     shell.run("rm /kdpm/packages/"..package)
  78. end
  79.  
  80. if (not fs.exists("/kdpm/") or not fs.exists("/kdpm/packages/") or not fs.exists("/kdpm/packages/json/")) then
  81.     install_kdpm()
  82. end
  83.  
  84. if (arg[1] == "install" or arg[1] == "i" or arg[1] == "get") then
  85.     installPackage(arg[2])
  86. elseif (arg[1] == "remove" or arg[1] == "uninstall" or arg[1] == "rm") then
  87.     removePackage(arg[2])
  88. elseif (arg[1] == "reinstall" or arg[1] == "ri" or arg[1] == "reget") then
  89.     removePackage(arg[2])
  90.     sleep(0.05)
  91.     installPackage(arg[2])
  92. end
Add Comment
Please, Sign In to add comment