summaryrefslogtreecommitdiffstats
path: root/src/wwwroot/libraries/fomantic/tasks/docs/build.js
blob: 9172c5ed2cfda7a12a84da277f6dd47df3ae6217 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
/*******************************
 Build Docs
 *******************************/

var
  gulp        = require('gulp'),

  // node dependencies
  console     = require('better-console'),
  fs          = require('fs'),
  map         = require('map-stream'),

  // gulp dependencies
  print       = require('gulp-print').default,

  // user config
  config      = require('../config/docs'),

  // install config
  tasks       = require('../config/tasks'),
  configSetup = require('../config/project/config'),
  install     = require('../config/project/install'),

  // metadata parsing
  metadata    = require('./metadata'),

  // build methods
  buildJS     = require('../build/javascript').buildJS,
  buildCSS    = require('../build/css').buildCSS,
  buildAssets = require('../build/assets').buildAssets,

  // shorthand
  log         = tasks.log
;


module.exports = function (callback) {

  // use a different config
  config = configSetup.addDerivedValues(config);

  // shorthand
  const globs  = config.globs;
  const output = config.paths.output;

  /*--------------
   Parse metadata
   ---------------*/

  function buildMetaData() {
    // parse all *.html.eco in docs repo, data will end up in
    // metadata.result object.  Note this assumes that the docs
    // repository is present and in proper directory location as
    // specified by docs.json.
    console.info('Building Metadata');
    return gulp.src(config.paths.template.eco + globs.eco)
      .pipe(map(metadata.parser))
      .on('end', function () {
        fs.mkdirSync(output.metadata, {recursive: true});
        fs.writeFileSync(output.metadata + '/metadata.json', JSON.stringify(metadata.result, null, 2));
      });
  }

  /*--------------
    Copy Examples
  ---------------*/

  function copyExample() {
    // copy src/ to server
    console.info('Copying examples');
    return gulp.src('examples/**/*.*')
      .pipe(gulp.dest(output.examples))
      .pipe(print(log.created));
  }


  /*--------------
     Copy Source
  ---------------*/

  function copyLess() {
    // copy src/ to server
    console.info('Copying LESS source');
    return gulp.src('src/**/*.*')
      .pipe(gulp.dest(output.less))
      .pipe(print(log.created));
  }


  /*--------------
        Build
  ---------------*/

  console.info('Building Semantic for docs');

  if (!install.isSetup()) {
    console.error('Cannot build files. Run "gulp install" to set-up Semantic');
    callback();
    return;
  }

  gulp.series(
    buildMetaData,
    copyExample,
    copyLess,
    (callback) => buildJS('docs', config, callback),
    (callback) => buildCSS('docs', config, {}, callback),
    (callback) => buildAssets(config, callback)
  )(callback);

};