import { addVitePlugin, defineNuxtModule } from '@nuxt/kit'
import { getEnv, version } from '../config/env'
import type { BuildInfo } from '~/types'

export default defineNuxtModule({
  meta: {
    name: 'elk:build-info',
  },
  async setup(_options, nuxt) {
    const { env, commit, branch } = await getEnv()
    nuxt.options.runtimeConfig.public.env = env

    const buildInfo: BuildInfo = {
      version,
      time: +Date.now(),
      commit,
      branch,
      env,
    }

    addVitePlugin({
      name: 'elk:build-info',
      resolveId(id) {
        if (id === 'virtual:build-info')
          return id
      },
      load(id) {
        if (id === 'virtual:build-info')
          return `export const buildInfo = ${JSON.stringify(buildInfo, null, 2)}`
      },
    })
  },
})