const childProcess = require('child_process')
const fs = require('fs')
const path = require('path')

require('colors')

function createFolder (folderPath) {
  console.log('*'.green + ' creating folder: '.grey + folderPath.white)

  fs.mkdirSync(folderPath, { recursive: true })
}

function bundle (inputFile, exportName, outputFile, onDone) {
  console.log('*'.green + ' bundling: '.grey + inputFile.white + ' -> '.grey + outputFile.white)

  const { status, stderr } = childProcess.spawnSync('node', [
    'node_modules/.bin/browserify',
    inputFile,
    '-s', exportName,
    '-d',
    '-o', outputFile
  ])

  if (status !== 0) {
    console.error(stderr.toString())
    process.exit(status)
  }
}

function minify (inputFile, outputFile) {
  console.log('*'.green + ' minifying: '.grey + inputFile.white + ' -> '.grey + outputFile.white)

  const { status, stderr } = childProcess.spawnSync('node', [
    'node_modules/.bin/uglifyjs',
    '--compress', '--mangle',
    '--output', outputFile,
    '--source-map', `url='${path.basename(outputFile)}.map'`,
    '--', inputFile
  ])

  if (status !== 0) {
    console.error(stderr.toString())
    process.exit(status)
  }
}

createFolder('./build')
bundle('lib/index.js', 'QRCode', 'build/qrcode.js')
bundle('helper/to-sjis.js', 'QRCode.toSJIS', 'build/qrcode.tosjis.js')
minify('build/qrcode.js', 'build/qrcode.min.js')
minify('build/qrcode.tosjis.js', 'build/qrcode.tosjis.min.js')
console.log('\nBuild complete =)\n'.green)