diff --git a/ccptinstall.lua b/ccptinstall.lua index c8429de..61ee334 100644 --- a/ccptinstall.lua +++ b/ccptinstall.lua @@ -6,29 +6,15 @@ ]] -- Read arguments -args = {...} +local args = {...} -- FILE MANIPULATION FUNCTIONS -- ---[[ Checks if file exists - @param String filepath: Filepath to check - @return boolean: Does the file exist? ---]] -function file_exists(filepath) - local f=io.open(filepath,"r") - if f~=nil then - io.close(f) - return true - else - return false - end -end - --[[ Stores a file in a desired location @param String filepath: Filepath where to create file (if file already exists, it gets overwritten) @param String content: Content to store in file --]] -function storeFile(filepath,content) - writefile = fs.open(filepath,"w") +local function storeFile(filepath,content) + local writefile = fs.open(filepath,"w") writefile.write(content) writefile.close() end @@ -38,9 +24,9 @@ end @param String createnew: (Optional) Content to store in new file and return if file does not exist. Can be nil. @return String|boolean content|error: Content of the file; If createnew is nil and file doesn't exist boolean false is returned --]] -function readFile(filepath,createnew) - readfile = fs.open(filepath,"r") - if readfile == nil then +local function readFile(filepath,createnew) + local readfile = fs.open(filepath,"r") + if not readfile then if not (createnew==nil) then storeFile(filepath,createnew) return createnew @@ -48,7 +34,7 @@ function readFile(filepath,createnew) return false end end - content = readfile.readAll() + local content = readfile.readAll() readfile.close() return content end @@ -57,7 +43,7 @@ end @param String filepath: Filepath where to create file (if file already exists, it gets overwritten) @param Table data: Table to store in file --]] -function storeData(filepath,data) +local function storeData(filepath,data) storeFile(filepath,textutils.serialize(data):gsub("\n","")) end @@ -66,7 +52,7 @@ end @param boolean createnew: If true, an empty table is stored in new file and returned if file does not exist. @return Table|boolean content|error: Table thats stored in the file; If createnew is false and file doesn't exist boolean false is returned --]] -function readData(filepath,createnew) +local function readData(filepath,createnew) if createnew then return textutils.unserialize(readFile(filepath,textutils.serialize({}):gsub("\n",""))) else @@ -79,14 +65,14 @@ end @param String url: The desired URL @return Table|boolean result|error: The result of the request; If the URL is not reachable, an error is printed in the terminal and boolean false is returned --]] -function gethttpresult(url) +local function gethttpresult(url) if not http.checkURL(url) then print("ERROR: Url '" .. url .. "' is blocked in config. Unable to fetch data.") return false end - result = http.get(url) - if result == nil then - print("ERROR: Unable to reach '" .. url .. "'") + local result,err = http.get(url) + if not result then + print("ERROR: Unable to reach '" .. url .. "' because '" .. err .. "'") return false end return result @@ -97,12 +83,13 @@ end @param String url: The desired URL @return nil|boolean nil|error: nil; If the URL is not reachable, an error is printed in the terminal and boolean false is returned --]] -function downloadfile(filepath,url) - result = gethttpresult(url) - if result == false then +local function downloadfile(filepath,url) + local result = gethttpresult(url) + if not result then return false end storeFile(filepath,result.readAll()) + return true end -- MISC HELPER FUNCTIONS -- @@ -111,7 +98,7 @@ end @param String needle: String to check wether another one starts with it @return boolean result: Wether the firest String starts with the second one ]]-- -function startsWith(haystack,needle) +local function startsWith(haystack,needle) return string.sub(haystack,1,string.len(needle))==needle end @@ -120,19 +107,19 @@ if (args[1]=="install") or (args[1]==nil) then print("[Installer] Well, hello there!") print("[Installer] Thank you for downloading the ComputerCraft Package Tool! Installing...") print("[Installer] Installing 'properprint' library...") - if downloadfile("lib/properprint","https://raw.githubusercontent.com/PentagonLP/properprint/main/properprint")== false then + if not downloadfile("lib/properprint","https://raw.githubusercontent.com/PentagonLP/properprint/main/properprint") then return false end print("[Installer] Successfully installed 'properprint'!") print("[Installer] Installing 'ccpt'...") - if downloadfile("ccpt","https://raw.githubusercontent.com/PentagonLP/ccpt/main/ccpt")==false then + if not downloadfile("ccpt","https://raw.githubusercontent.com/PentagonLP/ccpt/main/ccpt") then return false end print("[Installer] Successfully installed 'ccpt'!") print("[Installer] Running 'ccpt update'...") shell.run("ccpt","update") print("[Installer] Reading package data...") - packagedata = readData("/.ccpt/packagedata") + local packagedata = readData("/.ccpt/packagedata") print("[Installer] Storing installed packages...") storeData("/.ccpt/installedpackages",{ ccpt = packagedata["ccpt"]["newestversion"], @@ -141,7 +128,7 @@ if (args[1]=="install") or (args[1]==nil) then print("[Installer] 'ccpt' successfully installed!") elseif args[1]=="update" then print("[Installer] Updating 'ccpt'...") - if downloadfile("ccpt","https://raw.githubusercontent.com/PentagonLP/ccpt/main/ccpt")==false then + if not downloadfile("ccpt","https://raw.githubusercontent.com/PentagonLP/ccpt/main/ccpt") then return false end elseif args[1]=="remove" then @@ -149,12 +136,12 @@ elseif args[1]=="remove" then fs.delete("/ccpt") fs.delete("/.ccpt") shell.setCompletionFunction("ccpt", nil) - if file_exists("startup") and startsWith(startup,"-- ccpt: Seach for updates\nshell.run(\"ccpt\",\"startup\")") then + if fs.exists("startup") and startsWith(startup,"-- ccpt: Seach for updates\nshell.run(\"ccpt\",\"startup\")") then print("[Installer] Removing 'ccpt' from startup...") - startup = readFile("startup","") + local startup = readFile("startup","") storeFile("startup",string.sub(startup,56)) end print("[Installer] So long, and thanks for all the fish!") else print("[Installer] Invalid argument: " .. args[1]) -end \ No newline at end of file +end