Skip to content
Find file
0581ac2
@hallaathrad @SaintPeter
executable file 140 lines (123 sloc) 3.53 KB
var mkdirp = require('mkdirp');
var fs = require('fs-extra');
// Initialize Language folders files to copy
var languageFolders = [
{
inputFile: `./wiki-master/Home.md`,
outputFile: `./pages/en/index.md`
},
{
inputFile: `./templates/index.md`,
outputFile: `./pages/index.md`
},
{
inputFile: `./templates/lang/_template.jsx`,
outputFile: `./pages/en/_template.jsx`
},
{
inputFile: `./templates/_template.jsx`,
outputFile: `./pages/_template.jsx`
}
];
// List of supported languages
var langList = [ 'en/' ];
// Get File list
fs.readdir('./wiki-master', function (err, files) {
if (err) throw err;
// List all of the *.lang folders for later
var folderList = files.filter(file => {
return /\w{2}\.lang/.test(file);
});
// Get English/Top Level files
var fileList = files.filter(function (file) {
return (/\.md$/.test(file) && !/^_|\w{2}\.lang/.test(file));
}).map(function (file) {
// Make directories/filenames
if (/Home\.md/i.test(file)) {
return {
inputFile: file,
outputDir: 'en/'
};
} else {
return {
inputFile: file,
outputDir: 'en/' + file.replace('.md', '')
};
}
});
// Get non-english files
var nonEnglishFileList = folderList.reduce((thisList, langSubFolder) => {
var langDir = langSubFolder.match(/^\w{2}/)[0] + '/',
langFiles = fs.readdirSync('./wiki-master/' + langSubFolder);
// Add this directory to the list of languages
langList.push(langDir);
// Setup copies for later
languageFolders.push({
inputFile: `./wiki-master/` + langSubFolder + `/Home.md`,
outputFile: `./pages/` + langDir + 'index.md'
});
languageFolders.push({
inputFile: `./templates/lang/_template.jsx`,
outputFile: `./pages/` + langDir + '_template.jsx'
});
// Append foreign language files to the copy list
return thisList.concat(
langFiles.filter(function (file) {
return (/\.md$/.test(file) && !/^_|\w{2}\.lang/.test(file));
}).map(function (file) {
// Make directories/filenames
if (/Home\.md/i.test(file)) {
return {
inputFile: file,
outputDir: langDir
};
} else {
return {
inputFile: langSubFolder + '/' + file,
outputDir: langDir + file.replace('.md', '')
};
}
})
);
}, []);
// Create folders and copy *.md files
createFolders(fileList);
createFolders(nonEnglishFileList);
// Copy language templates and templates files to each language
try {
languageFolders.forEach(file => {
fs.copySync(file.inputFile, file.outputFile);
});
} catch (err) {
throw err;
}
// Generate _pages.yaml for each language
langList.forEach( lang => {
var langDir = './pages/' + lang;
var output = fs.readdirSync(langDir).filter(file => {
return fs.statSync(langDir + file).isDirectory() && !/^images$/.test(file);
})
.reduce((acc, dir) => {
return acc + `- "/${lang + dir}/"\n`;
}, "");
try {
fs.outputFileSync(langDir + '_pages.yaml', output);
} catch(err) {
throw err;
}
});
});
// Create a folder base
function createFolders(fileList) {
fileList.forEach(function (fileobj) {
try {
// Create directory
fs.mkdirsSync('./pages/' + fileobj.outputDir);
// Copy File
fs.copySync('./wiki-master/' + fileobj.inputFile,
'./pages/' + fileobj.outputDir + '/index.md');
} catch (err) {
throw err;
}
});
}
Something went wrong with that request. Please try again.