.gitea/workflows | ||
.vscode | ||
build/package | ||
cmd/drawio-export | ||
deploy/dput | ||
pkg/drawio | ||
scripts | ||
.gitattributes | ||
.gitignore | ||
.golangci.yaml | ||
CHANGELOG.md | ||
go.mod | ||
go.sum | ||
LICENSE | ||
makefile | ||
README.md | ||
report.xml |
Go Draw.io Exporter
Автор: Алексей Бадяев aleksei.badiaev@mousesoft.ru
Экспортирует все диаграммы из файла формата Draw.io
.
Для работы необходимо наличие приложения drawio-desktop
.
Разработка
В проекте приняты (не строго обязательные) соглашения Uber Go Style Guide.
Структура проекта
Структура дерева файлов проекта соответствует рекомендациям в Standard Go Project Layout:
build
- Сборка и непрерывная интеграция (Continuous Integration, CI).cmd
- Основные приложения проекта. Имя директории для каждого приложения должно совпадать с именем исполняемого файла, который вы хотите собрать.internal
- Внутренний код приложения и библиотек.pkg
- Код библиотек, пригодных для использования в сторонних приложениях.scripts
- Скрипты для сборки, установки, анализа и прочих операций над проектом.
Линтеры
Отформатировать все исходные тексты проекта в соответствии со стандартом Go можно командой:
go fmt ./...
В проекте используются следующие линтеры:
- go vet
- errcheck
Команда установки линтера:go install github.com/kisielk/errcheck@latest
. - staticcheck
Команда установки линтера:go install honnef.co/go/tools/cmd/staticcheck@latest
. - usestdlibvars
Команда установки линтера:go install github.com/sashamelentyev/usestdlibvars@latest
- shadow
Команда установки линтера:
go install golang.org/x/tools/go/analysis/passes/shadow/cmd/shadow@latest
.
Все перечисленные выше линтеры можно запустить командой:
make lint
Кроме того, в проекте сконфигурирован golangci-lint. Для его запуска можно воспользоваться командой:
make golangci-lint
Компиляция
Все зависимости устанавливаются в папку vendor
командой:
make vendor
Собрать исполняемый файл сервиса можно командой:
make build
После успешного выполнения команды в папке out/bin
в корне проекта появится
исполняемые бинарные файлы.
Версия продукта
Проект версионируется в соответствии с документом
Семантическое Версионирование 2.0.0.
Наименование версии продукта считывается во время сборки проекта из переменной
окружения VERSION
. Если при сборке переменная окружения VERSION
не задана,
то номер версии формируется автоматически из системы контроля версий на основании
последнего тэга, наличия коммитов после него и текущего состояния репозитория
командой:
git describe --always --tags --dirty
При этом если проект собирается из ветки выпуска вида release/1.2.3
, то
то версия принимает вид v1.2.3RC
(что означает "Release Candidate").
Для получения версии приложения необходимо запустить его с параметром --version
:
drawio-export --version
Тестирование
Модульные тесты проекта можно запустить командой:
make test
Отчёт о тестировании
Для получения отчёта о выполнении тестов в формате JUnit XML необходимо установить инструмент:
go install github.com/jstemmer/go-junit-report@latest
Получить отчёт можно командой:
EXPORT_RESULT=true make test
После успешного выполнения команды появится файл out/junit-report.xml
с отчётом в формате JUnit.
Покрытие кода тестами
Для получения отчётов о покрытии кода тестами необходимо установить следующие инструменты:
go install github.com/axw/gocov/gocov@latest
go install github.com/matm/gocov-html/cmd/gocov-html@latest
go install github.com/AlekSi/gocov-xml@latest
Для получения отчёта о покрытии проекта тестами в консоли нужно выполнить команду:
make coverage
Получить отчёт о покрытии кода тестами в формате HTML можно командой:
EXPORT_RESULT=true make coverage
После успешного выполнения этой команды файл out/coverage.html
будет содержать
отчёт о покрытии кода проекта модульными тестами в формате HTML.
Получить отчёт о покрытии кода тестами в формате XML можно командой:
EXPORT_RESULT=true COVERAGE_FORMAT=xml make coverage
После успешного выполнения этой команды файл out/coverage.xml
будет содержать
отчёт о покрытии кода проекта модульными тестами в формате XML.