atomictool.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. var Q = require("q");
  2. var fs = require("fs");
  3. var os = require("os");
  4. var path = require("path");
  5. var spawn = require("child_process").spawn;
  6. var cli = require ("atomic-cli")
  7. try {
  8. var platform_cli = require('atomic-cli-mac');
  9. }
  10. catch (e) {
  11. console.log(e);
  12. }
  13. var mode = process.env.ATOMIC_GAME_ENGINE_ENV || 'production';
  14. if (mode == 'dev')
  15. platform_cli.ATOMICTOOL_BIN = "/Users/josh/Dev/atomic/AtomicGameEngine-build/Source/AtomicTool/AtomicTool"
  16. // Commands ----------------------
  17. var newProject = function(folder) {
  18. return atomictool(["new", folder], {output:true});
  19. }
  20. var addPlatform = function (platform) {
  21. return atomictool(["platform-add", platform], {output:true});
  22. };
  23. var build = function (platform) {
  24. console.log("building");
  25. return atomictool(["build", platform], {output:true});
  26. };
  27. var run = function (platform, opts) {
  28. opts = opts || {};
  29. var debug = opts.debug;
  30. var run = function () {
  31. switch (platform) {
  32. case "web":
  33. var url = "http://localhost:" + HTTP_PORT + "/AtomicPlayer.html";
  34. console.log("Launching: " + url);
  35. var open = require("open");
  36. open(url);
  37. break;
  38. case "mac":
  39. var open = require("open");
  40. open(path.resolve("Build/Mac-Build/AtomicPlayer.app"));
  41. break;
  42. }
  43. };
  44. return opts.noBuild ? run(platform) : build([platform], opts).then(function () {
  45. return run();
  46. });
  47. };
  48. // Utils --------------
  49. var exec = function (command, flags, opts) {
  50. opts = opts || {};
  51. if (opts.verbose !== false) {
  52. console.log([command].concat(flags).join(" "));
  53. }
  54. var deferred = Q.defer();
  55. var child = spawn(command, flags, {stdio: (opts.output === false) ? "ignore" : "inherit"});
  56. child.on("close", function (code) {
  57. if (code && opts.check !== false) {
  58. deferred.reject();
  59. }
  60. deferred.resolve(code);
  61. });
  62. child.on("error", function (error) {
  63. deferred.reject(error);
  64. });
  65. return deferred.promise;
  66. };
  67. var atomictool = function (flags, opts) {
  68. opts = opts || {};
  69. flags.unshift(platform_cli.ATOMICEDITOR_DATADIR);
  70. flags.unshift("--cli-data-path");
  71. return exec(platform_cli.ATOMICTOOL_BIN, flags, opts);
  72. };
  73. module.exports = {
  74. "atomictool" : atomictool,
  75. "newProject" : newProject,
  76. "addPlatform" : addPlatform,
  77. "build" : build,
  78. "run" : run
  79. }