| blueprint | ||
| cmd | ||
| examples/default | ||
| .gitignore | ||
| go.mod | ||
| go.sum | ||
| main.go | ||
| README.md | ||
Blueprint
Приложение для развертывания базового проекта на языке Golang.
<USER_HOME_DIR>/blueprint - Папка приложения. Здесь хранятся глобально вызываемые Blueprint-проекты.
<TEMP_DIR/blueprint-* - Временная папка приложения, создается на время работы приложения.
Установка и начало работы
1. Добавьте в GOPRIVATE penahub.gitlab.yandexcloud.net/pena-services/blueprint.
Windows (PowerShell):
$Env:GOPRIVATE="penahub.gitlab.yandexcloud.net/pena-services/blueprint"
Linux:
export GOPRIVATE="penahub.gitlab.yandexcloud.net/pena-services/blueprint"
2. Установите пакет Blueprint.
go install penahub.gitlab.yandexcloud.net/pena-services/blueprint@latest
3. Перейдите в папку нового проекта для работы.
cd ./path-to-the-new-project
blueprint
Структура Blueprint-проекта и работа с приложением
Базовый состав Blueprint-проекта
- Blueprint.yaml - файл настройки проекта.
- template - папка хранящая файлы шаблонов кода развертываемого проекта.
Флаги
При вызове приложения без флагов, будет произведен поиск Blueprint-файла и папки template по текущей папке.
-h, -help - Помощь по программе.
-n - Меняет имя проекта, указанное в Blueprint.yaml.
-f - Указать Blueprint-проект хранящийся в папке приложения.
-g - Указать Blueprint-проект хранящийся в git-репозитории.
Blueprint.yaml
Файл настроек должен храниться в корневой папке Blueprint-проекта или в месте вызова приложения, если не были указаны флаги месторасположения Blueprint-проекта.
Рекомендуемое имя файла настроек Blueprint.yaml.
Допустимые имена файла: Blueprint.yaml, Blueprint.yml, blueprint.yaml, blueprint.yml.\
Настройки файла
ProjectName - имя проекта. Значение передается в Template.vars
Description - базовое описание проекта
Template - настройки шаблонизатора
Modules - настройки модулей
Template
Приложение полностью копирует расположение файлов из папки template.
Допустимое разрешение файлов шаблонов: .tmpl
Настройки
path - альтернативное расположение папки.
vars - хеш-таблица значений, доступных в шаблонах. Пример в шаблоне: {{.Vars.SomeValue}}
Модули их настройки и функции
Если модуль не будет указан в файле настроек, то он не будет вызван и не сможет использоваться в шаблонизаторе.
Доступные модули:
- logger
- env
logger
Модуль логгера для шаблонизатора
Настройки
name - Название логгера. Допустимые значения: zap
Функции модуля для шаблонизатора
logger.Import() - возвращает строку для импорта выбранного логгера. Например: {{.Modules.logger.Import}} для zap вернет "go.uber.org/zap".
logger.ImportCore() - возвращает строку для импорта ядра выбранного логгера. Например: {{.Modules.logger.ImportCore}} для zap вернет "go.uber.org/zap/core".
logger.Declaration() - возвращает декларирование выбранного логгера. Например: {{.Modules.logger.Declaration}} для zap вернет:
cfgLogger := zap.NewDevelopmentConfig()
cfgLogger.EncoderConfig.EncodeLevel = zapcore.CapitalColorLevelEncoder
cfgLogger.EncoderConfig.ConsoleSeparator = " "
logger, err := cfgLogger.Build()
if err != nil {
panic(err)
}
logger.Type - возвращает строку с типом выбранного логгера. Например: {{Modules.logger.Type}} для zap вернет *zap.Logger.
logger.Message(messageType string, message string, fields ...any) - принимает messageType как обязательный аргумент, fields должно быть четным, т.к. представляется в виде пары ключ-значение. Ключ всегда оборачивается как строка. Например: {{.Modules.logger.Message "Fatal" "some error" "Error" "err"}} для zap вернет zap.Fatal("some error", zap.Any("Error", err)).
env
Модуль для описания переменных окружения и создания структуры конфигурации приложения.\
Настройки
vars - массив значений переменных окружения.
Принимает объект с полями:
name- имя переменной окружения, в структуре именуется в CamelCase. Обязательное значение.type- тип переменной для структуры. Обязательное значение.default- стандартное значение.required- является ли значение обязательным. По умолчанию: false
Пример:
vars:
- name: APP_NAME
type: string
default: Some app name
required: true
Функции модуля для шаблонизатора
env.Import() - возвращает строку для импорта env. {{.Modules.env.Import}} вернет "github.com/caarlos0/env/v8"
env.Declaration(v string) - возвращает декларирование переменной с заполненной структурой переменных окружения. {{.Modules.env.Declaration config}} вернет
err = env.Parse(config)
if err != nil {
panic(err)
}
env.Struct() - возвращает представленное переменное окружение как структуру. Например {{.Modules.env.Struct}} для примера выше вернет
type Config struct {
AppName string `env:"APP_NAME,required" envDefault:"Some app name"`
}