123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- // 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();
|