307 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Groovy
		
	
	
	
	
	
			
		
		
	
	
			307 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Groovy
		
	
	
	
	
	
// SPDX-FileCopyrightText: The openTCS Authors
 | 
						|
// SPDX-License-Identifier: MIT
 | 
						|
 | 
						|
plugins {
 | 
						|
  id 'org.hidetake.swagger.generator' version '2.19.2'
 | 
						|
  // To use AsciiDoctor for documentation
 | 
						|
  id 'org.asciidoctor.jvm.convert' version '3.3.2'
 | 
						|
  id 'org.asciidoctor.jvm.pdf' version '3.3.2'
 | 
						|
}
 | 
						|
 | 
						|
evaluationDependsOn(':opentcs-api-base')
 | 
						|
evaluationDependsOn(':opentcs-api-injection')
 | 
						|
evaluationDependsOn(':opentcs-common')
 | 
						|
evaluationDependsOn(':opentcs-kernel')
 | 
						|
evaluationDependsOn(':opentcs-kernelcontrolcenter')
 | 
						|
evaluationDependsOn(':opentcs-modeleditor')
 | 
						|
evaluationDependsOn(':opentcs-operationsdesk')
 | 
						|
evaluationDependsOn(':opentcs-peripheralcommadapter-loopback')
 | 
						|
evaluationDependsOn(':opentcs-plantoverview-panel-loadgenerator')
 | 
						|
 | 
						|
apply from: "${rootDir}/gradle/java-project.gradle"
 | 
						|
apply from: "${rootDir}/gradle/java-codequality.gradle"
 | 
						|
apply from: "${rootDir}/gradle/publishing-java.gradle"
 | 
						|
 | 
						|
apply plugin: 'distribution'
 | 
						|
 | 
						|
def baseApiDir = file("$buildDir/api-base")
 | 
						|
def injectionApiDir = file("$buildDir/api-injection")
 | 
						|
def webApiDir = file("$buildDir/swagger-ui-servicewebapiv1")
 | 
						|
def configDocDir = file("$buildDir/configdoc")
 | 
						|
def userManualDir = file("$buildDir/users-guide")
 | 
						|
def devManualDir = file("$buildDir/developers-guide")
 | 
						|
def devManualImagesDir = file("$devManualDir/images")
 | 
						|
def releaseNotesDir = file("$buildDir/release-notes")
 | 
						|
def assetsDir = file("src/docs/_assets")
 | 
						|
 | 
						|
ext.collectableDistDir = file("$buildDir/install")
 | 
						|
 | 
						|
configurations {
 | 
						|
  schemagen
 | 
						|
  configdocgen
 | 
						|
}
 | 
						|
 | 
						|
swaggerSources {
 | 
						|
  servicewebapiv1 {
 | 
						|
    inputFile = file("src/docs/service-web-api-v1/openapi.yaml")
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
dependencies {
 | 
						|
  api project(':opentcs-common')
 | 
						|
  api project(':opentcs-kernel')
 | 
						|
 | 
						|
  schemagen project(':opentcs-kernel')
 | 
						|
  schemagen project(':opentcs-modeleditor')
 | 
						|
  schemagen project(':opentcs-operationsdesk')
 | 
						|
  schemagen jar.outputs.files
 | 
						|
 | 
						|
  configdocgen project(':opentcs-kernel')
 | 
						|
  configdocgen project(':opentcs-kernelcontrolcenter')
 | 
						|
  configdocgen project(':opentcs-modeleditor')
 | 
						|
  configdocgen project(':opentcs-operationsdesk')
 | 
						|
  configdocgen jar.outputs.files
 | 
						|
 | 
						|
  swaggerUI group: 'org.webjars', name: 'swagger-ui', version: '3.52.5'
 | 
						|
}
 | 
						|
 | 
						|
distributions {
 | 
						|
  main {
 | 
						|
    contents.from(project(':opentcs-api-base').javadoc.destinationDir) {
 | 
						|
      into('developer/api-base')
 | 
						|
    }
 | 
						|
    contents.from(project(':opentcs-api-injection').javadoc.destinationDir) {
 | 
						|
      into('developer/api-injection')
 | 
						|
    }
 | 
						|
    contents.from(webApiDir) {
 | 
						|
      into('developer/service-web-api-v1')
 | 
						|
    }
 | 
						|
    contents.from(devManualDir) {
 | 
						|
      into('developer/developers-guide')
 | 
						|
    }
 | 
						|
    contents.from(userManualDir) {
 | 
						|
      into('user')
 | 
						|
    }
 | 
						|
    contents.from(releaseNotesDir)
 | 
						|
    contents.from(assetsDir) {
 | 
						|
      into('_assets')
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
task renderDocs {
 | 
						|
  dependsOn project(':opentcs-api-base').javadoc
 | 
						|
  dependsOn project(':opentcs-api-injection').javadoc
 | 
						|
  dependsOn 'asciidoctor'
 | 
						|
  dependsOn 'generateSwaggerUI'
 | 
						|
}
 | 
						|
 | 
						|
installDist.dependsOn renderDocs
 | 
						|
 | 
						|
distTar {
 | 
						|
  enabled = false
 | 
						|
  dependsOn renderDocs
 | 
						|
  archiveBaseName = archiveBaseName.get().toLowerCase()
 | 
						|
}
 | 
						|
 | 
						|
distZip {
 | 
						|
  dependsOn renderDocs
 | 
						|
  archiveBaseName = archiveBaseName.get().toLowerCase()
 | 
						|
}
 | 
						|
 | 
						|
task release {
 | 
						|
  dependsOn build
 | 
						|
  dependsOn installDist
 | 
						|
}
 | 
						|
 | 
						|
asciidoctor {
 | 
						|
  dependsOn 'asciidoctorUsersGuide'
 | 
						|
  dependsOn 'asciidoctorDevelopersGuide'
 | 
						|
  dependsOn 'asciidoctorReleaseNotes'
 | 
						|
  enabled = false
 | 
						|
}
 | 
						|
 | 
						|
task asciidoctorReleaseNotes(type: org.asciidoctor.gradle.jvm.AsciidoctorTask) {
 | 
						|
  // Document type: article (default), book, inline, manpage)
 | 
						|
  options doctype: 'article'
 | 
						|
  // Where to look for AsciiDoc files. Default: src/docs/asciidoc
 | 
						|
  sourceDir = file("src/docs/release-notes")
 | 
						|
  baseDirFollowsSourceDir()
 | 
						|
  // Where to put the rendered documents. Default: $buildDir/asciidoc.
 | 
						|
  outputDir = releaseNotesDir
 | 
						|
  sources {
 | 
						|
    include 'index.adoc'
 | 
						|
    include 'changelog.adoc'
 | 
						|
    include 'contributors.adoc'
 | 
						|
    include 'faq.adoc'
 | 
						|
  }
 | 
						|
  outputOptions {
 | 
						|
    // Whether to put backends' outputs into separate subdirectories
 | 
						|
    separateOutputDirs = false
 | 
						|
    // Set the backends the processor should use: html5 (default), docbook, manpage, pdf, deckjs
 | 
						|
    backends = ['html5']
 | 
						|
  }
 | 
						|
  // Attributes specific to the HTML output
 | 
						|
  attributes 'webfonts': false, // Disable webfonts
 | 
						|
             'iconfont-remote': false, // Disable remote icon fonts
 | 
						|
             'docinfo': "${file('src/docs/release-notes/docinfo.html')}, shared" // The docinfo file references the stylesheets for fonts to use
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
task asciidoctorUsersGuide(type: org.asciidoctor.gradle.jvm.AsciidoctorTask) {
 | 
						|
  dependsOn 'configdocgen'
 | 
						|
  // Document type: article (default), book, inline, manpage)
 | 
						|
  options doctype: 'book'
 | 
						|
  // Where to look for AsciiDoc files. Default: src/docs/asciidoc
 | 
						|
  sourceDir = file("src/docs/users-guide")
 | 
						|
  baseDirFollowsSourceDir()
 | 
						|
  // Where to put the rendered documents. Default: $buildDir/asciidoc.
 | 
						|
  outputDir = userManualDir
 | 
						|
  sources {
 | 
						|
    include 'opentcs-users-guide.adoc'
 | 
						|
  }
 | 
						|
  outputOptions{
 | 
						|
    // Whether to put backends' outputs into separate subdirectories
 | 
						|
    separateOutputDirs = false
 | 
						|
    // Set the backends the processor should use: html5 (default), docbook, manpage, pdf, deckjs
 | 
						|
    backends = ['html5', 'pdf']
 | 
						|
  }
 | 
						|
  attributes 'configdoc': configDocDir,
 | 
						|
             // Attributes specific to the HTML output
 | 
						|
             'webfonts': false, // Disable webfonts
 | 
						|
             'iconfont-remote': false, // Disable remote icon fonts
 | 
						|
             'docinfo': "${file('src/docs/users-guide/docinfo.html')}, shared" // The docinfo file references the stylesheets for fonts to use
 | 
						|
 | 
						|
  resources {
 | 
						|
    from(sourceDir) {
 | 
						|
      include '**/*.jpg'
 | 
						|
      include '**/*.png'
 | 
						|
      include '**/*.svg'
 | 
						|
      exclude 'themes'
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
task asciidoctorDevelopersGuide(type: org.asciidoctor.gradle.jvm.AsciidoctorTask) {
 | 
						|
  // Document type: article (default), book, inline, manpage)
 | 
						|
  options doctype: 'book'
 | 
						|
  // Where to look for AsciiDoc files. Default: src/docs/asciidoc
 | 
						|
  sourceDir = file("src/docs/developers-guide")
 | 
						|
  baseDirFollowsSourceDir()
 | 
						|
  // Where to put the rendered documents. Default: $buildDir/asciidoc.
 | 
						|
  outputDir = devManualDir
 | 
						|
  sources {
 | 
						|
    include 'opentcs-developers-guide.adoc'
 | 
						|
  }
 | 
						|
  outputOptions{
 | 
						|
    // Whether to put backends' outputs into separate subdirectories
 | 
						|
    separateOutputDirs = false
 | 
						|
    // Set the backends the processor should use: html5 (default), docbook, manpage, pdf, deckjs
 | 
						|
    backends = ['html5', 'pdf']
 | 
						|
  }
 | 
						|
  attributes 'documentation-testSrc': project.testSrcDir,
 | 
						|
             'loopback-guiceSrc': project(':opentcs-commadapter-loopback').guiceSrcDir,
 | 
						|
             'peripheral-loopback-guiceSrc': project(':opentcs-peripheralcommadapter-loopback').guiceSrcDir,
 | 
						|
             'controlCenter-guiceSrc': project(':opentcs-kernelcontrolcenter').guiceSrcDir,
 | 
						|
             'kernel-guiceSrc': project(':opentcs-kernel').guiceSrcDir,
 | 
						|
             'loadGeneratorPanel-guiceSrc': project(':opentcs-plantoverview-panel-loadgenerator').guiceSrcDir,
 | 
						|
             'imagesoutdir': devManualImagesDir, // Set the images directory for the output of asciidoctor-diagram
 | 
						|
             // Attributes specific to the HTML output
 | 
						|
             'webfonts': false, // Disable webfonts
 | 
						|
             'iconfont-remote': false, // Disable remote icon fonts
 | 
						|
             'docinfo': "${file('src/docs/developers-guide/docinfo.html')}, shared" // The docinfo file references the stylesheets for fonts to use
 | 
						|
 | 
						|
             // 'docinfo': "${file('src/docs/docinfo.html')}, shared", // doesn't seem to work
 | 
						|
             //'docinfodir': file('src/docs'),
 | 
						|
  resources {
 | 
						|
    from(sourceDir) {
 | 
						|
      include '**/*.png'
 | 
						|
    }
 | 
						|
  }
 | 
						|
  doLast{
 | 
						|
    delete "$devManualDir/.asciidoctor"
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
task configdocgen {
 | 
						|
  dependsOn 'jar'
 | 
						|
  dependsOn ':opentcs-kernel:jar'
 | 
						|
  dependsOn ':opentcs-kernelcontrolcenter:jar'
 | 
						|
  dependsOn ':opentcs-modeleditor:jar'
 | 
						|
  dependsOn ':opentcs-operationsdesk:jar'
 | 
						|
 | 
						|
  doLast {
 | 
						|
    mkdir(configDocDir)
 | 
						|
 | 
						|
    javaexec {
 | 
						|
      classpath configurations.configdocgen
 | 
						|
      mainClass = "org.opentcs.documentation.ConfigDocGenerator"
 | 
						|
      args = [
 | 
						|
        "org.opentcs.kernel.KernelApplicationConfiguration",
 | 
						|
        "${configDocDir}/KernelApplicationConfigurationEntries.adoc",
 | 
						|
 | 
						|
        "org.opentcs.kernel.OrderPoolConfiguration",
 | 
						|
        "${configDocDir}/OrderPoolConfigurationEntries.adoc",
 | 
						|
 | 
						|
        "org.opentcs.strategies.basic.dispatching.DefaultDispatcherConfiguration",
 | 
						|
        "${configDocDir}/DefaultDispatcherConfigurationEntries.adoc",
 | 
						|
 | 
						|
        "org.opentcs.strategies.basic.routing.DefaultRouterConfiguration",
 | 
						|
        "${configDocDir}/DefaultRouterConfigurationEntries.adoc",
 | 
						|
 | 
						|
        "org.opentcs.strategies.basic.routing.jgrapht.ShortestPathConfiguration",
 | 
						|
        "${configDocDir}/ShortestPathConfigurationEntries.adoc",
 | 
						|
 | 
						|
        "org.opentcs.strategies.basic.routing.edgeevaluator.ExplicitPropertiesConfiguration",
 | 
						|
        "${configDocDir}/ExplicitPropertiesConfigurationEntries.adoc",
 | 
						|
 | 
						|
        "org.opentcs.strategies.basic.peripherals.dispatching.DefaultPeripheralJobDispatcherConfiguration",
 | 
						|
        "${configDocDir}/DefaultPeripheralJobDispatcherConfigurationEntries.adoc",
 | 
						|
 | 
						|
        "org.opentcs.kernel.extensions.adminwebapi.AdminWebApiConfiguration",
 | 
						|
        "${configDocDir}/AdminWebApiConfigurationEntries.adoc",
 | 
						|
 | 
						|
        "org.opentcs.kernel.extensions.servicewebapi.ServiceWebApiConfiguration",
 | 
						|
        "${configDocDir}/ServiceWebApiConfigurationEntries.adoc",
 | 
						|
 | 
						|
        "org.opentcs.kernel.extensions.rmi.RmiKernelInterfaceConfiguration",
 | 
						|
        "${configDocDir}/RmiKernelInterfaceConfigurationEntries.adoc",
 | 
						|
 | 
						|
        "org.opentcs.kernel.SslConfiguration",
 | 
						|
        "${configDocDir}/KernelSslConfigurationEntries.adoc",
 | 
						|
 | 
						|
        "org.opentcs.virtualvehicle.VirtualVehicleConfiguration",
 | 
						|
        "${configDocDir}/VirtualVehicleConfigurationEntries.adoc",
 | 
						|
 | 
						|
        "org.opentcs.commadapter.peripheral.loopback.VirtualPeripheralConfiguration",
 | 
						|
        "${configDocDir}/VirtualPeripheralConfigurationEntries.adoc",
 | 
						|
 | 
						|
        "org.opentcs.kernel.extensions.watchdog.WatchdogConfiguration",
 | 
						|
        "${configDocDir}/WatchdogConfigurationEntries.adoc",
 | 
						|
 | 
						|
        "org.opentcs.kernelcontrolcenter.util.KernelControlCenterConfiguration",
 | 
						|
        "${configDocDir}/KernelControlCenterApplicationConfigurationEntries.adoc",
 | 
						|
 | 
						|
        "org.opentcs.kernelcontrolcenter.exchange.SslConfiguration",
 | 
						|
        "${configDocDir}/KccSslConfigurationEntries.adoc",
 | 
						|
 | 
						|
        "org.opentcs.guing.common.exchange.SslConfiguration",
 | 
						|
        "${configDocDir}/PoSslConfigurationEntries.adoc",
 | 
						|
 | 
						|
        "org.opentcs.modeleditor.util.ModelEditorConfiguration",
 | 
						|
        "${configDocDir}/ModelEditorConfigurationEntries.adoc",
 | 
						|
 | 
						|
        "org.opentcs.modeleditor.util.ElementNamingSchemeConfiguration",
 | 
						|
        "${configDocDir}/PO_ElementNamingSchemeConfigurationEntries.adoc",
 | 
						|
 | 
						|
        "org.opentcs.operationsdesk.util.OperationsDeskConfiguration",
 | 
						|
        "${configDocDir}/OperationsDeskConfigurationEntries.adoc"
 | 
						|
      ]
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
publishing {
 | 
						|
  ((MavenPublication) publications.getByName(project.name + '_mavenJava')).artifact(distZip)
 | 
						|
}
 |