BuildConfig.js 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. var os = require('os');
  2. var path = require('path');
  3. var spawnSync = require('child_process').spawnSync;
  4. var fs = require('fs-extra');
  5. // function from BuildCommon, checks to see if a file exists
  6. function programFileExists(filePath)
  7. {
  8. try
  9. {
  10. return fs.statSync(filePath).isFile();
  11. }
  12. catch (err)
  13. {
  14. return false;
  15. }
  16. }
  17. // checks to see if a folder exists
  18. function programDirectoryExists(filePath)
  19. {
  20. try
  21. {
  22. return fs.statSync(filePath).isDirectory();
  23. }
  24. catch (err)
  25. {
  26. return false;
  27. }
  28. }
  29. function processOptions(config) {
  30. config["config"] = config["debug"] ? "Debug" : "Release";
  31. // AtomicNET
  32. if (config["nonet"]) {
  33. config["with-atomicnet"] = false;
  34. } else {
  35. if (os.platform() == "win32") {
  36. config["with-atomicnet"] = true;
  37. } else if (os.platform() == "darwin") {
  38. // see if xbuild is available
  39. config["with-atomicnet"] = false;
  40. if ( spawnSync)
  41. config["with-atomicnet"] = spawnSync("which", ["xbuild"]).status == 1 ? false : true;
  42. } else if (os.platform() == "linux") { // see if xbuild is available on linux
  43. var hasXbuild = programFileExists('/usr/bin/xbuild');
  44. var hasMonoFile = programFileExists('/usr/bin/mono');
  45. var hasMonoDir = programDirectoryExists('/usr/bin/mono/');
  46. config["with-atomicnet"] = hasXbuild && ( hasMonoFile || hasMonoDir );
  47. }
  48. }
  49. // paths
  50. config.atomicRoot = path.resolve(__dirname, "../..") + "/";
  51. config.artifactsRoot = config.atomicRoot + "Artifacts/";
  52. config.editorAppFolder = (os.platform() == "darwin") ? config.artifactsRoot + "/AtomicEditor/AtomicEditor.app/" : config.artifactsRoot + "AtomicEditor/";
  53. config.toolDataFolder = config.editorAppFolder + (os.platform() == "darwin" ? "Contents/Resources/ToolData/" : "Resources/ToolData/");
  54. // jenkins, TODO: abstract anything that requires jenkins
  55. config.jenkins = process.env.ATOMIC_JENKINS_BUILD == 1;
  56. config.buildSHA = process.env.ATOMIC_BUILD_SHA ? process.env.ATOMIC_BUILD_SHA : "UNKNOWN_BUILD_SHA";
  57. config.devIDApp = process.env.ATOMIC_DEV_ID_APP ? process.env.ATOMIC_DEV_ID_APP : "";
  58. config.pfxFile = process.env.ATOMIC_PFX_FILE ? process.env.ATOMIC_PFX_FILE : "";
  59. config.pfxPW = process.env.ATOMIC_PFX_PW ? process.env.ATOMIC_PFX_PW : "";
  60. config.certSubjectName = process.env.ATOMIC_CERT_SUBJECTNAME ? process.env.ATOMIC_CERT_SUBJECTNAME : "";
  61. return config;
  62. }
  63. exports = module.exports = processOptions(require('minimist')(process.argv.slice(2), {
  64. "default" : {
  65. "noclean" : false,
  66. "debug" : false,
  67. "nonet" : false,
  68. "with-web" : false,
  69. "with-android" : false,
  70. "with-ios" : false,
  71. "with-docs" : false,
  72. "noexamples" : false,
  73. "package" : false
  74. }
  75. }));