package conf

import (
	"errors"
	"github.com/Unknwon/goconfig"
	"os"
	"strings"
)

// 读取配置文件
var connIni *goconfig.ConfigFile
var connIniTest = false

func ConnIni() (conf *goconfig.ConfigFile, err error) {

	// 判断是否加载成功过

	if connIniTest == false {

		conf, err = connIniGetPath()
		if err != nil {
			return conf, err
		}

		connIni = conf
		connIniTest = true
	}

	return connIni, nil
}

func connIniGetPath() (conf *goconfig.ConfigFile, err error) {

	// 通过全局变量设置配置文件的名字
	var confName string

	switch strings.ToLower(os.Getenv("model")) {

	case "develop":
		confName = "conf.ini"
		break

	case "master":
		confName = "conf_master.ini"
		break

	case "test":
		confName = "conf_test.ini"
		break

	default:
		confName = "conf.ini"
	}

	// 判断是否加载成功过
	if connIniTest == false {

		var conFiles = []string{"conf/", "/conf/", "/app/conf/", "../conf/", "../../conf/", "../../../conf/", "../../../../conf/", "../../../../../conf/"}

		for _, aConFile := range conFiles {
			conn, err := goconfig.LoadConfigFile(aConFile + confName)
			if err == nil {

				connIniTest = true
				connIni = conn
				return connIni, nil

			}
		}

		return connIni, errors.New("无法找到配置文件")
	}

	return connIni, nil
}