diff --git a/Applications/github.lua b/Applications/github.lua new file mode 100644 index 00000000..ca14af09 --- /dev/null +++ b/Applications/github.lua @@ -0,0 +1,78 @@ + +local internet = require("internet") +local fs = require("filesystem") +local seri = require("serialization") +local shell = require("shell") + +local args, options = shell.parse(...) + +if #args < 3 then + io.write("\nИспользование: github get <ссылка> <путь сохранения>\n") + io.write(" -q: Тихий режим, текстовая информация об успехе не выводится.\n\n") + io.write(" Пример: github get IgorTimofeev/OpenComputers/master/Applications.txt Applications.txt\n") + return +end + +local quiet = false +local ssilka, put = args[2], args[3] +if args[1] == "quiet" then quiet = true end + +local userUrl = "https://raw.githubusercontent.com/" + +--pastebin run SthviZvU IgorTimofeev/OpenComputers/master/Applications.txt hehe.txt + +------------------------------------------------------------------------------------------ + +local function info(text) + if not quiet then print(text) end +end + +--ЗАГРУЗОЧКА С ГИТХАБА +local function getFromGitHub(url, path) + local sContent = "" + + info(" ") + info("Подключаюсь к GitHub по адресу "..url) + + local result, response = pcall(internet.request, url) + if not result then + return nil + end + + info(" ") + info("Успех!") + info(" ") + + if result == "" or result == " " or result == "\n" then info("Файл пустой, либо ссылка неверная."); return end + + if fs.exists(path) then + info("Файл уже существует, удаляю старый.") + fs.remove(path) + end + fs.makeDirectory(fs.path(path)) + local file = io.open(path, "w") + + for chunk in response do + file:write(chunk) + sContent = sContent .. chunk + end + + file:close() + info("Файл загружен и находится в /"..path) + info(" ") + return sContent +end + +--БЕЗОПАСНАЯ ЗАГРУЗОЧКА +local function getFromGitHubSafely(url, path) + local success, sRepos = pcall(getFromGitHub, url, path) + if not success then + io.stderr:write("Не удалось подключиться по данной ссылке. Вероятно, она неверная, либо отсутствует подключение к Интернету.") + return nil + end + return sRepos +end + +getFromGitHub(userUrl..ssilka, put) + +