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. if (fs.existsSync(".git")) {
  14. requestInstance = await cb(remoteUrl, function(error, response, body) {
  15. if (error != null){
  16. checkMirror();
  17. }else{
  18. diffVersion(body);
  19. };
  20. });
  21. function checkMirror(){
  22. requestInstance2 = request(remoteUrl2, function (error, response, body) {
  23. diffVersion(body);
  24. });
  25. };
  26. function diffVersion(body){
  27. remoteVersion = body.split('<li class="L3" rel="L3">').pop().split('</li>')[0];
  28. remoteVersion = remoteVersion.split('&#34;version&#34;: &#34;').pop().split('&#34;,')[0];
  29. localVersion = fs.readFileSync(localpackage, "utf8");
  30. localVersion = localVersion.split('"name":').pop().split('"description":')[0];
  31. localVersion = localVersion.split('"version"').pop().split('"')[1];
  32. if (remoteVersion != localVersion){
  33. checkversion = "required";
  34. }else{
  35. checkversion = "";
  36. };
  37. callback(checkversion);
  38. };
  39. };
  40. })();
  41. };