// @ts-nocheck
import { exec, spawn, ChildProcess } from "child_process"
import { join } from "path"

export function devVite() {
  return new Promise((resolve, reject) => {
    let viteProcess = spawn("node", [join(__dirname, "../../node_modules/vite/bin/vite.js")], {
      stdio: "pipe",
      // env: Object.assign(process.env, { NODE_ENV: argv.env }),
    })
    if (viteProcess) {
      let isReady = false
      viteProcess.stdout.on("data", data => {
        console.log(`${data}`)
        if (!isReady && data.indexOf("ready") != -1) {
          resolve(viteProcess)
        }
      })

      viteProcess.stderr.on("data", data => {
        console.error(`[vite err]: ${data}`)
        reject()
      })

      viteProcess.on("close", code => {
        console.log(`[vite close]: exited with code ${code}`)
        reject()
      })
    } else {
      reject()
    }
  })
}

export function buildVite() {
  return new Promise((resolve, reject) => {
    let viteProcess = spawn("node", [join(__dirname, "../../node_modules/vite/bin/vite.js"), "build"], {
      stdio: "pipe",
      // env: Object.assign(process.env, { NODE_ENV: argv.env }),
    })
    if (viteProcess) {
      viteProcess.stdout.on("end", data => {
        console.log(`\n[vite build end]`)
        resolve(viteProcess)
      })
      viteProcess.stderr.on("data", data => {
        console.error(`\n[vite build err]: ${data}`)
        reject()
      })
    } else {
      reject()
    }
  })
}