index.js 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. const execa = require('execa');
  2. const superagent = require('superagent');
  3. let addon = './discord_utils.node'
  4. if(process.platform === "linux"){
  5. addon = './discord_utils_linux.node'
  6. }
  7. module.exports = require(addon);
  8. module.exports.clearCandidateGamesCallback = module.exports.setCandidateGamesCallback;
  9. function parseNvidiaSmiOutput(result) {
  10. if (!result || !result.stdout) {
  11. return {error: 'nvidia-smi produced no output'};
  12. }
  13. const match = result.stdout.match(/Driver Version: (\d+)\.(\d+)/);
  14. if (match.length === 3) {
  15. return {major: parseInt(match[1], 10), minor: parseInt(match[2], 10)};
  16. } else {
  17. return {error: 'failed to parse nvidia-smi output'};
  18. }
  19. }
  20. module.exports.getGPUDriverVersions = async () => {
  21. if (process.platform !== 'win32') {
  22. return {};
  23. }
  24. const result = {};
  25. const nvidiaSmiPath = `${process.env['ProgramW6432']}/NVIDIA Corporation/NVSMI/nvidia-smi.exe`;
  26. try {
  27. result.nvidia = parseNvidiaSmiOutput(await execa(nvidiaSmiPath, []));
  28. } catch (e) {
  29. result.nvidia = {error: e.toString()};
  30. }
  31. return result;
  32. };
  33. module.exports.submitLiveCrashReport = async (channel, sentryMetadata) => {
  34. const path = module.exports._generateLiveMinidump();
  35. if (!path) {
  36. return null;
  37. }
  38. await superagent
  39. .post('https://sentry.io/api/146342/minidump/?sentry_key=f11e8c3e62cb46b5a006c339b2086ba3')
  40. .attach('upload_file_minidump', path)
  41. .field('channel', channel)
  42. .field('sentry', JSON.stringify(sentryMetadata));
  43. };