6.9 KiB
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"`
}