utils.js 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. const { GitProcess } = require('dugite');
  2. const fs = require('fs');
  3. const path = require('path');
  4. const ELECTRON_DIR = path.resolve(__dirname, '..', '..');
  5. const SRC_DIR = path.resolve(ELECTRON_DIR, '..');
  6. const OUT_DIR = process.env.ELECTRON_OUT_DIR || 'Debug';
  7. require('colors');
  8. const pass = '\u2713'.green;
  9. const fail = '\u2717'.red;
  10. function getElectronExec () {
  11. switch (process.platform) {
  12. case 'darwin':
  13. return `out/${OUT_DIR}/Electron.app/Contents/MacOS/Electron`;
  14. case 'win32':
  15. return `out/${OUT_DIR}/electron.exe`;
  16. case 'linux':
  17. return `out/${OUT_DIR}/electron`;
  18. default:
  19. throw new Error('Unknown platform');
  20. }
  21. }
  22. function getAbsoluteElectronExec () {
  23. return path.resolve(SRC_DIR, getElectronExec());
  24. }
  25. async function handleGitCall (args, gitDir) {
  26. const details = await GitProcess.exec(args, gitDir);
  27. if (details.exitCode === 0) {
  28. return details.stdout.replace(/^\*|\s+|\s+$/, '');
  29. } else {
  30. const error = GitProcess.parseError(details.stderr);
  31. console.log(`${fail} couldn't parse git process call: `, error);
  32. process.exit(1);
  33. }
  34. }
  35. async function getCurrentBranch (gitDir) {
  36. let branch = await handleGitCall(['rev-parse', '--abbrev-ref', 'HEAD'], gitDir);
  37. if (branch !== 'master' && !branch.match(/[0-9]+-[0-9]+-x/)) {
  38. const lastCommit = await handleGitCall(['rev-parse', 'HEAD'], gitDir);
  39. const branches = (await handleGitCall([
  40. 'branch',
  41. '--contains',
  42. lastCommit,
  43. '--remote'
  44. ], gitDir)).split('\n');
  45. branch = branches.filter(b => b.trim() === 'master' || b.match(/[0-9]+-[0-9]+-x/))[0];
  46. if (!branch) {
  47. console.log(`${fail} no release branch exists for this ref`);
  48. process.exit(1);
  49. }
  50. if (branch.startsWith('origin/')) branch = branch.substr('origin/'.length);
  51. }
  52. return branch.trim();
  53. }
  54. module.exports = {
  55. getCurrentBranch,
  56. getElectronExec,
  57. getAbsoluteElectronExec,
  58. ELECTRON_DIR,
  59. OUT_DIR,
  60. SRC_DIR
  61. };