Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local appName = "db"
- local appVersion = "1.0a"
- local function doScreen(txt)
- term.clear()
- term.setCursorPos(1,1)
- print("DropBox Downloader (v"..appVersion..")")
- print("------------------------------")
- print(txt)
- end
- args = {...}
- -- Download a program from Dropbox
- local function Download(link)
- -- Ensure direct download link
- addr = string.gsub(link,"(//www.)","//dl.",1)
- -- Open the file
- handle = http.get(addr)
- if handle == nil then
- print("Invalid link")
- return nil, nil, nil
- end
- code = handle.readAll()
- -- First take name from address, then try from code
- for word in string.gmatch(addr, "/(%w+)") do
- name = word
- end
- for word in string.gmatch(code, "appName = \"(.-)\"") do
- name = word
- end
- -- Try to take version from code, default to N/A
- version = "N/A"
- for word in string.gmatch(code, "appVersion = \"(.-)\"") do
- version = word
- end
- -- If no label on computer, set label to program name
- if not os.getComputerLabel() then
- os.setComputerLabel(name)
- end
- file = fs.open(name, "w")
- file.write(code)
- file.close()
- return name, version, addr
- end
- if args[1] == "update" then
- if (not fs.exists("db-data")) then
- print("No existing db data. Must run db get first.")
- else
- doScreen("Updating:")
- local handle = fs.open("db-data","r")
- local data = handle.readAll()
- for program,version,addr in string.gmatch(data, "\"(.-)\"|\"(.-)\"|\"(.-)\"") do
- name, ver, addr = Download(addr)
- print("- Program: "..name.." (v"..ver..")")
- end
- end
- elseif (args[1] == "get") and (#args == 2) then
- name, version, addr = Download(args[2])
- if name == nil then
- doScreen("Problem installing program.")
- else
- doScreen("Installed: "..name.." (v"..version..")")
- local handle = fs.open("db-data","a")
- handle.writeLine("\""..name.."\"|\""..version.."\"|\""..addr.."\"\n")
- handle.close()
- end
- else
- print("Usage:")
- print(appName.." update")
- print(appName.." get [address]")
- end
Advertisement
Add Comment
Please, Sign In to add comment