diff --git a/lib/platform/gitlab/index.js b/lib/platform/gitlab/index.js index d2db116c3b4066c710c3bf2cbe4db87130c2ed45..6b94a9b825bdbe4db9f627fdc6d6e57209d8e346 100644 --- a/lib/platform/gitlab/index.js +++ b/lib/platform/gitlab/index.js @@ -1,8 +1,13 @@ const is = require('@sindresorhus/is'); const addrs = require('email-addresses'); +const showdown = require('showdown'); + const get = require('./gl-got-wrapper'); const endpoints = require('../../util/endpoints'); +const converter = new showdown.Converter(); +converter.setFlavor('github'); + let config = {}; module.exports = { @@ -700,7 +705,15 @@ async function mergePr(iid) { function getPrBody(input) { // Convert to HTML using GitHub-flavoured markdown as it is more feature-rich than GitLab's flavour - return input.replace(/Pull Request/g, 'Merge Request').replace(/PR/g, 'MR'); + return converter + .makeHtml(input) + .replace(/Pull Request/g, 'Merge Request') + .replace(/PR/g, 'MR') + .replace( + `<p><details><br />\n<summary>Release Notes</summary></p>`, + '\n<details>\n\n<summary>Release Notes</summary>\n\n' + ) + .replace('<p></details></p>', '\n</details>\n'); // TODO: set maximum length } diff --git a/test/platform/gitlab/__snapshots__/index.spec.js.snap b/test/platform/gitlab/__snapshots__/index.spec.js.snap index e448249ddda3ead7b48b6e4bb45fd1f4dc51b8a3..972298c3acc478922c2083d86ba14f13e429ba64 100644 --- a/test/platform/gitlab/__snapshots__/index.spec.js.snap +++ b/test/platform/gitlab/__snapshots__/index.spec.js.snap @@ -243,7 +243,7 @@ Object { } `; -exports[`platform/gitlab getPrBody(input) returns updated pr body 1`] = `"https://github.com/foo/bar/issues/5 plus also [a link](https://github.com/foo/bar/issues/5)"`; +exports[`platform/gitlab getPrBody(input) returns updated pr body 1`] = `"<p><a href=\\"https://github.com/foo/bar/issues/5\\">https://github.com/foo/bar/issues/5</a> plus also <a href=\\"https://github.com/foo/bar/issues/5\\">a link</a></p>"`; exports[`platform/gitlab getPrFiles() returns files 1`] = ` Array [