Skip to content

Commit ea26b5c

Browse files
committed
Changed configuration for Project to PROJECT.conf
1 parent ae70c4a commit ea26b5c

28 files changed

+537
-361
lines changed

03-api/src/main/scala/camundala/api/ApiCreator.scala

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package camundala.api
33
import camundala.BuildInfo
44
import camundala.bpmn.InputParams
55
import camundala.domain.*
6-
import com.typesafe.config.ConfigFactory
76
import io.circe.Encoder
87
import sttp.apispec.openapi.*
98
import sttp.apispec.openapi.circe.yaml.*
@@ -281,7 +280,7 @@ trait ApiCreator extends PostmanApiCreator, TapirApiCreator, App:
281280

282281
protected def dependencies: String =
283282

284-
def docPortal(projectName: String) = s"${apiConfig.docBaseUrl}/$projectName/OpenApi.html"
283+
def docPortal(projectName: String) = s"${apiConfig.docBaseUrl.getOrElse("NOT_SET")}/$projectName/OpenApi.html"
285284

286285
val projects = apiConfig.projectsConfig.perGitRepoConfigs.flatMap(_.projects)
287286
println(s"Projects: $projects")
@@ -292,7 +291,7 @@ trait ApiCreator extends PostmanApiCreator, TapirApiCreator, App:
292291
|
293292
|${
294293
apiProjectConf.dependencies
295-
.map(dep => s"- _**[${dep.name}](${documentations.getOrElse(dep.name, "NOT FOUND")})**_")
294+
.map(dep => s"- _**[${dep.projectName}](${documentations.getOrElse(dep.projectName, "NOT FOUND")})**_")
296295
.mkString("\n")
297296
}
298297
|""".stripMargin
@@ -325,8 +324,8 @@ trait ApiCreator extends PostmanApiCreator, TapirApiCreator, App:
325324
|
326325
|> Created with:
327326
|> - [camundala-api v${BuildInfo.version}](https://github.com/pme123/camundala)
328-
|> - ${apiProjectConf.org}-camundala-api $companyProjectVersion
329-
|> - ${apiProjectConf.org}-camundala-helper
327+
|> - ${apiProjectConf.companyName}-camundala-api $companyProjectVersion
328+
|> - ${apiProjectConf.companyName}-camundala-helper
330329
|
331330
|""".stripMargin
332331

@@ -399,6 +398,6 @@ trait ApiCreator extends PostmanApiCreator, TapirApiCreator, App:
399398
|like `"$example"`""".stripMargin
400399

401400
private lazy val packageConfPath = apiConfig.basePath / apiConfig.projectsConfig.projectConfPath
402-
private lazy val apiProjectConf = ApiProjectConf(packageConfPath)
401+
private lazy val apiProjectConf = DocProjectConfig(packageConfPath)
403402

404403
end ApiCreator

03-api/src/main/scala/camundala/api/ApiProjectConf.scala

Lines changed: 0 additions & 139 deletions
This file was deleted.
Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
package camundala.api
2+
3+
import com.typesafe.config.ConfigFactory
4+
import scala.jdk.CollectionConverters.*
5+
6+
final case class ApiProjectConfig(
7+
projectName: String,
8+
projectVersion: VersionConfig,
9+
subProjects: Seq[String],
10+
dependencies: Seq[DependencyConfig]
11+
):
12+
lazy val companyName: String = projectName.split("-").head
13+
end ApiProjectConfig
14+
15+
object ApiProjectConfig:
16+
17+
def init(projectName: String, newPackageFile: os.Path = os.pwd / defaultProjectConfigPath) =
18+
if !os.exists(newPackageFile)
19+
then
20+
println(s"Created initial $newPackageFile")
21+
os.makeDir.all(newPackageFile / os.up)
22+
os.write(
23+
newPackageFile,
24+
s"""
25+
|org = "${projectName.split("-").head}"
26+
|name = "$projectName"
27+
|version = "${DocProjectConfig.defaultVersion}"
28+
|dependencies: {
29+
|
30+
|}
31+
|""".stripMargin
32+
)
33+
end if
34+
apply(newPackageFile)
35+
end init
36+
37+
def apply(projectConfigPath: os.Path = os.pwd / defaultProjectConfigPath): ApiProjectConfig =
38+
val projectConfig = ConfigFactory.parseFile(projectConfigPath.toIO)
39+
val projectName = projectConfig.getString("projectName")
40+
val projectVersion = projectConfig.getString("projectVersion")
41+
val subProjects = projectConfig.getStringList("subProjects").asScala.toSeq
42+
val dependencies = projectConfig
43+
.getObject("dependencies")
44+
.unwrapped()
45+
.asScala
46+
.map:
47+
case k -> v =>
48+
DependencyConfig.apply(k, v.toString)
49+
.toSeq
50+
51+
ApiProjectConfig(
52+
projectName,
53+
VersionConfig(projectVersion),
54+
subProjects,
55+
dependencies
56+
)
57+
end apply
58+
59+
def apply(projectName: String, projectVersion: String): ApiProjectConfig =
60+
ApiProjectConfig(
61+
projectName = projectName,
62+
projectVersion = VersionConfig(projectVersion),
63+
subProjects = Seq.empty,
64+
dependencies = Seq.empty
65+
)
66+
end ApiProjectConfig
67+
68+
case class VersionConfig(major: Int, minor: Int, patch: Int, isSnapshot: Boolean = false):
69+
def isMajor(version: VersionConfig): Boolean =
70+
major != version.major
71+
72+
def isMinor(version: VersionConfig): Boolean =
73+
major == version.major && minor != version.minor
74+
75+
def isPatch(version: VersionConfig): Boolean =
76+
major == version.major && minor == version.minor && patch != version.patch
77+
78+
lazy val minorVersion: String = s"$major.$minor"
79+
lazy val versionAsInt: Int =
80+
major * 100000 + minor * 1000 + patch
81+
82+
override def toString: String = s"$minorVersion.$patch${if isSnapshot then "-SNAPSHOT" else ""}"
83+
end VersionConfig
84+
85+
object VersionConfig:
86+
def apply(version: String): VersionConfig =
87+
version.split("\\.") match
88+
case Array(major, minor, patch) =>
89+
if patch.endsWith("-SNAPSHOT") then
90+
VersionConfig(major.toInt, minor.toInt, patch.dropRight(9).toInt, isSnapshot = true)
91+
else
92+
VersionConfig(major.toInt, minor.toInt, patch.toInt)
93+
end VersionConfig
94+
95+
final case class DependencyConfig(
96+
projectName: String,
97+
projectVersion: VersionConfig
98+
):
99+
lazy val minorVersion: String = projectVersion.minorVersion
100+
lazy val companyName: String = projectName.split("-").head
101+
lazy val fullName = s"$companyName:$projectName:$projectVersion"
102+
lazy val projectPackage = s"${projectName.split("-").mkString(".")}"
103+
104+
def equalTo(packageConf: DocProjectConfig): Boolean =
105+
packageConf.companyName == companyName && packageConf.projectName == projectName && packageConf.minorVersion == projectVersion.minorVersion
106+
end DependencyConfig
107+
108+
object DependencyConfig:
109+
def apply(projectName: String, version: String): DependencyConfig =
110+
DependencyConfig(projectName, VersionConfig(version))
111+
// "org:name:version" => DependencyConfig - only works for the company-project
112+
def apply(dependency: String): DependencyConfig =
113+
val dArray = dependency.replace("\"", "").split(":")
114+
// DependencyConfig(dArray(0), dArray(1), dArray(2))
115+
val lastVersion = VersionHelper.repoSearch(dArray(1), dArray(0))
116+
DependencyConfig(dArray(1), VersionConfig(lastVersion))
117+
118+
end DependencyConfig
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
package camundala.api
2+
3+
import com.typesafe.config.ConfigFactory
4+
5+
import scala.jdk.CollectionConverters.CollectionHasAsScala
6+
import scala.util.Try
7+
8+
case class DocProjectConfig(
9+
apiProjectConfig: ApiProjectConfig,
10+
versionPrevious: String,
11+
changelog: Seq[String] = Seq.empty,
12+
isWorker: Boolean = false
13+
):
14+
lazy val companyName: String = apiProjectConfig.companyName
15+
lazy val projectName: String = apiProjectConfig.projectName
16+
lazy val projectVersion: VersionConfig = apiProjectConfig.projectVersion
17+
lazy val versionPreviousConf: VersionConfig = versionFor(versionPrevious)
18+
lazy val version: String = projectVersion.toString
19+
lazy val versionAsInt: Int = projectVersion.versionAsInt
20+
21+
lazy val dependencies: Seq[DependencyConfig] = apiProjectConfig.dependencies
22+
23+
lazy val isNew =
24+
projectVersion.isMajor(versionPreviousConf) || projectVersion.isMinor(versionPreviousConf)
25+
lazy val isPatched = !isNew && projectVersion.isPatch(versionPreviousConf)
26+
lazy val minorVersion: String = projectVersion.minorVersion
27+
lazy val fullName = s"$companyName:$projectName:$projectVersion"
28+
29+
private def versionFor(version: String) =
30+
Try(VersionConfig(version))
31+
.getOrElse:
32+
println(s"Version $version is not valid. for $companyName:$projectName")
33+
VersionConfig(DocProjectConfig.defaultVersion)
34+
35+
end DocProjectConfig
36+
37+
object DocProjectConfig:
38+
lazy val defaultVersion = "0.1.0"
39+
40+
def apply(
41+
packageFile: os.Path
42+
): DocProjectConfig =
43+
apply(packageFile, Seq.empty, DocProjectConfig.defaultVersion, false)
44+
def apply(
45+
packageFile: os.Path,
46+
changelog: Seq[String],
47+
versionPrevious: String,
48+
isWorker: Boolean
49+
): DocProjectConfig =
50+
val apiProjectConfig = ApiProjectConfig(packageFile)
51+
DocProjectConfig(
52+
apiProjectConfig,
53+
versionPrevious,
54+
changelog,
55+
isWorker
56+
)
57+
end apply
58+
59+
def init(projectName: String, newPackageFile: os.Path) =
60+
if !os.exists(newPackageFile)
61+
then
62+
println(s"Created initial $newPackageFile")
63+
os.makeDir.all(newPackageFile / os.up)
64+
os.write(
65+
newPackageFile,
66+
s"""
67+
|org = "${projectName.split("-").head}"
68+
|name = "$projectName"
69+
|version = "${DocProjectConfig.defaultVersion}"
70+
|dependencies: {
71+
|
72+
|}
73+
|""".stripMargin
74+
)
75+
end if
76+
apply(newPackageFile)
77+
end init
78+
79+
end DocProjectConfig

0 commit comments

Comments
 (0)