diff --git a/00-docs/src/docs/development/initCompany.md b/00-docs/src/docs/development/initCompany.md index 912c3e2b..0675af89 100644 --- a/00-docs/src/docs/development/initCompany.md +++ b/00-docs/src/docs/development/initCompany.md @@ -48,11 +48,11 @@ open helperCompany.scala //> using toolkit 0.5.0 //> using dep io.github.pme123::camundala-helper:@VERSION@ - import camundala.helper.dev.DevCompanyRunner + import camundala.helper.dev.DevCompanyHelper @main def run(command: String, arguments: String*): Unit = - DevCompanyRunner.run(command, arguments*) + DevCompanyHelper.run(command, arguments*) ``` 1. Make the file executable: diff --git a/00-docs/src/docs/exampleApi/OpenApi.html b/00-docs/src/docs/exampleApi/OpenApi.html index cc6cff45..75105324 100644 --- a/00-docs/src/docs/exampleApi/OpenApi.html +++ b/00-docs/src/docs/exampleApi/OpenApi.html @@ -87,7 +87,7 @@ }); } - + \ No newline at end of file diff --git a/00-docs/src/docs/functionalityDsls/apiDoc.md b/00-docs/src/docs/functionalityDsls/apiDoc.md index 37b3787e..a35b12cb 100644 --- a/00-docs/src/docs/functionalityDsls/apiDoc.md +++ b/00-docs/src/docs/functionalityDsls/apiDoc.md @@ -78,7 +78,7 @@ We can group our `api`s. - This creates a YAML file (Open API) with your documentation. - In the console you find the paths to the created documentation. - - By default it's here: `YOUR_PROJECT_PATH/openApi.yml` + - By default it's here: `YOUR_PROJECT_PATH/OpenApi.yml` - There is also a link to an HTML (`YOUR_PROJECT_PATH/OpenApi.html`). You can copy it from here [OpenApi.html](https://github.com/pme123/camundala-example/blob/master/OpenApi.html) - Open `OpenApi.html` in a webserver (e.g. from your IDE). @@ -122,7 +122,7 @@ case class ApiConfig( endpoint: String = "http://localhost:8080/engine-rest", // Base Path of your project (if changed - all doc paths will be adjusted) basePath: os.Path = os.pwd, - openApiPath: os.Path = os.pwd / "openApi.yml", + openApiPath: os.Path = os.pwd / "OpenApi.yml", postmanOpenApiPath: os.Path = os.pwd / "postmanOpenApi.yml", openApiDocuPath: os.Path = os.pwd / "OpenApi.html", postmanOpenApiDocuPath: os.Path = os.pwd / "PostmanOpenApi.html", diff --git a/03-api/src/main/scala/camundala/api/ApiConfig.scala b/03-api/src/main/scala/camundala/api/ApiConfig.scala index ec39fbab..094f2074 100644 --- a/03-api/src/main/scala/camundala/api/ApiConfig.scala +++ b/03-api/src/main/scala/camundala/api/ApiConfig.scala @@ -37,10 +37,10 @@ case class ApiConfig( ): val catalogPath: os.Path = basePath / catalogFileName - lazy val openApiPath: os.Path = basePath / "03-api" / "OpenApi.yml" - lazy val postmanOpenApiPath: os.Path = basePath / "03-api" / "PostmanOpenApi.yml" - lazy val openApiDocuPath: os.Path = basePath / "03-api" / "OpenApi.html" - lazy val postmanOpenApiDocuPath: os.Path = basePath / "03-api" / "PostmanOpenApi.html" + lazy val openApiPath: os.Path = basePath / ApiConfig.openApiPath + lazy val postmanOpenApiPath: os.Path = basePath / ApiConfig.postmanOpenApiPath + lazy val openApiDocuPath: os.Path = basePath / ApiConfig.openApiHtmlPath + lazy val postmanOpenApiDocuPath: os.Path = basePath / ApiConfig.postmanOpenApiHtmlPath lazy val projectGroups: Seq[ProjectGroup] = projectsConfig.projectConfigs .map(_.group) @@ -51,7 +51,7 @@ case class ApiConfig( def withBasePath(path: os.Path): ApiConfig = copy( - basePath = path, + basePath = path ) def withEndpoint(ep: String): ApiConfig = @@ -97,6 +97,11 @@ case class ApiConfig( lazy val projectConfPath: Path = basePath / projectsConfig.projectConfPath end ApiConfig +object ApiConfig: + lazy val openApiPath: os.RelPath = os.rel / "03-api" / "OpenApi.yml" + lazy val postmanOpenApiPath: os.RelPath = os.rel / "03-api" / "PostmanOpenApi.yml" + lazy val openApiHtmlPath: os.RelPath = os.rel / "03-api" / "OpenApi.html" + lazy val postmanOpenApiHtmlPath: os.RelPath = os.rel / "03-api" / "PostmanOpenApi.html" case class ProjectsConfig( // Path, where the Git Projects are cloned - for dependency check. @@ -157,10 +162,10 @@ case class ProjectsConfig( projectNames.find(refIdent.startsWith) .map(pn => - refIdent.replace(s"$pn-", "") // case myCompany-myProject-myProcess + refIdent.replace(s"$pn-", "") // case myCompany-myProject-myProcess .replace(s"$companyId-", "") // case myCompany-myProject > where no myProcess ) - .orElse( // case myProject-myProcess + .orElse( // case myProject-myProcess projectNames.map(_.replace(s"$companyId-", "")) .find(refIdent.startsWith) .map(pn => @@ -223,7 +228,7 @@ case class ProjectConfig( group: ProjectGroup, color: String = "#fff" ): - def absGitPath(gitDir: os.Path): os.Path = gitDir / name + def absGitPath(gitDir: os.Path): os.Path = gitDir / name def absBpmnPath(gitDir: os.Path): os.Path = absGitPath(gitDir) / bpmnPath end ProjectConfig diff --git a/03-api/src/main/scala/camundala/api/ApiCreator.scala b/03-api/src/main/scala/camundala/api/ApiCreator.scala index b59e51f3..ce75d0cd 100644 --- a/03-api/src/main/scala/camundala/api/ApiCreator.scala +++ b/03-api/src/main/scala/camundala/api/ApiCreator.scala @@ -1,7 +1,9 @@ package camundala.api +import camundala.BuildInfo import camundala.bpmn.InputParams import camundala.domain.* +import com.typesafe.config.ConfigFactory import io.circe.Encoder import sttp.apispec.openapi.* import sttp.apispec.openapi.circe.yaml.* @@ -12,10 +14,11 @@ import sttp.tapir.docs.openapi.{OpenAPIDocsInterpreter, OpenAPIDocsOptions} import java.text.SimpleDateFormat import java.util.Date import scala.util.matching.Regex +import scala.jdk.CollectionConverters.* trait ApiCreator extends PostmanApiCreator, TapirApiCreator, App: - protected def companyDescr: String + protected def companyProjectVersion: String protected def projectDescr: String def supportedVariables: Seq[InputParams] = @@ -254,6 +257,47 @@ trait ApiCreator extends PostmanApiCreator, TapirApiCreator, App: matches.foldLeft(line)((a, b) => a.replace(b, s"[$b]($url/$b)")) replaceJira(changed, tail.toMap) + protected def packageConf = + if packageConfPath.toIO.exists() then + s"""# Package Configuration + |**Check all dependency trees here: [$projectName](../../dependencies/$projectName.html)** + | + |$dependencies + | + |
+ |${apiConfig.projectsConfig.projectConfPath} + |

+ | + |``` + | + |${os.read(packageConfPath).trim} + | + |``` + | + |

+ |
+ |""".stripMargin + else "" + + protected def dependencies: String = + + def docPortal(pckg: String) = apiConfig.docProjectUrl(pckg) / "OpenApi.html" + + val projects = apiConfig.projectsConfig.groupedConfigs.flatMap(_.projects) + println(s"Projects: $projects") + def documentations = + projects.map(pc => pc.name -> docPortal(pc.name)).toMap + + s"""|### Dependencies: + | + |${ + apiProjectConf.dependencies + .map(dep => s"- _**[${dep.name}](${documentations.getOrElse(dep.name, "NOT FOUND")})**_") + .mkString("\n") + } + |""".stripMargin + end dependencies + protected def createReadme(): String = val readme = basePath / "README.md" if readme.toIO.exists() then @@ -264,7 +308,6 @@ trait ApiCreator extends PostmanApiCreator, TapirApiCreator, App: protected def description: String = s""" - |$companyDescr | |$projectDescr | @@ -272,12 +315,19 @@ trait ApiCreator extends PostmanApiCreator, TapirApiCreator, App: | |**See the [Camundala Documentation](https://pme123.github.io/camundala/)** | + |$packageConf + | |${createReadme()} | |${createChangeLog()} | |${createGeneralVariables()} | + |> Created with: + |> - [camundala-api v${BuildInfo.version}](https://github.com/pme123/camundala) + |> - ${apiProjectConf.org}-camundala-api $companyProjectVersion + |> - ${apiProjectConf.org}-camundala-helper + | |""".stripMargin protected def postmanDescription: String = @@ -347,4 +397,8 @@ trait ApiCreator extends PostmanApiCreator, TapirApiCreator, App: private def listOfStringsOrCommaSeparated(example: String) = s"""It is also possible to use a _comma separated_ String, |like `"$example"`""".stripMargin + + private lazy val packageConfPath = apiConfig.basePath / apiConfig.projectsConfig.projectConfPath + private lazy val apiProjectConf = ApiProjectConf(packageConfPath) + end ApiCreator diff --git a/03-api/src/test/scala/camundala/api/ApiCreatorTest.scala b/03-api/src/test/scala/camundala/api/ApiCreatorTest.scala index 873cbf31..573eeacc 100644 --- a/03-api/src/test/scala/camundala/api/ApiCreatorTest.scala +++ b/03-api/src/test/scala/camundala/api/ApiCreatorTest.scala @@ -16,7 +16,7 @@ class ApiCreatorTest extends munit.FunSuite, DefaultApiCreator: def title: String = ??? def version: String = ??? - lazy val companyDescr: String = "" + lazy val companyProjectVersion: String = "0.1.0" lazy val projectDescr: String = "" test("testReplaceJira") { diff --git a/03-api/src/test/scala/camundala/api/TestApiCreator.scala b/03-api/src/test/scala/camundala/api/TestApiCreator.scala index 0c1d6cd6..4112f081 100644 --- a/03-api/src/test/scala/camundala/api/TestApiCreator.scala +++ b/03-api/src/test/scala/camundala/api/TestApiCreator.scala @@ -12,7 +12,7 @@ object TestApiCreator extends DefaultApiCreator, BpmnProcessDsl, App: def title = "Test API" def version = "1.0" - + lazy val companyProjectVersion: String = "0.1.0" lazy val projectDescr: String = "" override val apiConfig: ApiConfig = diff --git a/04-helper/src/main/resources/OpenApi.html b/04-helper/src/main/resources/OpenApi.html index 403764e0..cfab7a6f 100644 --- a/04-helper/src/main/resources/OpenApi.html +++ b/04-helper/src/main/resources/OpenApi.html @@ -74,7 +74,7 @@ }); } - + diff --git a/04-helper/src/main/scala/camundala/helper/dev/company/CompanyScriptCreator.scala b/04-helper/src/main/scala/camundala/helper/dev/company/CompanyScriptCreator.scala index d8100bbd..46d1981c 100644 --- a/04-helper/src/main/scala/camundala/helper/dev/company/CompanyScriptCreator.scala +++ b/04-helper/src/main/scala/camundala/helper/dev/company/CompanyScriptCreator.scala @@ -11,11 +11,11 @@ case class CompanyScriptCreator()(using config: DevConfig): |//> using toolkit 0.5.0 |//> using dep io.github.pme123::camundala-helper:${VersionHelper.camundalaVersion} | - |import camundala.helper.dev.DevCompanyRunner + |import camundala.helper.dev.DevCompanyHelper | | @main | def run(command: String, arguments: String*): Unit = - | DevCompanyRunner.run(command, arguments*) + | DevCompanyHelper.run(command, arguments*) |""".stripMargin lazy val companyCamundalaHelper = diff --git a/04-helper/src/main/scala/camundala/helper/dev/company/CompanyWrapperGenerator.scala b/04-helper/src/main/scala/camundala/helper/dev/company/CompanyWrapperGenerator.scala index 50ba9076..ba621017 100644 --- a/04-helper/src/main/scala/camundala/helper/dev/company/CompanyWrapperGenerator.scala +++ b/04-helper/src/main/scala/camundala/helper/dev/company/CompanyWrapperGenerator.scala @@ -43,7 +43,8 @@ case class CompanyWrapperGenerator()(using config: DevConfig): |""".stripMargin private lazy val apiWrapper = - s"""package $companyName.camundala.api + s"""package $companyName.camundala + |package api | |/** | * Add here company specific stuff, to create the Api documentation and the Postman collection. @@ -53,7 +54,7 @@ case class CompanyWrapperGenerator()(using config: DevConfig): | // override the config if needed | protected def apiConfig: ApiConfig = CompanyApiCreator.apiConfig | - | lazy val companyDescr = ??? //TODO Add your Company Description! + | lazy val companyProjectVersion = BuildInfo.version | |object CompanyApiCreator: | lazy val apiConfig = ApiConfig(companyId = "$companyName") diff --git a/04-helper/src/main/scala/camundala/helper/dev/publish/PublishHelper.scala b/04-helper/src/main/scala/camundala/helper/dev/publish/PublishHelper.scala index 29371a16..4dd81159 100644 --- a/04-helper/src/main/scala/camundala/helper/dev/publish/PublishHelper.scala +++ b/04-helper/src/main/scala/camundala/helper/dev/publish/PublishHelper.scala @@ -1,9 +1,7 @@ package camundala.helper.dev.publish import camundala.api.ApiConfig -import camundala.helper.dev.publish.ChangeLogUpdater import camundala.helper.util.{DevConfig, Helpers, PublishConfig} -import com.typesafe.config.{Config, ConfigFactory} case class PublishHelper()(using devConfig: DevConfig, diff --git a/04-helper/src/main/scala/camundala/helper/dev/publish/WebDAV.scala b/04-helper/src/main/scala/camundala/helper/dev/publish/WebDAV.scala index 6b08b911..f0246e6b 100644 --- a/04-helper/src/main/scala/camundala/helper/dev/publish/WebDAV.scala +++ b/04-helper/src/main/scala/camundala/helper/dev/publish/WebDAV.scala @@ -58,8 +58,8 @@ case class ProjectWebDAV(projectName: String, apiConfig: ApiConfig, publishConfi end try // create new sardine.createDirectory(projectUrl) - sardine.put(s"${apiConfig.openApiDocuPath}", openApiHtml, contentTypeHtml) - sardine.put(s"${apiConfig.openApiPath}", openApiYml, contentTypeYaml) + sardine.put(s"$projectUrl/OpenApi.html", openApiHtml, contentTypeHtml) + sardine.put(s"$projectUrl/OpenApi.yml", openApiYml, contentTypeYaml) postmanApiYml.foreach(pApi => sardine.put( s"$projectUrl/postmanCollection.json", @@ -104,7 +104,7 @@ case class ProjectWebDAV(projectName: String, apiConfig: ApiConfig, publishConfi private lazy val openApiHtml = os.read.inputStream(publishConfig.openApiHtmlPath) private lazy val openApiYml = os - .read(os.pwd / "openApi.yml") + .read(apiConfig.openApiPath) .getBytes(StandardCharsets.UTF_8) private lazy val postmanApiYml = val path = os.pwd / "postmanCollection.json" diff --git a/04-helper/src/main/scala/camundala/helper/dev/update/ApiGenerator.scala b/04-helper/src/main/scala/camundala/helper/dev/update/ApiGenerator.scala index a844ca80..86c2cd08 100644 --- a/04-helper/src/main/scala/camundala/helper/dev/update/ApiGenerator.scala +++ b/04-helper/src/main/scala/camundala/helper/dev/update/ApiGenerator.scala @@ -200,7 +200,7 @@ case class ApiGenerator()(using config: DevConfig): | }); | } | - | + | | | | diff --git a/04-helper/src/main/scala/camundala/helper/openApi/OpenApiConfig.scala b/04-helper/src/main/scala/camundala/helper/openApi/OpenApiConfig.scala index b64275a3..a7fa23ba 100644 --- a/04-helper/src/main/scala/camundala/helper/openApi/OpenApiConfig.scala +++ b/04-helper/src/main/scala/camundala/helper/openApi/OpenApiConfig.scala @@ -1,5 +1,6 @@ package camundala.helper.openApi +import camundala.api.ApiConfig import camundala.helper.util.ModuleConfig case class OpenApiConfig( diff --git a/05-examples/demos/03-api/src/main/scala/camundala/examples/demos/api/ProjectApiCreator.scala b/05-examples/demos/03-api/src/main/scala/camundala/examples/demos/api/ProjectApiCreator.scala index 68764912..c2ae5fac 100644 --- a/05-examples/demos/03-api/src/main/scala/camundala/examples/demos/api/ProjectApiCreator.scala +++ b/05-examples/demos/03-api/src/main/scala/camundala/examples/demos/api/ProjectApiCreator.scala @@ -14,6 +14,7 @@ object ProjectApiCreator extends DefaultApiCreator: protected val title = "Demos Example Process API" protected val version = "1.0" + lazy val companyProjectVersion: String = "0.1.0" lazy val companyDescr: ExampleName = "" lazy val projectDescr: ExampleName = "" diff --git a/05-examples/demos/OpenApi.html b/05-examples/demos/OpenApi.html index cc6cff45..75105324 100644 --- a/05-examples/demos/OpenApi.html +++ b/05-examples/demos/OpenApi.html @@ -87,7 +87,7 @@ }); } - + \ No newline at end of file diff --git a/05-examples/invoice/03-api/src/main/scala/camundala/examples/invoice/api/ProjectApiCreator.scala b/05-examples/invoice/03-api/src/main/scala/camundala/examples/invoice/api/ProjectApiCreator.scala index 828e2170..ac145076 100644 --- a/05-examples/invoice/03-api/src/main/scala/camundala/examples/invoice/api/ProjectApiCreator.scala +++ b/05-examples/invoice/03-api/src/main/scala/camundala/examples/invoice/api/ProjectApiCreator.scala @@ -19,6 +19,7 @@ object ProjectApiCreator extends DefaultApiCreator: protected val title = "Invoice Example Process API" // version of your project protected val version = "1.0" + lazy val companyProjectVersion: String = "0.1.0" lazy val companyDescr: String = "" lazy val projectDescr: String = "" diff --git a/05-examples/invoice/OpenApi.html b/05-examples/invoice/OpenApi.html index cc6cff45..75105324 100644 --- a/05-examples/invoice/OpenApi.html +++ b/05-examples/invoice/OpenApi.html @@ -87,7 +87,7 @@ }); } - + \ No newline at end of file diff --git a/05-examples/twitter/03-api/src/main/scala/camundala/examples/twitter/api/ProjectApiCreator.scala b/05-examples/twitter/03-api/src/main/scala/camundala/examples/twitter/api/ProjectApiCreator.scala index 045088a1..724a90ab 100644 --- a/05-examples/twitter/03-api/src/main/scala/camundala/examples/twitter/api/ProjectApiCreator.scala +++ b/05-examples/twitter/03-api/src/main/scala/camundala/examples/twitter/api/ProjectApiCreator.scala @@ -15,7 +15,7 @@ object ProjectApiCreator extends DefaultApiCreator: val version = "1.0" - lazy val companyDescr: String = "" + lazy val companyProjectVersion: String = "0.1.0" lazy val projectDescr: String = "" document( diff --git a/05-examples/twitter/04-c8-spring/src/main/scala/camundala/examples/twitter/api/TwitterApiCreator.scala b/05-examples/twitter/04-c8-spring/src/main/scala/camundala/examples/twitter/api/TwitterApiCreator.scala index 4214d586..c02ce08f 100644 --- a/05-examples/twitter/04-c8-spring/src/main/scala/camundala/examples/twitter/api/TwitterApiCreator.scala +++ b/05-examples/twitter/04-c8-spring/src/main/scala/camundala/examples/twitter/api/TwitterApiCreator.scala @@ -17,6 +17,7 @@ object TwitterApiCreator extends DefaultApiCreator: def title = "Twitter Process API C8" def version = "1.0" + lazy val companyProjectVersion: String = "0.1.0" document { api(twitterDemoProcess)( diff --git a/05-examples/twitter/OpenApi.html b/05-examples/twitter/OpenApi.html index cc6cff45..75105324 100644 --- a/05-examples/twitter/OpenApi.html +++ b/05-examples/twitter/OpenApi.html @@ -87,7 +87,7 @@ }); } - + \ No newline at end of file diff --git a/docs/development/initCompany.html b/docs/development/initCompany.html index 96205da6..e1794b91 100644 --- a/docs/development/initCompany.html +++ b/docs/development/initCompany.html @@ -139,11 +139,11 @@

Init Company

//> using toolkit 0.5.0 //> using dep io.github.pme123::camundala-helper:1.30.25 -import camundala.helper.dev.DevCompanyRunner +import camundala.helper.dev.DevCompanyHelper @main def run(command: String, arguments: String*): Unit = - DevCompanyRunner.run(command, arguments*) + DevCompanyHelper.run(command, arguments*)
  • Make the file executable:

    diff --git a/docs/exampleApi/OpenApi.html b/docs/exampleApi/OpenApi.html index cc6cff45..75105324 100644 --- a/docs/exampleApi/OpenApi.html +++ b/docs/exampleApi/OpenApi.html @@ -87,7 +87,7 @@ }); } - + \ No newline at end of file diff --git a/docs/functionalityDsls/apiDoc.html b/docs/functionalityDsls/apiDoc.html index 1e8d0747..cf781860 100644 --- a/docs/functionalityDsls/apiDoc.html +++ b/docs/functionalityDsls/apiDoc.html @@ -211,7 +211,7 @@

    In the console you find the paths to the created documentation.

      -
    • By default it's here: YOUR_PROJECT_PATH/openApi.yml
    • +
    • By default it's here: YOUR_PROJECT_PATH/OpenApi.yml