import postcss from 'postcss'
// @ts-ignore
import autoprefixer from 'autoprefixer'
// @ts-ignore
import cssnano from 'cssnano'

import fs from 'fs-extra'
import path from 'path'
import ora from 'ora'
import { colors } from './utils/colors'

export async function buildFramework() {
    const spinner = ora('Building BismillahCSS V3...').start()

    const entryPath = path.join(process.cwd(), 'src', 'bismillah.css')
    const outputPath = path.join(process.cwd(), 'dist', 'bismillah.min.css')

    await fs.ensureDir(path.dirname(outputPath))

    const css = await fs.readFile(entryPath, 'utf-8')

    const result = await postcss([autoprefixer, cssnano])
        .process(css, { from: entryPath, to: outputPath })

    await fs.writeFile(outputPath, result.css)

    if (result.map) {
        await fs.writeFile(`${outputPath}.map`, result.map.toString())
    }

    spinner.succeed(colors.primary('Build completed successfully!'))
}
