SHOW:
|
|
- or go back to the newest paste.
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 = {Terminal = "DMKj3Jh2"} |
19 | + | local filesToUpdate = {"LoginManager=qSjusmuJ","AccountManager=EQezMWsJ"} |
20 | -- Table for files/pastebin codes | |
21 | ||
22 | function getFile(fileName, link) | |
23 | ||
24 | local file = http.get("http://pastebin.com/raw.php?i=" .. 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 | else | |
106 | ||
107 | endFile = fs.open(file,"w") | |
108 | endFile.write(pastebinContents) | |
109 | endFile.close() | |
110 | ||
111 | print("[Success] " .. file .. " has been updated to version " .. pastebinVersion) | |
112 | -- If the versions are not the same then it will write over the current local file to update it to the pastebin version | |
113 | end | |
114 | else | |
115 | ||
116 | print("[Error ] " .. file .. " has an invalid link") | |
117 | end | |
118 | else | |
119 | ||
120 | print("[Error ] " .. file .. " is a directory") | |
121 | end | |
122 | end | |
123 | -- Error messages catching different errors |