package main

import (
	"encoding/json"
	"os"
)

// Setting структура конфигурации сервера
type Setting struct {
	ServerHost string
	ServerPort string
	PgHost     string
	PgPort     string
	PgUser     string
	PgPass     string
	PgBase     string
	Data       string
	Assets     string
	Template   string
}

// Переменная конфигурации
var cfg Setting

func init() {

	// Открываем файл конфигурации
	file, e := os.Open("setting.cfg")
	if e != nil {
		// Если файл открыть не удалось, останавливаем работу сервера
		panic("Файл конфигурации не был найден")
	}

	// Отложенный вызов функции. Файл будет закрыт когда функция init завершит работу
	defer file.Close()

	// Получить информацию о файле (размер файла, чтобы знать, сколько байт нужно выделить для его чтения)
	stat, e := file.Stat()
	if e != nil {
		panic("Не удалось получить информацю о файле конфигурации")
	}

	// Создаем переменную массив байтов с размером файла
	bytesForFileRead := make([]byte, stat.Size())

	_, e = file.Read(bytesForFileRead)
	if e != nil {
		panic("Не удалось прочитать файл конфигурации")
	}

	e = json.Unmarshal(bytesForFileRead, &cfg)
	if e != nil {
		panic("Не удалось считать данные файла конфигурации")
	}
}
