1
0
mirror of https://github.com/ManyakRus/crud_generator.git synced 2025-05-18 10:38:33 +02:00

268 lines
12 KiB
Go
Raw Normal View History

2023-09-28 17:45:44 +03:00
package config
import (
2023-11-17 15:08:31 +03:00
"github.com/ManyakRus/crud_generator/internal/constants"
2023-12-27 14:28:11 +03:00
ConfigMain "github.com/ManyakRus/starter/config_main"
2024-01-17 10:38:22 +03:00
"github.com/ManyakRus/starter/log"
2023-11-17 15:08:31 +03:00
"github.com/ManyakRus/starter/micro"
2023-09-28 17:45:44 +03:00
"os"
2023-10-06 16:48:58 +03:00
"strings"
2023-09-28 17:45:44 +03:00
)
// Settings хранит все нужные переменные окружения
var Settings SettingsINI
// SettingsINI - структура для хранения всех нужных переменных окружения
type SettingsINI struct {
INCLUDE_TABLES string
EXCLUDE_TABLES string
TEMPLATE_FOLDERNAME string
TEMPLATE_FOLDERNAME_MODEL string
TEMPLATE_FOLDERNAME_DB string
TEMPLATE_FOLDERNAME_CRUD string
TEMPLATE_FOLDERNAME_TABLES string
TEMPLATE_FOLDERNAME_GRPC string
TEMPLATE_FOLDERNAME_GRPC_PROTO string
TEMPLATE_FOLDERNAME_GRPC_SERVER string
TEMPLATE_FOLDERNAME_GRPC_CLIENT string
TEMPLATE_FOLDERNAME_NRPC string
TEMPLATE_FOLDERNAME_NRPC_SERVER string
TEMPLATE_FOLDERNAME_NRPC_CLIENT string
TEMPLATE_FOLDERNAME_GRPC_NRPC string
TEMPLATE_SERVICE_NAME string
TEMPLATE_FOLDERNAME_CRUD_STARTER string
TEMPLATE_FOLDERNAME_ALIAS string
TEMPLATE_FOLDER_CRUD_FUNCTIONS string
TEMPLATE_FOLDERNAME_MAIN string
TEMPLATE_REPOSITORY_URL string
TEMPLATE_EXTERNAL_PROTO_FILENAME string
TEMPLATES_CRUD_FILENAME string
TEMPLATES_CRUD_TEST_FILENAME string
TEMPLATES_ALIAS_FILENAME string
TEMPLATES_CRUD_TABLE_UPDATE_FUNC_FILENAME string
TEMPLATES_CRUD_TABLE_UPDATE_FUNC_TEST_FILENAME string
TEMPLATES_CONVERT_ID_FILENAME string
TEMPLATES_CRUD_FUNCTIONS_RENAME_FILENAME string
TEMPLATES_MODEL_CRUD_DELETE_FUNCTIONS_FILENAME string
TEMPLATES_NAME_REPLACE_FILENAME string
TEMPLATES_NULLABLE_FILENAME string
NEED_CREATE_MODEL_STRUCT bool
NEED_CREATE_MODEL_CRUD bool
NEED_CREATE_DB bool
NEED_CREATE_DB_TEST bool
NEED_CREATE_DB_TABLES bool
NEED_CREATE_GRPC bool
NEED_CREATE_GRPC_SERVER_TEST bool
NEED_CREATE_GRPC_CLIENT_TEST bool
NEED_CREATE_NRPC bool
NEED_CREATE_NRPC_SERVER_TEST bool
NEED_CREATE_NRPC_CLIENT_TEST bool
NEED_CREATE_MANUAL_FILES bool
SERVICE_NAME string
SERVICE_REPOSITORY_URL string
TEXT_TEMPLATE_MODEL string
TEXT_TEMPLATE_TABLENAME string
HAS_IS_DELETED bool
READY_FOLDERNAME string
TEXT_DB_MODIFIED_AT string
TEXT_DB_CREATED_AT string
TEXT_DB_IS_DELETED string
USE_DEFAULT_TEMPLATE bool
PREFIX_SERVER_GRPC string
PREFIX_CLIENT_GRPC string
PREFIX_CRUD string
PREFIX_MODEL string
PREFIX_TABLE string
COMMENT_MODEL_STRUCT string
TEXT_MODULE_GENERATED string
READY_ALIAS_FILENAME string
NEED_CREATE_UPDATE_EVERY_COLUMN bool
2023-09-28 17:45:44 +03:00
}
// FillSettings загружает переменные окружения в структуру из переменных окружения
func FillSettings() {
2023-11-01 17:34:57 +03:00
//dir := micro.ProgramDir_bin()
2023-09-28 17:45:44 +03:00
Settings = SettingsINI{}
Settings.INCLUDE_TABLES = os.Getenv("INCLUDE_TABLES")
Settings.EXCLUDE_TABLES = os.Getenv("EXCLUDE_TABLES")
2023-10-23 18:09:55 +03:00
Settings.TEMPLATE_FOLDERNAME = os.Getenv("TEMPLATE_FOLDERNAME")
Settings.TEMPLATE_FOLDERNAME_MODEL = os.Getenv("TEMPLATE_FOLDERNAME_MODEL")
2023-11-16 15:08:10 +03:00
Settings.TEMPLATE_FOLDERNAME_CRUD = os.Getenv("TEMPLATE_FOLDERNAME_CRUD")
2023-11-15 13:58:31 +03:00
Settings.TEMPLATE_FOLDERNAME_GRPC_PROTO = os.Getenv("TEMPLATE_FOLDERNAME_GRPC_PROTO")
2023-10-26 11:33:12 +03:00
Settings.TEMPLATE_FOLDERNAME_GRPC_SERVER = os.Getenv("TEMPLATE_FOLDERNAME_GRPC_SERVER")
Settings.TEMPLATE_FOLDERNAME_GRPC_CLIENT = os.Getenv("TEMPLATE_FOLDERNAME_GRPC_CLIENT")
2023-10-23 18:09:55 +03:00
Settings.TEMPLATE_FOLDERNAME_NRPC = os.Getenv("TEMPLATE_FOLDERNAME_NRPC")
2023-10-26 11:33:12 +03:00
Settings.TEMPLATE_FOLDERNAME_NRPC_SERVER = os.Getenv("TEMPLATE_FOLDERNAME_NRPC_SERVER")
Settings.TEMPLATE_FOLDERNAME_NRPC_CLIENT = os.Getenv("TEMPLATE_FOLDERNAME_NRPC_CLIENT")
2023-10-24 18:03:04 +03:00
Settings.TEXT_TEMPLATE_MODEL = os.Getenv("TEXT_TEMPLATE_MODEL")
Settings.TEXT_TEMPLATE_TABLENAME = os.Getenv("TEXT_TEMPLATE_TABLENAME")
2023-10-26 14:18:38 +03:00
Settings.TEMPLATE_SERVICE_NAME = os.Getenv("TEMPLATE_SERVICE_NAME")
2023-10-26 17:03:50 +03:00
Settings.TEMPLATE_FOLDERNAME_CRUD_STARTER = os.Getenv("TEMPLATE_FOLDERNAME_CRUD_STARTER")
2023-11-29 14:09:53 +03:00
SERVICE_REPOSITORY_URL := strings.ToLower(os.Getenv("SERVICE_REPOSITORY_URL"))
Settings.SERVICE_REPOSITORY_URL = SERVICE_REPOSITORY_URL
Settings.TEMPLATE_FOLDERNAME_ALIAS = os.Getenv("TEMPLATE_FOLDERNAME_ALIAS")
2023-11-07 17:58:02 +03:00
Settings.PREFIX_SERVER_GRPC = os.Getenv("PREFIX_SERVER_GRPC")
2023-10-26 17:03:50 +03:00
2023-10-25 14:52:49 +03:00
sHAS_IS_DELETED := os.Getenv("HAS_IS_DELETED")
2023-09-28 17:45:44 +03:00
2023-11-14 17:07:41 +03:00
sNEED_CREATE_DB := os.Getenv("NEED_CREATE_DB")
Settings.NEED_CREATE_DB = BoolFromString(sNEED_CREATE_DB)
2023-10-06 16:48:58 +03:00
2024-01-17 10:41:15 +03:00
sNEED_CREATE_DB_TABLES := os.Getenv("NEED_CREATE_DB_TABLES")
Settings.NEED_CREATE_DB_TABLES = BoolFromString(sNEED_CREATE_DB_TABLES)
sNEED_GRPC := os.Getenv("NEED_CREATE_GRPC")
Settings.NEED_CREATE_GRPC = BoolFromString(sNEED_GRPC)
2023-10-06 16:48:58 +03:00
sNEED_NRPC := os.Getenv("NEED_CREATE_NRPC")
Settings.NEED_CREATE_NRPC = BoolFromString(sNEED_NRPC)
2023-10-06 16:48:58 +03:00
2023-11-08 15:15:52 +03:00
sNEED_CREATE_MODEL_STRUCT := os.Getenv("NEED_CREATE_MODEL_STRUCT")
Settings.NEED_CREATE_MODEL_STRUCT = BoolFromString(sNEED_CREATE_MODEL_STRUCT)
sNEED_CREATE_MODEL_CRUD := os.Getenv("NEED_CREATE_MODEL_CRUD")
Settings.NEED_CREATE_MODEL_CRUD = BoolFromString(sNEED_CREATE_MODEL_CRUD)
2023-10-06 16:48:58 +03:00
Settings.SERVICE_NAME = os.Getenv("SERVICE_NAME")
2023-11-01 17:34:57 +03:00
Settings.READY_FOLDERNAME = strings.ToLower(Settings.SERVICE_NAME)
2023-10-06 16:48:58 +03:00
2023-10-23 18:09:55 +03:00
if Settings.TEMPLATE_FOLDERNAME == "" {
log.Panic("Need fill TEMPLATE_FOLDERNAME")
}
2023-10-24 18:03:04 +03:00
if Settings.TEXT_TEMPLATE_MODEL == "" {
Settings.TEXT_TEMPLATE_MODEL = "LawsuitStatusType"
}
if Settings.TEXT_TEMPLATE_TABLENAME == "" {
Settings.TEXT_TEMPLATE_TABLENAME = "lawsuit_status_types"
}
2023-10-25 14:52:49 +03:00
2023-11-07 17:58:02 +03:00
sUSE_DEFAULT_TEMPLATE := os.Getenv("USE_DEFAULT_TEMPLATE")
Settings.USE_DEFAULT_TEMPLATE = BoolFromString(sUSE_DEFAULT_TEMPLATE)
2023-10-25 14:52:49 +03:00
HAS_IS_DELETED := BoolFromString(sHAS_IS_DELETED)
Settings.HAS_IS_DELETED = HAS_IS_DELETED
2023-11-08 15:15:52 +03:00
Settings.COMMENT_MODEL_STRUCT = os.Getenv("COMMENT_MODEL_STRUCT")
2023-11-10 15:04:05 +03:00
Settings.TEXT_MODULE_GENERATED = os.Getenv("TEXT_MODULE_GENERATED")
sNEED_CREATE_DB_TEST := os.Getenv("NEED_CREATE_DB_TEST")
NEED_CREATE_DB_TEST := BoolFromString(sNEED_CREATE_DB_TEST)
Settings.NEED_CREATE_DB_TEST = NEED_CREATE_DB_TEST
sNEED_CREATE_GRPC_SERVER_TEST := os.Getenv("NEED_CREATE_GRPC_SERVER_TEST")
NEED_CREATE_GRPC_SERVER_TEST := BoolFromString(sNEED_CREATE_GRPC_SERVER_TEST)
Settings.NEED_CREATE_GRPC_SERVER_TEST = NEED_CREATE_GRPC_SERVER_TEST
sNEED_CREATE_GRPC_CLIENT_TEST := os.Getenv("NEED_CREATE_GRPC_CLIENT_TEST")
NEED_CREATE_GRPC_CLIENT_TEST := BoolFromString(sNEED_CREATE_GRPC_CLIENT_TEST)
Settings.NEED_CREATE_GRPC_CLIENT_TEST = NEED_CREATE_GRPC_CLIENT_TEST
sNEED_CREATE_NRPC_SERVER_TEST := os.Getenv("NEED_CREATE_NRPC_SERVER_TEST")
NEED_CREATE_NRPC_TEST := BoolFromString(sNEED_CREATE_NRPC_SERVER_TEST)
Settings.NEED_CREATE_NRPC_SERVER_TEST = NEED_CREATE_NRPC_TEST
sNEED_CREATE_NRPC_CLIENT_TEST := os.Getenv("NEED_CREATE_NRPC_CLIENT_TEST")
NEED_CREATE_NRPC_CLIENT_TEST := BoolFromString(sNEED_CREATE_NRPC_CLIENT_TEST)
Settings.NEED_CREATE_NRPC_CLIENT_TEST = NEED_CREATE_NRPC_CLIENT_TEST
2023-11-14 18:03:01 +03:00
Settings.TEMPLATE_FOLDERNAME_MAIN = os.Getenv("TEMPLATE_FOLDERNAME_MAIN")
2023-11-15 13:58:31 +03:00
Settings.TEMPLATE_REPOSITORY_URL = os.Getenv("TEMPLATE_REPOSITORY_URL")
2023-11-15 17:59:21 +03:00
Settings.TEMPLATE_FOLDERNAME_GRPC = os.Getenv("TEMPLATE_FOLDERNAME_GRPC")
2023-11-16 15:08:10 +03:00
Settings.PREFIX_CRUD = os.Getenv("PREFIX_CRUD")
Settings.PREFIX_TABLE = os.Getenv("PREFIX_TABLE")
Settings.TEMPLATE_FOLDERNAME_TABLES = os.Getenv("TEMPLATE_FOLDERNAME_TABLES")
Settings.PREFIX_MODEL = os.Getenv("PREFIX_MODEL")
2023-11-17 14:24:26 +03:00
Settings.TEMPLATE_FOLDERNAME_DB = os.Getenv("TEMPLATE_FOLDERNAME_DB")
Settings.TEMPLATE_FOLDER_CRUD_FUNCTIONS = os.Getenv("TEMPLATE_FOLDER_CRUD_FUNCTIONS")
Settings.TEMPLATE_EXTERNAL_PROTO_FILENAME = os.Getenv("TEMPLATE_EXTERNAL_PROTO_FILENAME")
Settings.TEMPLATE_FOLDERNAME_GRPC_NRPC = os.Getenv("TEMPLATE_FOLDERNAME_GRPC_NRPC")
Settings.NEED_CREATE_MANUAL_FILES = BoolFromString(os.Getenv("NEED_CREATE_MANUAL_FILES"))
Settings.TEMPLATES_CRUD_FILENAME = os.Getenv("TEMPLATES_CRUD_FILENAME")
Settings.TEMPLATES_CRUD_TEST_FILENAME = os.Getenv("TEMPLATES_CRUD_TEST_FILENAME")
Settings.TEMPLATES_ALIAS_FILENAME = os.Getenv("TEMPLATES_ALIAS_FILENAME")
Settings.READY_ALIAS_FILENAME = os.Getenv("READY_ALIAS_FILENAME")
Settings.NEED_CREATE_UPDATE_EVERY_COLUMN = BoolFromString(os.Getenv("NEED_CREATE_UPDATE_EVERY_COLUMN"))
Settings.PREFIX_CLIENT_GRPC = os.Getenv("PREFIX_CLIENT_GRPC")
Settings.TEMPLATES_CRUD_TABLE_UPDATE_FUNC_FILENAME = os.Getenv("TEMPLATES_CRUD_TABLE_UPDATE_FUNC_FILENAME")
Settings.TEMPLATES_CRUD_TABLE_UPDATE_FUNC_TEST_FILENAME = os.Getenv("TEMPLATES_CRUD_TABLE_UPDATE_FUNC_TEST_FILENAME")
Settings.TEMPLATES_CONVERT_ID_FILENAME = os.Getenv("TEMPLATES_CONVERT_ID_FILENAME")
Settings.TEMPLATES_CRUD_FUNCTIONS_RENAME_FILENAME = os.Getenv("TEMPLATES_CRUD_FUNCTIONS_RENAME_FILENAME")
Settings.TEMPLATES_MODEL_CRUD_DELETE_FUNCTIONS_FILENAME = os.Getenv("TEMPLATES_MODEL_CRUD_DELETE_FUNCTIONS_FILENAME")
Settings.TEMPLATES_NAME_REPLACE_FILENAME = os.Getenv("TEMPLATES_NAME_REPLACE_FILENAME")
Settings.TEMPLATES_NULLABLE_FILENAME = os.Getenv("TEMPLATES_NULLABLE_FILENAME")
2023-09-28 17:45:44 +03:00
}
// CurrentDirectory - возвращает текущую директорию ОС
func CurrentDirectory() string {
Otvet, err := os.Getwd()
if err != nil {
//log.Println(err)
}
return Otvet
}
// FillFlags - заполняет параметры из командной строки
func FillFlags() {
Args := os.Args[1:]
if len(Args) > 1 {
return
}
}
2023-10-06 16:48:58 +03:00
// BoolFromString - возвращает true если строка = true, или =1
func BoolFromString(s string) bool {
Otvet := false
s = strings.TrimLeft(s, " ")
s = strings.TrimRight(s, " ")
s = strings.ToLower(s)
if s == "true" || s == "1" {
Otvet = true
}
return Otvet
}
2023-11-17 15:08:31 +03:00
func LoadSettingsTxt() {
var err error
2024-01-15 13:19:27 +03:00
Fill_TEMPLATES_FOLDER_NAME()
2023-11-17 15:08:31 +03:00
DirBin := micro.ProgramDir_bin()
2024-01-15 13:19:27 +03:00
Dir := DirBin + constants.TEMPLATES_FOLDER_NAME + micro.SeparatorFile() + constants.CONFIG_FOLDER_NAME + micro.SeparatorFile()
2023-11-17 15:08:31 +03:00
FilenameEnv := Dir + ".env"
err = ConfigMain.LoadEnv_from_file_err(FilenameEnv)
if err == nil {
return
}
FilenameSettings := Dir + "settings.txt"
err = ConfigMain.LoadEnv_from_file_err(FilenameSettings)
if err != nil {
log.Panic("LoadSettingsTxt() filename: ", FilenameSettings, " error: ", err)
}
}
2024-01-15 13:19:27 +03:00
// Fill_TEMPLATES_FOLDER_NAME - заполняет переменную TEMPLATES_FOLDER_NAME = "templates_main" или "templates"
func Fill_TEMPLATES_FOLDER_NAME() {
DirBin := micro.ProgramDir_bin()
FileName := DirBin + "templates_main"
ok, err := micro.FileExists(FileName)
if err != nil {
log.Panic("FileExists() ", FileName, " error: ", err)
}
if ok == true {
constants.TEMPLATES_FOLDER_NAME = "templates_main"
}
2024-01-17 10:38:22 +03:00
log.Info("TEMPLATES_FOLDER_NAME = ", constants.TEMPLATES_FOLDER_NAME)
2024-01-15 13:19:27 +03:00
}