import {path, YAML, date, Lang} from './deps.ts';
export default function () { return (site: Lume.Site) => {
const languages : string[] = [], currentWorkingDirectoryAbs: string = site.options.cwd, projectSourceDirectory : string = site.options.src, projectSourceDirectoryAbs : string = path.resolve(currentWorkingDirectoryAbs, projectSourceDirectory);
for (const dirEntry of Deno.readDirSync(projectSourceDirectoryAbs)) { if(!(dirEntry.isDirectory && Lang.getLanguageInfo(dirEntry.name)))continue;
const langCode: string = dirEntry.name, absLangDirname: string = path.resolve(projectSourceDirectoryAbs, langCode), absLangDataDirname: string = path.resolve(absLangDirname, '_data');
let absLangDataDirInfo: Deno.FileInfo; try { absLangDataDirInfo = Deno.statSync(absLangDataDirname); } catch (_error) { Deno.mkdirSync(absLangDataDirname); absLangDataDirInfo = Deno.statSync(absLangDataDirname); } if(!absLangDataDirInfo.isDirectory)continue;
const langYamlFilenameAbs = path.resolve(absLangDataDirname, 'lang.yaml'); try { const langYamlInfo = Deno.statSync(langYamlFilenameAbs); if(!langYamlInfo.isFile)continue; Deno.removeSync(langYamlFilenameAbs); } catch (_error) { }
try { const now = new Date(), timestamp = date.format(now, "yyyy-MM-dd"), langData = {code: langCode }, yaml = YAML.stringify(langData);
if(!yaml)throw new Error('');
Deno.writeTextFileSync( langYamlFilenameAbs, `# This file was automatically generated at build time# on ${timestamp} by the "lume_langdata" Lume plugin.${yaml}`); } catch (_error) { }
languages.push(langCode); }
const langsFilenameAbs : string = path.resolve(projectSourceDirectoryAbs, 'languages.json'); try { const langsFilenameInfo: Deno.FileInfo = Deno.statSync(langsFilenameAbs); if(!langsFilenameInfo.isFile)return; Deno.removeSync(langsFilenameAbs); } catch (_error) { } try { Deno.writeTextFileSync(langsFilenameAbs, JSON.stringify(languages)); } catch (_error) { console.error(`Error when writing languages file: ${langsFilenameAbs}`); }
};}