package
0.0.0-20241225174012-7a0820eadc6a
Repository: https://github.com/chtonad0000/golang.git
Documentation: pkg.go.dev

# README

ciletters

В этой задаче вам предстоит познакомиться со стандартным пакетом text/template, позволяющим генерировать текст в определенном формате, а также с пакетом embed, позволяющим вкомпиливать в исполняемый файл строковые литералы.

Легенда

В gitlab можно подписаться на различные события: успешный build, новый комментарий, решённое issue и др. Вот так, например, выглядит нотификация о сломанном pipeline'е:

Image description

В задаче предлагается сгенерировать письмо подобного содержания в текстовом виде.

Для генерации HTML в языке также имеется стандартный пакет html/template. Работа с ним аналогична работе с text/template, поэтому для простоты в задаче был выбран текстовый формат.

Что нужно сделать?

Нужно реализовать функцию MakeLetter из файла letter.go, которая по go объекту нотификации генерирует её текстовое представление.

Для этого нужно написать text/template шаблон, сохранить его в отдельный файл, а затем получить его содержимое в коде с помомщью go:embed.

Прокомментированный пример из теста

Your pipeline #194613 has failed! // 194613 -- это ID pipeline'а
    Project:      go-spring-2021/gopher // Project состоит из ID группы и ID проекта
    Branch:       🌿 master
    Commit:       8967153e Solve urlfetch. // Первые 8 байт хэша коммита.
    CommitAuthor: gopher
        // Здесь происходит цикл по всем сломанным job'ам
        Stage: test, Job grade // test -- это имя stage'а, а grade -- имя job'а
            // Далее идут последние 10 строк лога gitlab runner'а
            testtool: copying go.mod, go.sum and .golangci.yml
            testtool: running tests
            testtool: > go test -mod readonly -tags private -c -o /tmp/bincache730817117/5d83984f885e61c1 gitlab.com/slon/shad-go/sum
            --- FAIL: TestSum (0.00s)
                sum_test.go:19: 2 + 2 == 0 != 4
                sum_test.go:19: 9223372036854775807 + 1 == 0 != -9223372036854775808
            FAIL
            testtool: task sum failed: test failed: exit status 1
            some tasks failed
            ERROR: Job failed: exit code 1

Объект нотификации описан в notification.go. Обратите внимание на //go:build !change. Этот файл менять не нужно, и на сервере будет использоваться оригинальный вариант.

В реализации нужно подогнать text/template шаблон под требуемый вывод. Функция должна использовать один шаблон. Использовать fmt.Sprintf или конкатенацию строк нельзя.

Вам могут понадобиться:

Проверка решения

Для запуска тестов нужно выполнить следующую команду:

go test -v ./ciletters/...

# Functions

No description provided by the author
No description provided by the author

# Constants

No description provided by the author
No description provided by the author

# Structs

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author

# Type aliases

No description provided by the author