UNPKG

3.96 kBJavaScriptView Raw
1// Generated by CoffeeScript 1.12.7
2(function() {
3 var Dicts, HbHelper, Metalsmith, Nav, Plugins, SwigHelper, _, consolidate, defaultPartialsSearch, dynamic, filenameToRef, fs, headings, inplace, layouts, markdown, path, permalinks, prefixoid, ref, refToFilename,
4 slice = [].slice;
5
6 fs = require('fs');
7
8 path = require('path');
9
10 _ = require('lodash');
11
12 consolidate = require('consolidate');
13
14 Metalsmith = require('metalsmith');
15
16 dynamic = require('metalsmith-dynamic');
17
18 markdown = require('metalsmith-markdown');
19
20 permalinks = require('metalsmith-permalinks');
21
22 layouts = require('metalsmith-layouts');
23
24 inplace = require('metalsmith-in-place');
25
26 headings = require('metalsmith-headings');
27
28 prefixoid = require('metalsmith-prefixoid');
29
30 Plugins = require('./metalsmith-plugins');
31
32 defaultPartialsSearch = require('@resin.io/doxx-utils').defaultPartialsSearch;
33
34 HbHelper = require('@resin.io/doxx-handlebars-helper');
35
36 require('handlebars-helpers')({
37 handlebars: HbHelper.Handlebars
38 });
39
40 require('./extra-handlebars-helpers')({
41 handlebars: HbHelper.Handlebars
42 });
43
44 Nav = require('./nav');
45
46 Dicts = require('./dictionaries');
47
48 SwigHelper = require('./swig-helper');
49
50 ref = require('./util'), refToFilename = ref.refToFilename, filenameToRef = ref.filenameToRef;
51
52 module.exports = function(cb) {
53 var config, metalsmith, navTree, plugins, use;
54 config = this.config;
55 navTree = null;
56 if (config.parseNav) {
57 navTree = Nav.parse(config);
58 }
59 plugins = Plugins(config, navTree);
60 SwigHelper.register(consolidate, config);
61 HbHelper.registerConsolidate(consolidate, {
62 beforeRun: function() {
63 if (!this.dynamic) {
64 return console.warn("Warning! Using import in non-dynamic page " + this.ref + ".");
65 }
66 }
67 });
68 console.log('Building HTML...');
69 metalsmith = Metalsmith(config.rootDir).source(config.sourceDir).destination(config.destDir);
70 use = function() {
71 var condition, plugin, pluginArgs;
72 condition = arguments[0], plugin = arguments[1], pluginArgs = 3 <= arguments.length ? slice.call(arguments, 2) : [];
73 if (condition) {
74 return metalsmith = metalsmith.use(plugin.apply(null, pluginArgs));
75 }
76 };
77 use(true, plugins.skipPrivate);
78 use(true, defaultPartialsSearch);
79 use(true, dynamic, {
80 dictionaries: Dicts(config),
81 populateFields: ['$partials_search'],
82 tokenizeFields: ['$switch_text'],
83 refToFilename: refToFilename,
84 filenameToRef: filenameToRef
85 });
86 use(true, plugins.populateFileMeta);
87 use(config.parseNav, plugins.parseNav);
88 use(config.parseNav, plugins.populateFileNavMeta);
89 use(config.serializeNav, plugins.serializeNav);
90 use(true, inplace, {
91 engine: 'handlebars',
92 pattern: '**/*.' + config.docsExt,
93 partials: config.partialsDir
94 });
95 use(config.buildLunrIndex, plugins.buildSearchIndex);
96 use(true, markdown);
97 use(true, permalinks);
98 use(true, headings, 'h2');
99 use(true, layouts, {
100 engine: 'swig',
101 directory: config.templatesDir,
102 "default": config.defaultTemplate,
103 locals: this.getLocals({
104 nav: navTree
105 })
106 });
107 if (config.pathPrefix) {
108 use(true, prefixoid, {
109 prefix: config.pathPrefix
110 });
111 use(true, prefixoid, {
112 prefix: config.pathPrefix,
113 tag: 'img',
114 attr: 'src'
115 });
116 use(true, prefixoid, {
117 prefix: config.pathPrefix,
118 tag: 'script',
119 attr: 'src'
120 });
121 use(true, prefixoid, {
122 prefix: config.pathPrefix,
123 tag: 'div',
124 attr: 'data-url-template'
125 });
126 use(true, prefixoid, {
127 prefix: config.pathPrefix,
128 tag: 'link'
129 });
130 }
131 return metalsmith.build(function(err) {
132 if (err) {
133 return cb(err);
134 }
135 console.log('Done');
136 return cb();
137 });
138 };
139
140}).call(this);