build.js 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. /*******************************
  2. Build Docs
  3. *******************************/
  4. var
  5. gulp = require('gulp'),
  6. // node dependencies
  7. console = require('better-console'),
  8. fs = require('fs'),
  9. map = require('map-stream'),
  10. // gulp dependencies
  11. print = require('gulp-print').default,
  12. // user config
  13. config = require('../config/docs'),
  14. // install config
  15. tasks = require('../config/tasks'),
  16. configSetup = require('../config/project/config'),
  17. install = require('../config/project/install'),
  18. // metadata parsing
  19. metadata = require('./metadata'),
  20. // build methods
  21. buildJS = require('../build/javascript').buildJS,
  22. buildCSS = require('../build/css').buildCSS,
  23. buildAssets = require('../build/assets').buildAssets,
  24. // shorthand
  25. log = tasks.log
  26. ;
  27. module.exports = function (callback) {
  28. // use a different config
  29. config = configSetup.addDerivedValues(config);
  30. // shorthand
  31. const globs = config.globs;
  32. const output = config.paths.output;
  33. /*--------------
  34. Parse metadata
  35. ---------------*/
  36. function buildMetaData() {
  37. // parse all *.html.eco in docs repo, data will end up in
  38. // metadata.result object. Note this assumes that the docs
  39. // repository is present and in proper directory location as
  40. // specified by docs.json.
  41. console.info('Building Metadata');
  42. return gulp.src(config.paths.template.eco + globs.eco)
  43. .pipe(map(metadata.parser))
  44. .on('end', function () {
  45. fs.mkdirSync(output.metadata, {recursive: true});
  46. fs.writeFileSync(output.metadata + '/metadata.json', JSON.stringify(metadata.result, null, 2));
  47. });
  48. }
  49. /*--------------
  50. Copy Examples
  51. ---------------*/
  52. function copyExample() {
  53. // copy src/ to server
  54. console.info('Copying examples');
  55. return gulp.src('examples/**/*.*')
  56. .pipe(gulp.dest(output.examples))
  57. .pipe(print(log.created));
  58. }
  59. /*--------------
  60. Copy Source
  61. ---------------*/
  62. function copyLess() {
  63. // copy src/ to server
  64. console.info('Copying LESS source');
  65. return gulp.src('src/**/*.*')
  66. .pipe(gulp.dest(output.less))
  67. .pipe(print(log.created));
  68. }
  69. /*--------------
  70. Build
  71. ---------------*/
  72. console.info('Building Semantic for docs');
  73. if (!install.isSetup()) {
  74. console.error('Cannot build files. Run "gulp install" to set-up Semantic');
  75. callback();
  76. return;
  77. }
  78. gulp.series(
  79. buildMetaData,
  80. copyExample,
  81. copyLess,
  82. (callback) => buildJS('docs', config, callback),
  83. (callback) => buildCSS('docs', config, {}, callback),
  84. (callback) => buildAssets(config, callback)
  85. )(callback);
  86. };