mirror of
				https://github.com/LDDestroier/CC/
				synced 2025-10-31 15:32:59 +00:00 
			
		
		
		
	 f354bba3b2
			
		
	
	f354bba3b2
	
	
	
		
			
			Lua supports short-circuit evaluation, we can use it to speed up execution in some cases.
		
			
				
	
	
		
			55 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
| local function netrequire(_name, alwaysDownload, ...)
 | |
| 	assert(type(_name) == "string", "API name must be a string")
 | |
| 	local DL_path = ".netrequire_storage"
 | |
| 	
 | |
| 	local name
 | |
| 	if _name:sub(-4, -1) == ".lua" then
 | |
| 		name = _name:sub(1, -5)
 | |
| 	else
 | |
| 		name = _name
 | |
| 	end
 | |
| 	
 | |
| 	if (not alwaysDownload) and fs.exists(fs.combine(DL_path .. "/require", name)) then
 | |
| 		return loadfile(fs.combine(DL_path .. "/require", name))(...)
 | |
| 		
 | |
| 	elseif (not alwaysDownload) and fs.exists(fs.combine(DL_path .. "/loadAPI", name)) then
 | |
| 		os.loadAPI(fs.combine(DL_path .. "/loadAPI", name))
 | |
| 		return _ENV[fs.getName(name)]
 | |
| 		
 | |
| 	else
 | |
| 		local url = "https://github.com/LDDestroier/CC/raw/master/netrequire/" .. name
 | |
| 		local net = http.get(url)
 | |
| 		local description, creator
 | |
| 		if net then
 | |
| 			url = net.readLine()
 | |
| 			local useLoadAPI = net.readLine():sub(1, 4) == "true"
 | |
| 			creator = net.readLine()
 | |
| 			description = net.readAll()
 | |
| 			net.close()
 | |
| 			net = http.get(url)
 | |
| 			if net then
 | |
| 				local contents = net.readAll()
 | |
| 				net.close()
 | |
| 				if useLoadAPI then
 | |
| 					local file = fs.open(fs.combine(DL_path .. "/loadAPI", name), "w")
 | |
| 					file.write(contents)
 | |
| 					file.close()
 | |
| 					os.loadAPI(fs.combine(DL_path .. "/loadAPI", name))
 | |
| 					return _ENV[fs.getName(name)]
 | |
| 				else
 | |
| 					local file = fs.open(fs.combine(DL_path .. "/require", name), "w")
 | |
| 					file.write(contents)
 | |
| 					file.close()
 | |
| 					return loadstring(contents)(...)
 | |
| 				end
 | |
| 			else
 | |
| 				error("Couldn't connect to '" .. url .. "'")
 | |
| 			end
 | |
| 		else
 | |
| 			error("Cannot find any such API '" .. name .. "'")
 | |
| 		end
 | |
| 	end
 | |
| end
 | |
| 
 | |
| return netrequire
 |