Advertisement
BruceWplays

Lauren Farm 3 updater

Jun 29th, 2022 (edited)
485
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 4.21 KB | None | 0 0
  1. -- This is eniallator's updater program.
  2. -- The way it works is it will compare a version variable in 2 files; 1 pastebin link and 1 local file.
  3. -- NOTE: it does not compare the contents of the file, it only compares a variable.
  4. -- ================================================================================
  5. --
  6. -- To make a version variable in your file copy and paste the following into the file:
  7. --
  8. -- version = "*insert version here*"
  9. --
  10. -- This has to be in the local file aswell as the pastebin file to download.
  11. -- ================================================================================
  12. --
  13. -- To add your file to be updated when running this program add the following to the filesToUpdate table:
  14. --
  15. -- *insert file name* = "*insert pastebin code after 'http://pastebin.com/'*"
  16. --
  17. -- The file name must correspond to your local file on your computercraft computer and the pastebin link has to correspond to your file in pastebin.
  18.  
  19. local filesToUpdate = {farm.lua = "http://pastebin.com/'Etc2zSyR"}
  20. -- Table for files/pastebin codes
  21.  
  22. function getFile(fileName, link)
  23.  
  24.   local file = http.get("http://pastebin.com/raw/" .. textutils.urlEncode(link))
  25.  
  26.   if file then
  27.    
  28.      local out = file.readAll()
  29.      file.close()
  30.      return out
  31.      -- Returning contents of the pastebin file
  32.   else
  33.    
  34.      return false
  35.      -- Returning false if the link is invalid
  36.   end
  37. end
  38. -- Function for downloading the files from pastebin, needs HTTP to run
  39.  
  40. function getVersion(fileContents)
  41.  
  42.   if fileContents then
  43.     local _, numberChars = fileContents:lower():find('version = "')
  44.     local fileVersion = ""
  45.     local char = ""
  46.     -- Declaring variables aswell as finding where in the fileContents argument is 'version = "'
  47.  
  48.     if numberChars then
  49.       while char ~= '"' do
  50.      
  51.         numberChars = numberChars + 1
  52.         char = fileContents:sub(numberChars,numberChars)
  53.         fileVersion = fileVersion .. char
  54.       end
  55.       -- Making the version variable by putting every character from 'version = "' to '"'
  56.    
  57.       fileVersion = fileVersion:sub(1,#fileVersion-1)
  58.       return fileVersion
  59.     else
  60.    
  61.       return false
  62.       -- If the function didn't find 'version = "' in the fileContents then it returns false
  63.     end
  64.   else
  65.    
  66.     return ""
  67.   end
  68. end
  69. -- Finding the version number
  70.  
  71. for file, url in pairs(filesToUpdate) do
  72.  
  73.   if not fs.isDir(file) then
  74.    
  75.     local pastebinContents = getFile(file,url)
  76.     -- Getting the pastebin file's contents
  77.    
  78.     if pastebinContents then
  79.       if fs.exists(file) then
  80.        
  81.         local localFile = fs.open(file,"r")
  82.         localContents = localFile.readAll()
  83.         localFile.close()
  84.         -- Getting the local file's contents
  85.       end
  86.      
  87.       local pastebinVersion = getVersion(pastebinContents)
  88.       local localVersion = getVersion(localContents)
  89.       -- Defining version variables for each of the file's contents
  90.      
  91.       if not pastebinVersion then
  92.        
  93.         print("[Error  ] the pastebin code for " .. file .. " does not have a version variable")
  94.         -- Tests if the pastebin code's contents has a version variable or not
  95.        
  96.       elseif not localVersion then
  97.        
  98.         print("[Error  ] " .. file .. " does not have a version variable")
  99.         -- Tests if the local file doesn't have the version variable
  100.        
  101.       elseif pastebinVersion == localVersion then
  102.        
  103.         print("[Success] " .. file .. " is already the latest version")
  104.         -- If the pastebin file's version is equal to the local file's version then it does nothing
  105.       sleep(3)
  106.             else
  107.        
  108.         endFile = fs.open(file,"w")
  109.         endFile.write(pastebinContents)
  110.         endFile.close()
  111.        
  112.         print("[Success] " .. file .. " has been updated to version " .. pastebinVersion)
  113.         -- If the versions are not the same then it will write over the current local file to update it to the pastebin version
  114.      sleep(3)
  115.             end
  116.     else
  117.      
  118.       print("[Error  ] " .. file .. " has an invalid link")
  119.      end
  120.   else
  121.    
  122.     print("[Error  ] " .. file .. " is a directory")
  123.   end
  124. end
  125. -- Error messages catching different errors
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement