UNPKG

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