Jakefile.js 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  1. /* global jake:true, desc:true, task:true, complete:true, require:true, console:true, process:true */
  2. /* jshint unused:false */
  3. var fs = require('fs');
  4. var path = require('path');
  5. var exec = require('child_process').exec;
  6. var tools = require('./src/moxie/build/tools');
  7. var utils = require('./src/moxie/build/utils');
  8. var wiki = require('./src/moxie/build/wiki');
  9. var mkjs = require('./src/moxie/build/mkjs');
  10. var copyright = [
  11. "/**",
  12. " * Plupload - multi-runtime File Uploader",
  13. " * v@@version@@",
  14. " *",
  15. " * Copyright 2013, Moxiecode Systems AB",
  16. " * Released under GPL License.",
  17. " *",
  18. " * License: http://www.plupload.com/license",
  19. " * Contributing: http://www.plupload.com/contributing",
  20. " *",
  21. " * Date: @@releasedate@@",
  22. " */"
  23. ].join("\n");
  24. desc("Default build task");
  25. task("default", ["moxie", "mkjs", "docs"], function (params) {});
  26. desc("Build release package");
  27. task("release", ["default", "package"], function (params) {});
  28. desc("Build mOxie");
  29. task("moxie", [], function (params) {
  30. var moxieDir = "./src/moxie";
  31. var currentDir = process.cwd();
  32. process.chdir(moxieDir);
  33. exec("jake", function(error, stdout, stderr) {
  34. if (error) {
  35. console.info(error);
  36. }
  37. process.chdir(currentDir);
  38. complete();
  39. });
  40. }, true);
  41. desc("Minify JS files");
  42. task("mkjs", [], function (i18n) {
  43. var Instrument = require('coverjs').Instrument;
  44. var uglify = tools.uglify;
  45. var targetDir = "./js", moxieDir = "src/moxie";
  46. // Clear previous versions
  47. if (fs.existsSync(targetDir)) {
  48. jake.rmRf(targetDir);
  49. }
  50. fs.mkdirSync(targetDir, 0755);
  51. // Copy compiled moxie files
  52. tools.copySync(moxieDir + "/bin/flash/Moxie.swf", "js/Moxie.swf");
  53. tools.copySync(moxieDir + "/bin/silverlight/Moxie.xap", "js/Moxie.xap");
  54. tools.copySync(moxieDir + "/bin/js/moxie.min.js", "js/moxie.min.js");
  55. tools.copySync(moxieDir + "/bin/js/moxie.js", "js/moxie.js");
  56. // Include Plupload source
  57. var sourceCode = fs.readFileSync('./src/plupload.js').toString();
  58. if (process.env.umd != 'no') {
  59. fs.writeFileSync(targetDir + '/plupload.dev.js', mkjs.addUMD("plupload", sourceCode, ['moxie']));
  60. } else {
  61. fs.writeFileSync(targetDir + '/plupload.dev.js', sourceCode);
  62. }
  63. // Minify Plupload and combine with mOxie
  64. uglify(targetDir + '/plupload.dev.js', targetDir + "/plupload.min.js");
  65. var info = require("./package.json");
  66. info.copyright = copyright;
  67. tools.addReleaseDetailsTo(targetDir + "/plupload.dev.js", info);
  68. tools.addReleaseDetailsTo(targetDir + "/plupload.min.js", info);
  69. var code = "";
  70. code += fs.readFileSync(targetDir + "/moxie.min.js") + "\n";
  71. code += fs.readFileSync(targetDir + "/plupload.min.js");
  72. fs.writeFileSync(targetDir + "/plupload.full.min.js", code);
  73. // Instrument Plupload code
  74. fs.writeFileSync(targetDir + '/plupload.cov.js', new Instrument(sourceCode, {
  75. name: 'Plupload'
  76. }).instrument());
  77. // Copy UI Plupload
  78. jake.cpR("./src/jquery.ui.plupload", targetDir + "/jquery.ui.plupload", {});
  79. uglify(targetDir + '/jquery.ui.plupload/jquery.ui.plupload.js', targetDir + "/jquery.ui.plupload/jquery.ui.plupload.min.js");
  80. // Copy Queue Plupload
  81. jake.cpR("./src/jquery.plupload.queue", targetDir + "/jquery.plupload.queue", {});
  82. uglify(targetDir + '/jquery.plupload.queue/jquery.plupload.queue.js', targetDir + "/jquery.plupload.queue/jquery.plupload.queue.min.js");
  83. // Add I18n files
  84. if (i18n) {
  85. process.env.auth = "moxieuser:12345";
  86. process.env.to = "./js/i18n";
  87. jake.Task['i18n'].invoke();
  88. }
  89. });
  90. desc("Language tools");
  91. task("i18n", [], function(params) {
  92. var i18n = require('./build/i18n');
  93. switch (params) {
  94. case 'extract':
  95. var from = process.env.from || ['./src/plupload.js', './src/jquery.ui.plupload/jquery.ui.plupload.js', './src/jquery.plupload.queue/jquery.plupload.queue.js'];
  96. var to = process.env.to || './tmp/en.po';
  97. i18n.extract(from, to);
  98. break;
  99. case 'toPO':
  100. // srcLang is required here, e.g.: jake i18n[toPO] srcLang=tmp/en.pot from=js/i18n/*.js
  101. var from = process.env.from;
  102. var to = process.env.to || './tmp/i18n';
  103. i18n.toPot(from, to);
  104. break;
  105. case 'pull':
  106. default:
  107. var auth = (process.env.auth || "moxieuser:12345").split(':');
  108. var to = process.env.to || './tmp/i18n';
  109. i18n.pull(utils.format("https://%s:%s@www.transifex.com/api/2/project/plupload/resource/core/", auth[0], auth[1]), to, complete);
  110. return;
  111. }
  112. complete(); // call complete manually
  113. }, true);
  114. desc("Generate documentation using YUIDoc");
  115. task("docs", [], function (params) {
  116. var yuidoc = tools.yuidoc;
  117. yuidoc(["src", "src/jquery.plupload.queue", "src/jquery.ui.plupload"], "docs", {
  118. norecurse: true
  119. });
  120. }, true);
  121. desc("Generate wiki pages");
  122. task("wiki", ["docs"], function() {
  123. wiki("https://github.com/moxiecode/plupload.wiki.git", "wiki", "docs");
  124. });
  125. desc("Runs JSHint on source files");
  126. task("jshint", [], function (params) {
  127. var jshint = tools.jshint;
  128. jshint("src", {
  129. curly: true
  130. });
  131. });
  132. desc("Package library");
  133. task("package", [], function (params) {
  134. var zip = tools.zip;
  135. var info = require("./package.json");
  136. var tmpDir = "./tmp";
  137. if (fs.existsSync(tmpDir)) {
  138. jake.rmRf(tmpDir);
  139. }
  140. fs.mkdirSync(tmpDir, 0755);
  141. var suffix = info.version.replace(/\./g, '_');
  142. if (/(?:beta|alpha)/.test(suffix)) {
  143. var dateFormat = require('dateformat');
  144. // If some public test build, append build number
  145. suffix += "." + dateFormat(new Date(), "yymmddHHMM", true);
  146. }
  147. zip([
  148. "js/**/*",
  149. "examples/**/*",
  150. "README.md",
  151. "LICENSE.txt"
  152. ], path.join(tmpDir, utils.format("plupload_%s.zip", suffix)), complete);
  153. }, true);
  154. desc("Create NuGet package");
  155. task('mknuget', [], function() {
  156. var mknuget = require('./src/moxie/build/mknuget');
  157. mknuget.pack(require('./package.json'), function(err, nugetPath) {
  158. console.info(nugetPath);
  159. complete();
  160. });
  161. }, true);