bigtwisty

Setup

Jul 26th, 2013
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.03 KB | None | 0 0
  1. local appName = "db"
  2. local appVersion = "1.0a"
  3.  
  4. local function doScreen(txt)
  5. term.clear()
  6. term.setCursorPos(1,1)
  7. print("DropBox Downloader (v"..appVersion..")")
  8. print("------------------------------")
  9. print(txt)
  10. end
  11.  
  12. args = {...}
  13.  
  14. -- Download a program from Dropbox
  15. local function Download(link)
  16. -- Ensure direct download link
  17. addr = string.gsub(link,"(//www.)","//dl.",1)
  18.  
  19. -- Open the file
  20. handle = http.get(addr)
  21. if handle == nil then
  22. print("Invalid link")
  23. return nil, nil, nil
  24. end
  25.  
  26. code = handle.readAll()
  27.  
  28. -- First take name from address, then try from code
  29. for word in string.gmatch(addr, "/(%w+)") do
  30. name = word
  31. end
  32. for word in string.gmatch(code, "appName = \"(.-)\"") do
  33. name = word
  34. end
  35.  
  36. -- Try to take version from code, default to N/A
  37. version = "N/A"
  38. for word in string.gmatch(code, "appVersion = \"(.-)\"") do
  39. version = word
  40. end
  41.  
  42. -- If no label on computer, set label to program name
  43. if not os.getComputerLabel() then
  44. os.setComputerLabel(name)
  45. end
  46.  
  47. file = fs.open(name, "w")
  48. file.write(code)
  49. file.close()
  50. return name, version, addr
  51.  
  52. end
  53.  
  54. if args[1] == "update" then
  55. if (not fs.exists("db-data")) then
  56. print("No existing db data. Must run db get first.")
  57. else
  58. doScreen("Updating:")
  59. local handle = fs.open("db-data","r")
  60. local data = handle.readAll()
  61. for program,version,addr in string.gmatch(data, "\"(.-)\"|\"(.-)\"|\"(.-)\"") do
  62. name, ver, addr = Download(addr)
  63. print("- Program: "..name.." (v"..ver..")")
  64. end
  65. end
  66. elseif (args[1] == "get") and (#args == 2) then
  67. name, version, addr = Download(args[2])
  68. if name == nil then
  69. doScreen("Problem installing program.")
  70. else
  71. doScreen("Installed: "..name.." (v"..version..")")
  72. local handle = fs.open("db-data","a")
  73. handle.writeLine("\""..name.."\"|\""..version.."\"|\""..addr.."\"\n")
  74. handle.close()
  75. end
  76. else
  77. print("Usage:")
  78. print(appName.." update")
  79. print(appName.." get [address]")
  80. end
Advertisement
Add Comment
Please, Sign In to add comment