|
1 |
| - |
| 1 | +import groovy.text.SimpleTemplateEngine |
2 | 2 | import org.apache.tools.ant.filters.ReplaceTokens
|
3 | 3 | import org.gradle.plugins.signing.Sign
|
| 4 | +import org.kohsuke.github.* |
| 5 | + |
| 6 | +buildscript { |
| 7 | + repositories { |
| 8 | + jcenter() |
| 9 | + maven { |
| 10 | + url "https://plugins.gradle.org/m2/" |
| 11 | + } |
| 12 | + } |
| 13 | + dependencies { |
| 14 | + classpath 'org.kohsuke:github-api:1.90' |
| 15 | + } |
| 16 | +} |
4 | 17 |
|
5 | 18 | plugins {
|
6 | 19 | id 'java'
|
@@ -235,13 +248,21 @@ gitPublish {
|
235 | 248 | def pgType = project.hasProperty('ghPageType') ? ghPageType : 'latest'
|
236 | 249 | if(pgType == 'init') {
|
237 | 250 | from file("ghpages")
|
| 251 | + } else if(pgType == 'list') { |
| 252 | + from file("build/release-list") |
238 | 253 | } else {
|
239 | 254 | from file("${asciidoctor.outputDir.path}/html5")
|
240 | 255 | from file("build/docs")
|
241 | 256 | }
|
242 | 257 | def docDir = Boolean.valueOf(textIoReleaseBuild) ? 'releases' : 'snapshots'
|
243 | 258 | if(pgType == 'init') {
|
244 | 259 | into "."
|
| 260 | + } else if(pgType == 'list') { |
| 261 | + into "." |
| 262 | + preserve { |
| 263 | + include '**' |
| 264 | + exclude "releases.md" |
| 265 | + } |
245 | 266 | } else if(pgType == 'version') {
|
246 | 267 | gitPublishPush.enabled = (docDir != 'snapshots')
|
247 | 268 | into "$docDir/$textIoVersion"
|
@@ -338,6 +359,57 @@ def configureJavadoc(task) {
|
338 | 359 | }
|
339 | 360 | }
|
340 | 361 |
|
| 362 | +task "update-release-list" { |
| 363 | + doLast { |
| 364 | + def docBaseUrl = 'https://beryx.github.io/text-io' |
| 365 | + updateReleaseList(docBaseUrl) |
| 366 | + } |
| 367 | +} |
| 368 | + |
| 369 | +def updateReleaseList(String docBaseUrl) { |
| 370 | + List<String> releases = getReleases() |
| 371 | + def markdown = getReleasesMarkdown(releases, docBaseUrl) |
| 372 | + def releaseListDir = new File('build/release-list') |
| 373 | + releaseListDir.mkdirs() |
| 374 | + new File(releaseListDir, 'releases.md').write(markdown) |
| 375 | +} |
| 376 | + |
| 377 | +def getReleases() { |
| 378 | + GitHub gitHubApi = GitHub.connectUsingPassword(System.getenv('GH_PAGES_ACCESS_TOKEN') ?: '', '') |
| 379 | + def releases = gitHubApi.getOrganization("beryx") |
| 380 | + .getRepository("text-io") |
| 381 | + .getDirectoryContent("releases", "gh-pages")*.name |
| 382 | + releases.removeAll { !it || it == 'latest' } |
| 383 | + releases.reverse() |
| 384 | +} |
| 385 | + |
| 386 | +def getReleasesMarkdown(List<String> releases, String docBaseUrl) { |
| 387 | + def releasesTemplate = ''' |
| 388 | + ## List of all releases ## |
| 389 | + |
| 390 | + **Latest snapshot** |
| 391 | + - [documentation]($docBaseUrl/snapshots/latest) |
| 392 | + - [javadoc]($docBaseUrl/snapshots/latest/javadoc) |
| 393 | + |
| 394 | + <% releases.each { %>**Release $it** |
| 395 | + - [documentation]($docBaseUrl/releases/$it) |
| 396 | + - [javadoc]($docBaseUrl/releases/$it/javadoc) |
| 397 | + |
| 398 | + <% } %> |
| 399 | + '''.stripIndent() |
| 400 | + |
| 401 | + def engine = new SimpleTemplateEngine() |
| 402 | + def template = engine.createTemplate(releasesTemplate) |
| 403 | + def binding = [ |
| 404 | + docBaseUrl: docBaseUrl, |
| 405 | + releases : releases |
| 406 | + ] |
| 407 | + |
| 408 | + template.make(binding).toString() |
| 409 | +} |
| 410 | + |
| 411 | + |
| 412 | + |
341 | 413 | def readFromConsole(prompt) {
|
342 | 414 | readFromConsole('', prompt)
|
343 | 415 | }
|
|
0 commit comments