updater.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. const request = require("request");
  2. const fs = require("fs");
  3. const path = require("path");
  4. const
  5. promisify = require('util').promisify,
  6. cb = promisify(request);
  7. const localpackage = path.join("package.json");
  8. const remoteUrl = "https://code.03c8.net/KrakensLab/oasis/src/master/package.json" // Official SNH-Oasis
  9. const remoteUrl2 = "https://github.com/epsylon/oasis/blob/main/package.json" // Mirror SNH-Oasis
  10. let requestInstance;
  11. exports.getRemoteVersion = function(callback){
  12. (async () => {
  13. requestInstance = await cb(remoteUrl, function(error, response, body) {
  14. if (error != null){
  15. checkMirror();
  16. }else{
  17. diffVersion(body);
  18. };
  19. });
  20. function checkMirror(){
  21. requestInstance2 = request(remoteUrl2, function (error, response, body) {
  22. diffVersion(body);
  23. });
  24. };
  25. function diffVersion(body){
  26. remoteVersion = body.split('<li class="L3" rel="L3">').pop().split('</li>')[0];
  27. remoteVersion = remoteVersion.split('&#34;version&#34;: &#34;').pop().split('&#34;,')[0];
  28. localVersion = fs.readFileSync(localpackage, "utf8");
  29. localVersion = localVersion.split('"name":').pop().split('"description":')[0];
  30. localVersion = localVersion.split('"version"').pop().split('"')[1];
  31. if (remoteVersion != localVersion){
  32. checkversion = "required";
  33. }else{
  34. checkversion = "";
  35. };
  36. callback(checkversion);
  37. };
  38. })();
  39. };