| // 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 fs = require("fs"); |
| 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(); |