/**
* @file LibRext Font Builder
*/
"use strict"
import { join } from 'path'
import { cpSync, copyFileSync } from 'fs';
import { config } from 'librext-core'
import { projectRootDir, fontDir } from './font-builder-util.js'
import libRextFontsData from './data/librext-fonts.json' with { type: 'json' };
/**
* Font builder scripts
* @namespace libRextFontBuilder
*/
const defaultOutputDir = join(projectRootDir, config.assetOutDirectory)
/**
* Builds font files based on config
* @param {*} uiSpec
* @param {*} outputDir
* @param {*} config
* @returns true if everything succeeded, false if not
*/
const build = (uiSpec, outputDir = defaultOutputDir, config) => {
const buildSuccess = false
const targetDir = join(outputDir, 'fonts')
// config.fonts.forEach((fontKey, idx) => {
for (const fontRole in config.fonts) {
const fontKey = config.fonts[fontRole]
if (!libRextFontsData.availableFonts.includes(fontKey)) {
// Current fontKey is not in the system. Skip this.
console.warn(`[Font Builder] Font key "${fontKey}" not recognized.`)
return
}
const fontSourceDir = join(fontDir, fontKey)
const fontTargetDir = join(targetDir, fontKey)
const sourceFile = `${fontSourceDir}/librext-font.css`
// const targetDir = join(outputDir, 'css')
const targetFile = `${fontTargetDir}/${config.filenamePrefix}-font.css`
try {
cpSync(fontSourceDir, fontTargetDir, {
recursive: true,
filter: (src, dest) => {
return !src.endsWith('.css')
}
})
copyFileSync(sourceFile, targetFile)
} catch (err) {
console.error('[Font Builder] Font copying failed!')
console.error(err)
return false;
}
// })
}
return buildSuccess
}
export default build