blob: eb1538889c7262784e8196542489f2f57bd3c45a [file] [log] [blame]
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
'use strict';
var path = require('path');
var yaml = require('js-yaml');
var util = require('./util');
// constants
var USAGE = 'Usage: gen_defaults.js [docsRoot] [latestVersion]';
var DEV_VERSION_NAME = 'dev';
// constants for sitemap.xml
// reference:
// http://www.sitemaps.org/protocol.html#xmlTagDefinitions
var LATEST_CHANGE_FREQUENCY = 'monthly';
var LATEST_PAGE_PRIORITY = 0.8;
var DEFAULT_CHANGE_FREQUENCY = 'monthly';
var DEFAULT_PAGE_PRIORITY = LATEST_PAGE_PRIORITY / 2;
var DEV_CHANGE_FREQUENCY = 'daily';
var DEV_PAGE_PRIORITY = LATEST_PAGE_PRIORITY / 4;
function main () {
var rootDir = process.argv[2];
var latestVersionName = process.argv[3];
if (!rootDir) {
console.error(USAGE);
console.error('Please specify the docs root directory from which to generate defaults.');
process.exit(1);
}
if (!latestVersionName) {
console.error(USAGE);
console.error('Please specify the latest version of the docs.');
process.exit(1);
}
// create defaults config
var config = { 'defaults': [] };
// set defaults for each language
util.listdirsSync(rootDir).forEach(function (langName) {
var langPath = path.join(rootDir, langName);
var languageDefaults = {
scope: {
path: 'docs/' + langName
},
values: {
language: langName,
layout: 'docs-' + langName
}
};
config.defaults.push(languageDefaults);
// set defaults for each version
util.listdirsSync(langPath).forEach(function (versionName) {
var tocfile = util.genTocfileName(langName, versionName);
var changeFrequency = DEFAULT_CHANGE_FREQUENCY;
var pagePriority = DEFAULT_PAGE_PRIORITY;
// adjust priority and frequency based on version
if (versionName === latestVersionName) {
changeFrequency = LATEST_CHANGE_FREQUENCY;
pagePriority = LATEST_PAGE_PRIORITY;
} else if (versionName === DEV_VERSION_NAME) {
changeFrequency = DEV_CHANGE_FREQUENCY;
pagePriority = DEV_PAGE_PRIORITY;
}
var current = false;
if (versionName === latestVersionName || versionName === DEV_VERSION_NAME) {
current = true;
}
var versionDefaults = {
scope: {
path: 'docs/' + langName + '/' + versionName
},
values: {
version: versionName,
tocfile: tocfile.replace('.yml', ''),
change_frequency: changeFrequency,
priority: pagePriority,
current: current
}
};
config.defaults.push(versionDefaults);
});
});
console.log(util.generatedBy(__filename));
console.log(yaml.dump(config, { indent: 4 }));
}
main();