ci-build.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. const package = require('../package.json');
  2. const electronBuilder = require('../electron-builder.json');
  3. const { promises } = require('fs');
  4. const { resolve } = require('path');
  5. const { run } = require('./utils');
  6. const isNightly = package.version.indexOf('nightly') !== -1;
  7. const getPlatform = () => {
  8. if (process.platform === 'win32') return 'windows';
  9. else if (process.platform === 'darwin') return 'mac';
  10. return process.platform;
  11. };
  12. const getEnv = (name) => process.env[name.toUpperCase()] || null;
  13. const setEnv = (name, value) => {
  14. if (value) {
  15. process.env[name.toUpperCase()] = value.toString();
  16. }
  17. };
  18. const getInput = (name) => {
  19. return getEnv(`INPUT_${name}`);
  20. };
  21. (async () => {
  22. try {
  23. if (isNightly) {
  24. await promises.copyFile(
  25. resolve(__dirname, '../package.json'),
  26. resolve(__dirname, '../temp-package.json'),
  27. );
  28. await promises.copyFile(
  29. resolve(__dirname, '../electron-builder.json'),
  30. resolve(__dirname, '../temp-electron-builder.json'),
  31. );
  32. const newPkg = {
  33. ...package,
  34. name: 'wexond-nightly',
  35. repository: {
  36. type: 'git',
  37. url: 'git+https://github.com/wexond/desktop-nightly.git',
  38. },
  39. };
  40. await promises.writeFile(
  41. resolve(__dirname, '../package.json'),
  42. JSON.stringify(newPkg),
  43. );
  44. const newEBConfig = {
  45. ...electronBuilder,
  46. appId: 'org.wexond.wexond-nightly',
  47. productName: 'Wexond Nightly',
  48. directories: {
  49. output: 'dist',
  50. buildResources: 'static/nightly-icons',
  51. },
  52. };
  53. await promises.writeFile(
  54. resolve(__dirname, '../electron-builder.json'),
  55. JSON.stringify(newEBConfig),
  56. );
  57. }
  58. const release =
  59. (getEnv('release') === 'true' || getEnv('release') === true) &&
  60. getEnv('GH_TOKEN');
  61. const platform = getPlatform();
  62. if (platform === 'mac') {
  63. setEnv('CSC_LINK', getEnv('mac_certs'));
  64. setEnv('CSC_KEY_PASSWORD', getEnv('mac_certs_password'));
  65. } else if (platform === 'windows') {
  66. setEnv('CSC_LINK', getEnv('windows_certs'));
  67. setEnv('CSC_KEY_PASSWORD', getEnv('windows_certs_password'));
  68. }
  69. run('yarn run build');
  70. run(
  71. `npx --no-install electron-builder --${platform} ${
  72. release ? '-p always' : ''
  73. }`,
  74. );
  75. } catch (e) {
  76. console.error(e);
  77. process.exit(1);
  78. }
  79. })();