generate api index page

This commit is contained in:
Tim Lancina
2015-09-01 15:07:00 -05:00
parent 481fd7f651
commit d0c9f1404e
28 changed files with 1183 additions and 1 deletions

View File

@ -0,0 +1,18 @@
module.exports = function indexPage() {
return {
name: 'index-page',
description: 'Create documentation index page',
version: 'nightly',
$runAfter: ['adding-extra-docs'],
$runBefore: ['extra-docs-added'],
$process: function(docs) {
docs.push({
docType: 'index-page',
id: 'index-page',
currentVersion: this.version,
template: 'api_index.template.html',
outputPath: 'index.md'
});
}
}
};

View File

@ -0,0 +1,23 @@
var log = require('winston');
module.exports = {
name: 'jekyll',
runAfter: ['api-docs'],
runBefore: ['compute-path'],
description: 'Create jekyll includes',
process: function(docs, config) {
var currentVersion = config.versionData.current.name;
docs.push({
template: 'api_menu.template.html',
outputPath: '_includes/api_menu.html'
});
docs.push({
template: 'api_menu_version.template.html',
outputPath: '_includes/api_menu_' + currentVersion + '.html'
});
docs.push({
template: 'api_version_select.template.html',
outputPath: '_includes/api_version_select.html'
});
}
};

View File

@ -0,0 +1,30 @@
var copy = require('cpr').cpr;
var mkdirp = require('mkdirp');
var path = require('canonical-path');
var q = require('q');
module.exports = {
name: 'latest-version',
runAfter: ['write-files'],
description: 'Copy the latest version (that was compiled to docs/) into docs/versionName',
process: function(docs, config) {
var versionData = config.get('versionData');
var docsBase = path.join(config.get('rendering.outputFolder'), 'docs');
var versionDir = path.join(docsBase, versionData.latest.name);
var latestDir = path.join(docsBase, 'api');
var deferred = q.defer();
mkdirp(versionDir, function() {
copy(latestDir, path.join(versionDir, 'api'), {
deleteFirst: true,
overwrite: true
}, function(err, files) {
deferred.resolve(docs);
});
});
return deferred.promise;
}
};

View File

@ -0,0 +1,52 @@
var _ = require('lodash');
var fs = require('fs');
var semver = require('semver');
var path = require('canonical-path');
module.exports = {
name: 'version-data',
runBefore: ['reading-files'],
description: 'Expose version data to templates',
process: function(extraData, config) {
var basePath = config.get('basePath');
var outputFolder = config.get('rendering.outputFolder');
var currentVersion = config.get('currentVersion');
var docsBaseFolder = path.resolve(basePath, outputFolder, 'docs');
var versions;
try {
versions = fs.readdirSync(docsBaseFolder)
.filter(semver.valid)
.sort(semver.rcompare);
} catch(e) {
versions = [];
}
!_.contains(versions, currentVersion) && versions.unshift(currentVersion);
!_.contains(versions, 'nightly') && versions.unshift('nightly');
//First semver valid version is latest
var latestVersion = _.find(versions, semver.valid);
versions = versions.map(function(version) {
//Latest version is in docs root
var folder = version == latestVersion ? '' : version;
return {
href: path.join('/', config.get('versionFolderBase') || '', folder),
folder: folder,
name: version
};
});
var versionData = {
list: versions,
current: _.find(versions, { name: currentVersion }),
latest: _.find(versions, {name: latestVersion}) || _.first(versions)
};
config.set('rendering.contentsFolder',
path.join(config.get('versionFolderBase') || '', versionData.current.folder || ''));
config.set('versionData', versionData);
extraData.version = versionData;
}
};