Files
cbsnexora-backend/fineract-doc/build.gradle
T
Adam Monsen 67272d1aea FINERACT-2336: improve asciidoc post-1.12.1 release
* update release notice years in NOTICE_RELEASE and NOTICE_SOURCE
* step 5
  * simplify mention of tests: "Ensure all tests pass for this commit both in CI and locally"
  * recommend GPG signing annotated release tag
* step 8: improve svn commands
  * This way is simpler and more efficient, especially with a bunch of release candidate dirs in the staging area.
* step 10: mention need to test rc before +1 vote -- See:
  * https://www.apache.org/legal/release-policy.html#release-approval
  * https://www.apache.org/legal/release-policy.html#approving-a-release
* step 12: only PMC members can upload releases
* step 13: simplify & explain "finalize branch" instructions
  * Document what worked for me for 1.12.1.
  * I didn't need to create the extra `merge-$VERSION` branch and do the recursive merge.
* document how asciidoctor upgrade is blocked
  * see "official docs - deps stuck" thread on fineract dev mailing list
  * https://lists.apache.org/thread/7mmsj13spb11vgz0z38fhwgzwtq03brr
  * can't upgrade to 4.x because of one of these:
    * https://github.com/asciidoctor/asciidoctorj-pdf/issues/25
    * https://github.com/jruby/jruby/issues/5573
    * https://github.com/asciidoctor/asciidoctorj-pdf/issues/16
* improve asciidoc config - opt for simplicity where the complexity adds nothing
  * compat-mode is off by default, no need for it here
  * default optimization should be fine
  * media should have been screen | print | prepress, just leave it as default instead
  * page size? I really don't think this is going to be printed much, just go with default
  * PDF version 1.8 is invalid, just use the default unless we someday have a good reason to pin this
  * reduce copyright years sources of truth
  * see also: https://docs.asciidoctor.org/pdf-converter/latest/asciidoc-attributes/
* remove unnecessary asciidoctorj 3.0.0 version string -- no need to pin this
* remove prompt character from Bash shell examples
  * it isn't properly syntax-highlighted and it looks confusing with line numbers (which we might want to add)
  * it isn't necessary
  * the prompt character ("%" in this case) is not typically included in shell code examples because it makes it harder to copy and paste shell code examples
  * $ is likely more common than % (at least on Debian/Ubuntu), but either way I'd say exclude it
* fix source code syntax labels - use "bash" only when it is actually Bash shell code
* persistence.adoc
  * fix broken enumerated list
    * resolves these warnings seen with, e.g.: `gradle --info doc`
    * `Jul 27, 2025 8:26:48 PM uri:classloader:/gems/asciidoctor-2.0.10/lib/asciidoctor/parser.rb parse_list_item`
    * `WARNING: chapters/architecture/persistence.adoc: line 104: list item index: expected 1, got 2`
    * `Jul 27, 2025 8:26:48 PM uri:classloader:/gems/asciidoctor-2.0.10/lib/asciidoctor/parser.rb parse_list`
    * `WARNING: chapters/architecture/persistence.adoc: line 110: list item index: expected 1, got 3`
  * fix wrapping (we use hardbreaks)
  * fix typo: `s/plane text/plain text/`
* switch to rouge syntax highlighter - it handles more source languages
* fix broken long shell code lines
* fix .avro file syntax highlighting (it's JSON)
* configuration-gpg.adoc
  * fix accidental block continuation
    * One little plus sign was making `= Email` appear verbatim in rendered output because it was interpreted as a list continuation.
    * See https://docs.asciidoctor.org/asciidoc/latest/lists/continuation/#list-continuation
  * recommend more secure keys
  * add a line continuation for an enumerated list
* architecture-overview.puml: remove this unused (likely a "Hello World") diagram
* release-schedule.puml: fix pluralization of days
  * purely aesthetic: doesn't affect chart rendering
* fix src/bin/binary tarball name typos
  * missed a few in e090da2a01
* fix release branch name
  * must match `release/{revnumber}`, per gitVersioning stanza in top level build.gradle
* harden.adoc: fix broken link to CISA
* fineract-doc/build.gradle
  * ensure HTML task has diagrams and images availble
2025-08-07 07:02:10 -07:00

117 lines
3.2 KiB
Groovy

/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
apply plugin: 'org.asciidoctor.jvm.convert'
apply plugin: 'org.asciidoctor.jvm.pdf'
// see also: https://asciidoctor.github.io/asciidoctor-gradle-plugin/master/user-guide/
asciidoctorj {
attributes = [
version: "${project.version}",
docdate: new Date(),
generated: "${buildDir}/generated/asciidoc",
imagesdir: "${buildDir}/generated/images",
diagramsdir: "${buildDir}/generated/diagrams",
years: '2015-2025',
revnumber: "${project.version}".toString(),
rootdir: "${rootDir}".toString(),
baseurl: 'fineract.apache.org',
]
modules {
diagram.use()
}
fatalWarnings ~/include file not found|missing callout|image to embed not found or not readable/
fatalWarnings missingIncludes()
}
task copyImages(type: Copy) {
from "${projectDir}/src/docs/en/images"
into "${buildDir}/generated/images"
}
task copyDiagrams(type: Copy) {
from "${projectDir}/src/docs/en/diagrams"
into "${buildDir}/generated/diagrams"
}
asciidoctor {
languages 'en'
baseDir 'src/docs'
sourceDir 'src/docs'
sources {
include('index.adoc')
}
outputDir 'build/docs/html'
logging.captureStandardError LogLevel.INFO
dependsOn copyImages, copyDiagrams
dependsOn(':fineract-client:clean', ':fineract-client:buildAsciidoc')
}
asciidoctorPdf {
languages 'en'
baseDir 'src/docs'
sourceDir 'src/docs'
sources {
include('index.adoc')
}
outputDir 'build/docs/pdf'
logging.captureStandardError LogLevel.INFO
dependsOn copyImages, copyDiagrams
// TODO: @vidakovic prepare a nicer theme
// theme 'fineract-default'
// pdfThemes {
// local 'fineract-default', {
// themeDir = "$projectDir/src/resources/themes"
// }
// }
// fontsDir "$projectDir/src/resources/fonts"
dependsOn(':fineract-client:clean', ':fineract-client:buildAsciidoc')
}
task doc(type: Zip) {
dependsOn(asciidoctor, asciidoctorPdf)
into("fineract-${project.version}/html") {
from("$buildDir/docs/html") {
include "**/*"
exclude "**/.asciidoctor"
}
}
into("fineract-${project.version}/pdf") {
from("$buildDir/docs/pdf") {
include "**/index.pdf"
exclude "**/.asciidoctor"
rename {
"fineract-${project.version}.pdf"
}
}
}
archiveFileName = "${project.name}-${project.version}.zip"
}