mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2025-08-19 03:32:21 +08:00
53 lines
1.6 KiB
JavaScript
53 lines
1.6 KiB
JavaScript
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;
|
|
}
|
|
};
|