Files
roxo-hugo/scripts/removeMultilang.js
Al Murad Uzzaman f8b297eaad feat: migrate Hugo Bootstrap theme to latest Hugo with Tailwind CSS and refactor codebase
* replace Bootstrap-based styling with Tailwind CSS
* update theme compatibility for latest Hugo version
* refactor templates and partials
* fix outdated code and broken components
* improve project structure and maintainability
* optimize styling and frontend build setup
2026-05-10 13:38:01 +06:00

123 lines
3.8 KiB
JavaScript

import fs from "node:fs";
import path from "node:path";
// Paths
const notFoundPage = "layouts/404.en.html";
const menusPath = "exampleSite/config/_default/menus.en.toml";
const languagesPath = "exampleSite/config/_default/languages.toml";
const hugoConfigPath = "exampleSite/hugo.toml";
const developmentDir = "exampleSite/config/development";
const i18nDir = "exampleSite/i18n";
const englishContentDir = "exampleSite/content/english";
const targetContentDir = "exampleSite/content";
// Helper function to remove directory recursively
const removeDirRecursive = (dirPath) => {
if (fs.existsSync(dirPath)) {
fs.rmSync(dirPath, { recursive: true, force: true });
console.log(`✓ Removed directory: ${dirPath}`);
} else {
console.log(`✗ Directory not found: ${dirPath}`);
}
};
// Helper function to remove file
const removeFile = (filePath) => {
if (fs.existsSync(filePath)) {
fs.unlinkSync(filePath);
console.log(`✓ Removed file: ${filePath}`);
} else {
console.log(`✗ File not found: ${filePath}`);
}
};
// Helper function to rename file
const renameFile = (oldPath, newPath) => {
if (fs.existsSync(oldPath)) {
fs.renameSync(oldPath, newPath);
console.log(`✓ Renamed: ${oldPath}${newPath}`);
} else {
console.log(`✗ File not found: ${oldPath}`);
}
};
// Helper function to move directory contents
const moveDirContents = (sourceDir, targetDir) => {
if (!fs.existsSync(sourceDir)) {
console.log(`✗ Source directory not found: ${sourceDir}`);
return;
}
// Ensure target directory exists
if (!fs.existsSync(targetDir)) {
fs.mkdirSync(targetDir, { recursive: true });
}
const items = fs.readdirSync(sourceDir);
items.forEach((item) => {
const sourcePath = path.join(sourceDir, item);
const targetPath = path.join(targetDir, item);
fs.renameSync(sourcePath, targetPath);
console.log(`✓ Moved: ${sourcePath}${targetPath}`);
});
// Remove the now-empty source directory
fs.rmdirSync(sourceDir);
console.log(`✓ Removed empty directory: ${sourceDir}`);
};
// Main function
const removeMultilang = () => {
console.log("Starting multilanguage removal process...\n");
// 1. Remove exampleSite/config/development folder
console.log("1. Removing development folder...");
removeDirRecursive(developmentDir);
console.log("");
// 2. Remove exampleSite/i18n folder
console.log("2. Removing i18n folder...");
removeDirRecursive(i18nDir);
console.log("");
// 3. Remove languagesPath file
console.log("3. Removing languages.toml file...");
removeFile(languagesPath);
console.log("");
// 4. Rename menusPath and notFoundPage
console.log("4. Renaming files (removing .en)...");
renameFile(menusPath, menusPath.replace(".en.", "."));
renameFile(notFoundPage, notFoundPage.replace(".en.", "."));
console.log("");
// 5. Remove language configuration from hugo.toml
console.log("5. Updating hugo.toml...");
if (fs.existsSync(hugoConfigPath)) {
let hugoConfig = fs.readFileSync(hugoConfigPath, "utf-8");
// Remove the language configuration block
const languageConfigRegex =
/# disable language\ndisableLanguages = \[\n\].*?defaultContentLanguageInSubdir = false\n/s;
hugoConfig = hugoConfig.replace(languageConfigRegex, "");
fs.writeFileSync(hugoConfigPath, hugoConfig);
console.log(`✓ Updated: ${hugoConfigPath}`);
} else {
console.log(`✗ File not found: ${hugoConfigPath}`);
}
console.log("");
// 6. Move all folders and files from exampleSite/content/english to exampleSite/content
console.log("6. Moving content from english folder to content folder...");
moveDirContents(englishContentDir, targetContentDir);
console.log("");
console.log("✓ Multilanguage removal completed successfully!");
};
// Run the script
removeMultilang();