Archives
Trending
Support
Login
clear text
XML
Django
JavaScript
MATLAB
C
C++
C#
Python
SQL
Shell
Bash
Markdown
YAML
JSON
HTML
CSS
PHP
Java
Ruby
Go
Rust
Swift
Kotlin
Arduino
TypeScript
Perl
Autohotkey
Lua
SQF
R
Scala
Haskell
Groovy
Dart
Clojure
VB.NET
Objective-C
PowerShell
Bash
CoffeeScript
Verilog
local owner = "Zonk1987" local repo = "CC-Tweaked" local apiUrl = "https://api.github.com/repos/" .. owner .. "/" .. repo .. "/contents/" local function clear() term.clear() term.setCursorPos(1, 1) end clear() if term.isColor() then term.setTextColor(colors.cyan) end print("=======================================") print(" Zonk's CC-Tweaked Installer ") print("=======================================") if term.isColor() then term.setTextColor(colors.white) end print("Fetching projects from GitHub...\n") -- Fetch root contents local response = http.get(apiUrl) if not response then if term.isColor() then term.setTextColor(colors.red) end print("Error: Could not connect to GitHub API.") print("Check your internet connection or HTTP API settings in CC.") return end local responseData = response.readAll() response.close() local data = textutils.unserializeJSON(responseData) if not data then if term.isColor() then term.setTextColor(colors.red) end print("Error parsing GitHub response.") return end if data.message and string.find(string.lower(data.message), "api rate limit") then if term.isColor() then term.setTextColor(colors.red) end print("GitHub API Rate Limit exceeded!") print("Please try again later.") return end local projects = {} for i, item in ipairs(data) do -- Only include directories, ignore hidden folders (.git) and the installer folder itself if item.type == "dir" and item.name ~= "installer" and not string.match(item.name, "^%.") then table.insert(projects, item) end end if #projects == 0 then print("No projects found in the repository.") return end while true do clear() if term.isColor() then term.setTextColor(colors.cyan) end print("=======================================") print(" Zonk's CC-Tweaked Installer ") print("=======================================") if term.isColor() then term.setTextColor(colors.white) end print("Select a project to install:\n") for i, proj in ipairs(projects) do if term.isColor() then term.setTextColor(colors.yellow) end term.write("[" .. i .. "] ") if term.isColor() then term.setTextColor(colors.white) end print(proj.name) end if term.isColor() then term.setTextColor(colors.red) end print("\n[0] Exit") if term.isColor() then term.setTextColor(colors.white) end term.write("\nChoice: ") local choice = tonumber(read()) if choice == 0 then print("Exiting...") return elseif choice and choice > 0 and choice <= #projects then local selected = projects[choice] print("\nFetching files for " .. selected.name .. "...") -- URL encode spaces in the path for the API call just in case local safePath = string.gsub(selected.path, " ", "%%20") local projRes = http.get(apiUrl .. safePath) if not projRes then if term.isColor() then term.setTextColor(colors.red) end print("Failed to get project contents.") os.sleep(2) else local projDataRaw = projRes.readAll() projRes.close() local projData = textutils.unserializeJSON(projDataRaw) if projData then local filesDownloaded = 0 for _, fileItem in ipairs(projData) do if fileItem.type == "file" then print("Downloading " .. fileItem.name .. "...") local fileRes = http.get(fileItem.download_url) if fileRes then local fileContent = fileRes.readAll() fileRes.close() local f = fs.open(fileItem.name, "w") f.write(fileContent) f.close() filesDownloaded = filesDownloaded + 1 else if term.isColor() then term.setTextColor(colors.red) end print("Failed to download " .. fileItem.name) if term.isColor() then term.setTextColor(colors.white) end end end end if term.isColor() then term.setTextColor(colors.green) end print("\nSuccessfully downloaded " .. filesDownloaded .. " files!") if term.isColor() then term.setTextColor(colors.yellow) end print("Rebooting computer in 3 seconds to apply startup.lua...") os.sleep(3) os.reboot() return else if term.isColor() then term.setTextColor(colors.red) end print("Failed to parse project data.") os.sleep(2) end end else if term.isColor() then term.setTextColor(colors.red) end print("Invalid choice!") if term.isColor() then term.setTextColor(colors.white) end os.sleep(1) end end
Mark as private (unlisted)
for 30 minutes
for 6 hours
for 1 day
for 1 week
for 1 month
for 1 year
everlasting (like CCCP)