negamartin

XT downloader/updater

May 11th, 2015
247
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.59 KB | None | 0 0
  1. --XT downloader/updater code
  2. --Should be placed before programs that use XT
  3. repeat
  4.     cprint=print;
  5.     cprintErr=printError;
  6.    
  7.     --cprint=function()end          --Uncomment these if you'd like the updater
  8.     --cprintErr=function()end       --to not print log messages (unrecommended)
  9.    
  10.     local dontUpdate=false;         --Set this to true if you only want the downloader to download, not update or check for updates
  11.    
  12.     local ver;
  13.     if xt then
  14.         if type(xt.version)=="number" then
  15.             if dontUpdate then
  16.                 cprint("Set to not-update mode, using offline XT version");
  17.                 cprintErr("Beware of errors");
  18.                 break;
  19.             end
  20.             ver=xt.version;
  21.         end
  22.     elseif fs.exists("xt") then
  23.         local handle=fs.open("xt","r");
  24.         ver=tonumber(handle.readLine():sub(7,9));
  25.         handle.close();
  26.         if ver==nil then
  27.             cprint("A non-XtraTurtles file has been found on \"xt\".");
  28.             cprint("Overwrite it? (\"yes\"/\"no\")");
  29.             local res=read();
  30.             if res~="yes" then
  31.                 print("Ok.");
  32.                 error();
  33.             end
  34.         else
  35.             if dontUpdate then
  36.                 cprint("Set to not-update mode, using downloaded XT version");
  37.                 cprintErr("Beware of errors");
  38.             end
  39.         end
  40.     end
  41.    
  42.     if not dontUpdate then
  43.         cprint("Checking for XT updates...");
  44.         local response=http.get("http://pastebin.com/raw.php?i=L5jF84nW");
  45.         if response then
  46.             local newVer=tonumber(response.readLine());
  47.             if newVer==nil then
  48.                 response.close();
  49.                 cprint("Corrupted online version.");
  50.                 if ver==nil then
  51.                     error();
  52.                 else
  53.                     cprint("But there is an offline version, going on anyways");
  54.                     cprintErr("Beware of errors");
  55.                 end
  56.             else
  57.                 if type(ver)=="number" then
  58.                     if ver>=newVer then
  59.                         cprint("XT up-to-date");
  60.                         break;
  61.                     end
  62.                 end
  63.                 local xtresp=http.get("http://pastebin.com/raw.php?i="..response.readLine());
  64.                 response.close();
  65.                 if xtresp then
  66.                     local handle=fs.open("xt","w");
  67.                     handle.write(xtresp.readAll());
  68.                     handle.close();
  69.                     xtresp.close();
  70.                     if ver then
  71.                         cprint("XT "..newVer.." downloaded. Previous was "..ver);
  72.                     else
  73.                         cprint("XT "..newVer.." downloaded. Previous didnt have a version number/didnt exist");
  74.                     end
  75.                 else
  76.                     cprint("Error downloading new version, but going on anyways.");
  77.                     cprintErr("Beware of errors");
  78.                 end
  79.             end
  80.         else
  81.             if type(ver)=="number" then
  82.                 cprint("XT found, cant check for updates, but going on anyways.");
  83.                 cprintErr("Beware of errors");
  84.             else
  85.                 cprint("XT not found and cant download it");
  86.                 error();
  87.             end
  88.         end
  89.     end
  90. until true
  91. if not xt then
  92.     os.loadAPI("xt");
  93. end
  94. --End of XT updater/downloader
Add Comment
Please, Sign In to add comment