Экспортирует все диаграммы из файла формата Draw.io Для работы приложения необходим drawio-desktop
Go to file
Алексей Бадяев 74053d6dae
All checks were successful
release / build (push) Successful in 1m13s
release / deploy (push) Successful in 15s
release / build_windows (push) Successful in 39s
build / build_windows (push) Successful in 1m3s
build / build (push) Successful in 1m21s
Исправлена сборка deb-пакета.
2024-11-06 07:56:12 +07:00
.gitea/workflows Переименованы шаги в workflow. 2024-10-18 01:05:56 +07:00
.vscode Улучшен workflow. 2024-10-17 23:43:11 +07:00
build/package Удалён Jenkins pipeline. 2024-10-12 16:20:03 +07:00
cmd/drawio-export Улучшен workflow. 2024-10-17 23:43:11 +07:00
deploy/dput Добавлен gitea workflow. 2024-10-11 11:45:26 +07:00
pkg/drawio Добавлен линтер golangci-lint 2024-10-17 23:29:54 +07:00
scripts Добавлен gitea workflow. 2024-10-11 11:45:26 +07:00
.gitattributes Добавлен линтер golangci-lint 2024-10-17 23:29:54 +07:00
.gitignore Добавлен линтер golangci-lint 2024-10-17 23:29:54 +07:00
.golangci.yaml Добавлен линтер golangci-lint 2024-10-17 23:29:54 +07:00
CHANGELOG.md fixed pipeline 2023-04-12 22:46:47 +07:00
go.mod Добавлен линтер golangci-lint 2024-10-17 23:29:54 +07:00
go.sum Добавлена функция Diagrams() с тестами. 2023-04-08 22:04:55 +07:00
LICENSE Initial commit 2023-04-04 19:00:18 +07:00
makefile Исправлена сборка deb-пакета. 2024-11-06 07:56:12 +07:00
README.md Улучшено README. 2024-10-18 15:38:27 +07:00
report.xml Добавлен линтер golangci-lint 2024-10-17 23:29:54 +07:00

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.