diff --git a/lib/server/generate.js b/lib/server/generate.js index d7f05ad8b1..42b8882738 100644 --- a/lib/server/generate.js +++ b/lib/server/generate.js @@ -106,9 +106,9 @@ function execute() { let file; if (metadata.version) { - if (ENABLE_TRANSLATION) { + if (ENABLE_TRANSLATION && metadata.language !== "en") { file = - CWD + "/versioned_docs/" + metadata.language + "/" + metadata.source; + CWD + "/translated_docs/" + metadata.language + "/" + metadata.source; } else { file = CWD + "/versioned_docs/" + metadata.source; } @@ -120,9 +120,11 @@ function execute() { CWD + "/translated_docs/" + metadata.language + "/" + metadata.source; } } + if (!fs.existsSync(file)) { return; } + let rawContent = readMetadata.extractMetadata(fs.readFileSync(file, "utf8")) .rawContent; diff --git a/lib/server/server.js b/lib/server/server.js index e0fe145f15..9ea89fce3a 100644 --- a/lib/server/server.js +++ b/lib/server/server.js @@ -159,9 +159,9 @@ function execute(port) { let file; if (metadata.version) { - if (ENABLE_TRANSLATION) { + if (ENABLE_TRANSLATION && metadata.language !== "en") { file = - CWD + "/versioned_docs/" + metadata.language + "/" + metadata.source; + CWD + "/translated_docs/" + metadata.language + "/" + metadata.source; } else { file = CWD + "/versioned_docs/" + metadata.source; } diff --git a/lib/server/versionFallback.js b/lib/server/versionFallback.js index 4683ea7d48..a902590ac1 100644 --- a/lib/server/versionFallback.js +++ b/lib/server/versionFallback.js @@ -14,6 +14,8 @@ const fs = require("fs"); const path = require("path"); const diff = require("diff"); const assert = require("assert"); + +const versions = require(CWD + "/versions.json"); const siteConfig = require(CWD + "/siteConfig.js"); const ENABLE_TRANSLATION = fs.existsSync(CWD + "/languages.js"); @@ -68,20 +70,7 @@ function extractMetadata(content) { /*****************************************************************/ -// versions is an array of all versions currently in use -const versions = []; -const versionFolder = ENABLE_TRANSLATION - ? CWD + "/versioned_docs/en/" - : CWD + "/versioned_docs/"; -let files = glob.sync(versionFolder + "*"); -files.forEach(file => { - if (!fs.lstatSync(file).isDirectory()) { - return; - } - const version = file.split("version-")[1]; - versions.push(version); -}); -versions.sort(semver.rcompare); +const versionFolder = CWD + "/versioned_docs/"; // available stores doc ids of documents that are available for // each version @@ -184,8 +173,6 @@ function processVersionMetadata(file, version, useVersion, language) { // return all metadata of versioned documents function docData() { - const files = glob.sync(CWD + "/versioned_docs/**"); - allIds = new Set(); Object.keys(versionFiles).forEach(version => { Object.keys(versionFiles[version]).forEach(id => { diff --git a/lib/version.js b/lib/version.js index ebb48b1e40..16510edbee 100644 --- a/lib/version.js +++ b/lib/version.js @@ -9,16 +9,15 @@ * of patent rights can be found in the PATENTS file in the same directory. */ -const CWD = process.cwd(); const glob = require("glob"); const fs = require("fs-extra"); const path = require("path"); const mkdirp = require("mkdirp"); -const semver = require("semver"); const readMetadata = require("./server/readMetadata.js"); const versionFallback = require("./server/versionFallback.js"); -const ENABLE_TRANSLATION = fs.existsSync(CWD + "/languages.js"); +const CWD = process.cwd(); +const versions = require(CWD + "/versions.json"); let version; @@ -37,9 +36,9 @@ if (typeof version === "undefined") { process.exit(1); } -if (!(version = semver.valid(version))) { +if (versions.includes(version)) { console.error( - "Invalid version!\nSpecify a valid version following the specifications at http://semver.org/." + "This verison already exists!\nSpecify a new version to create that does not already exist." ); process.exit(1); } @@ -53,10 +52,8 @@ function makeHeader(metadata) { return header; } -let versionFolder = CWD + "/versioned_docs/version-" + version; -if (ENABLE_TRANSLATION) { - versionFolder = CWD + "/versioned_docs/en/version-" + version; -} +const versionFolder = CWD + "/versioned_docs/version-" + version; + mkdirp.sync(versionFolder); // copy necessary files to new version, changing some of its metadata to reflect the versioning @@ -81,12 +78,9 @@ files.forEach(file => { metadata.original_id = metadata.id; metadata.id = "version-" + version + "-" + metadata.id; - let targetFile = + const targetFile = CWD + "/versioned_docs/version-" + version + "/" + path.basename(file); - if (ENABLE_TRANSLATION) { - targetFile = - CWD + "/versioned_docs/en/version-" + version + "/" + path.basename(file); - } + fs.writeFileSync(targetFile, makeHeader(metadata) + rawContent, "utf8"); }); @@ -117,3 +111,7 @@ if (versionFallback.diffLatestSidebar()) { "utf8" ); } + +// update versions.json file +versions.unshift(version); +fs.writeFileSync(CWD + "/versions.json", JSON.stringify(versions, null, 2));