import dotenv from 'dotenv'
import { writeFileSync } from 'fs'

// 加载 .env 文件 先找.local 然后对应环境文件，最后找默认的，左边的优先级最高
const NODE_ENV = process.env.NODE_ENV
dotenv.config({ path: NODE_ENV ? [`.env.${NODE_ENV}.local`, '.env.' + NODE_ENV, '.env'] : '.env' })

const { VITE_SERVER_ORIGIN, VITE_NGINX_PROXY, VITE_API_SUFFIX_URL, VITE_RULE_SERVER_URL, VITE_MEDIA_SERVER_URL } = process.env

console.log(VITE_SERVER_ORIGIN, VITE_NGINX_PROXY, VITE_API_SUFFIX_URL, VITE_RULE_SERVER_URL, VITE_MEDIA_SERVER_URL)
const baseUrl = VITE_SERVER_ORIGIN + VITE_NGINX_PROXY + VITE_API_SUFFIX_URL
console.log(baseUrl)

const configFile = './public/config.js'
const configJson = {
	topo: {
		server: baseUrl,
		imgServer: VITE_SERVER_ORIGIN + VITE_NGINX_PROXY,
	},
	screen: {
		server: baseUrl,
		imgServer: VITE_SERVER_ORIGIN + VITE_NGINX_PROXY,
	},
	rule: {
		server: VITE_RULE_SERVER_URL,
		iotServer: baseUrl,
	},
	designer: {
		baseServer: VITE_SERVER_ORIGIN + VITE_NGINX_PROXY,
		server: baseUrl,
	},
	media: VITE_MEDIA_SERVER_URL,
}

// 大屏项目会存在配置找不到的情况，增加同步请求的 js 配置文件，避免异步请求延迟导致的异常
const configJs = `window.allEnv = ${JSON.stringify(configJson, null, 2)}`

// 文件写入
try {
	// 将.env 中的值进行赋值之后写入 config.json
	writeFileSync(configFile, configJs, { flag: 'w+', encoding: 'utf-8' })
	console.log(`-> 更新配置成功`)
	console.log(configJson)
	console.log(`===============================================================`)
} catch (err) {
	console.error(`-> 更新配置成功: `)
	console.error(err)
}
