View difference between Paste ID: f8MhQZRT and cfRBdknP
SHOW: | | - or go back to the newest paste.
1-
function download(package,fileName)
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-
    local res = http.get("http://kd.funniray.com/kdpm/packages/"..package.."/"..fileName)
5+
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-
function getPackageData(package)
12+
13-
    local res = http.get("http://kd.funniray.com/kdpm/packages/"..package.."/pkgManifest.json")
13+
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-
function downloadPackage(package)
19+
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-
    json = { decode=function() print("json package not installed! :o")end}
37+
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-
function install_kdpm()
46+
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-
if (arg[1] == "install" or arg[1] == "i") then
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