Git diff в HTML
Я пишу webhook в Go, который отправляет мне электронное письмо с diff для каждого коммита в определенный репозиторий. Прямо сейчас я отправляю diff как текст:
https://github.com/ee92/go-lambda/commit/ac56fc2cfe86c50e9d73ecb0f8db74c672e205cd.diff
Я хочу отправить его в формате HTML с красивым форматом, как вы видите на github или bitbucket, чтобы было легче прочитать, что изменилось. Действительно в тупик о том, как идти об этом. Ценю любые советы. Благодарю.
1 ответ
Вы могли бы использовать stdlib html/template
библиотека для создания красивого HTML-шаблона и передачи вашей необработанной строки в качестве параметра:
https://golang.org/pkg/html/template/
import "text/template"
...
t, err := template.New("foo").Parse(`{{define "T"}}Hello, {{.}}!{{end}}`)
err = t.ExecuteTemplate(out, "T", "<script>alert('you have been pwned')</script>")
будет производить это:
Hello, <script>alert('you have been pwned')</script>!
Итак, в вашем случае определите шаблон в отдельном файле, прочитайте его, а затем вызовите
t, err := template.ParseFiles("./path/to/template.html")
if err != nil {
log.Fatal(err)
}
err = t.ExecuteTemplate(out, "T", rawDiffString)
if err != nil {
log.Fatal(err)
}
который возьмет вашу строку сравнения и вставит ее в шаблон везде, где вы определили переменную шаблона.
Вам нужно будет прочитать спецификацию того, как Go анализирует HTML-шаблон, чтобы правильно отформатировать HTML-файл.