tools/common.js (74 lines of code) (raw):

/** * @typedef {Object} VersionConfig * @property {Array<string>} VERSION - Array of version numbers */ const path = require("path"); const fs = require("fs"); const { readJsonSync } = require("fs-extra"); // Set up constants /** @type {string} Source code path */ const SOURCE_PATH = path.resolve(__dirname, ".."); /** @type {string} Version config file path */ const VERSION_FILE = path.resolve( SOURCE_PATH, "src", "pages", "versions", "config.json" ); /** @type {string} Project name */ const PROJECT_NAME = "seatunnel"; /** @type {string} Project branch name */ const PROJECT_BRANCH_NAME = "dev"; /** @type {string} Swap directory path */ const SWAP_DIR = path.resolve(SOURCE_PATH, "swap"); /** @type {string} Project site English image directory */ const PROJECT_SITE_IMG_DIR = path.resolve(SOURCE_PATH, "static", "image_en"); /** @type {string} Project site Chinese image directory */ const PROJECT_SITE_ZH_IMG_DIR = path.resolve(SOURCE_PATH, "static", "image_zh"); /** @type {string} Project site document directory */ const PROJECT_SITE_DOC_DIR = path.resolve(SOURCE_PATH, "docs"); /** @type {string} Project site document image directory */ const PROJECT_SITE_DOC_IMG_DIR = path.resolve(PROJECT_SITE_DOC_DIR, "images"); /** @type {string} Project site Chinese document directory */ const PROJECT_SITE_ZH_DOC_DIR = path.resolve( SOURCE_PATH, "i18n", "zh-CN", "docusaurus-plugin-content-docs", "current" ); /** @type {string} Project site Chinese document image directory */ const PROJECT_SITE_ZH_DOC_IMG_DIR = path.resolve( PROJECT_SITE_ZH_DOC_DIR, "images" ); /** @type {string} Project directory */ const PROJECT_DIR = path.resolve(SWAP_DIR, PROJECT_NAME); /** @type {string} Project image directory */ const PROJECT_IMG_DIR = path.resolve(PROJECT_DIR, "docs", "images"); /** @type {string} Project English document directory */ const PROJECT_DOC_DIR = path.resolve(PROJECT_DIR, "docs", "en"); /** @type {string} Project Chinese document directory */ const PROJECT_ZH_DOC_DIR = path.resolve(PROJECT_DIR, "docs", "zh"); /** @type {string} Project sidebar path */ const PROJECT_SIDEBAR_PATH = path.resolve(PROJECT_DIR, "docs", "sidebars.js"); /** @type {string} Docusaurus document sidebar file */ const DOCUSAURUS_DOC_SIDEBARS_FILE = path.resolve(SOURCE_PATH, "sidebars.js"); /** @type {Array<string>} Array of version numbers */ const VERSION = readJsonSync(path.resolve(SOURCE_PATH, "versions.json")); /** * Utility function to replace image paths * @param {string} replaceDir - Directory to process * @param {string} [from="images"] - Original path * @param {string} [to="images"] - Target path */ function replaceImagesPath(replaceDir, from = "images", to = "images") { const regex = new RegExp(`../${from}`, "g"); for (const fileName of fs.readdirSync(replaceDir)) { const filePath = path.resolve(replaceDir, fileName); if (fs.statSync(filePath).isDirectory()) { replaceImagesPath(filePath, from, to); } else if (filePath.endsWith(".md") || filePath.endsWith(".mdx")) { console.log( ` ---> Replace images path form ${regex} to ${to} in ${filePath}` ); let content = fs.readFileSync(filePath, "utf-8"); content = content.replace(regex, to); content = content.replace(new RegExp(`(\\.)${to}`, "g"), `.io/${to}`); fs.writeFileSync(filePath, content); } } } module.exports = { SOURCE_PATH, VERSION_FILE, PROJECT_NAME, PROJECT_BRANCH_NAME, SWAP_DIR, PROJECT_SITE_IMG_DIR, PROJECT_SITE_ZH_IMG_DIR, PROJECT_SITE_DOC_DIR, PROJECT_SITE_DOC_IMG_DIR, PROJECT_SITE_ZH_DOC_DIR, PROJECT_SITE_ZH_DOC_IMG_DIR, PROJECT_DIR, PROJECT_IMG_DIR, PROJECT_DOC_DIR, PROJECT_ZH_DOC_DIR, PROJECT_SIDEBAR_PATH, DOCUSAURUS_DOC_SIDEBARS_FILE, VERSION, replaceImagesPath, };