Skip to content

Commit e3260d6

Browse files
committed
Added publish for DevCompanyCamundalaRunner.
1 parent 928c2b5 commit e3260d6

File tree

8 files changed

+139
-65
lines changed

8 files changed

+139
-65
lines changed

00-documentation/src/docs/development/initCompany.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,11 +45,11 @@ open helperCompany.scala
4545
//> using toolkit 0.5.0
4646
//> using dep io.github.pme123::camundala-helper:@VERSION@
4747

48-
import camundala.helper.dev.DevCompanyHelper
48+
import camundala.helper.dev.DevCompanyRunner
4949

5050
@main
5151
def run(command: String, arguments: String*): Unit =
52-
DevCompanyHelper.run(command, arguments*)
52+
DevCompanyRunner.run(command, arguments*)
5353
```
5454

5555
1. Make the file executable:
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
package camundala.helper.dev
2+
3+
import camundala.helper.dev.publish.PublishHelper
4+
import camundala.helper.dev.publish.PublishHelper.*
5+
import camundala.helper.util.{DevConfig, Helpers}
6+
7+
import scala.util.{Failure, Success, Try}
8+
9+
// dev-company/company-camundala/helper.scala
10+
case class DevCompanyCamundalaRunner(
11+
devConfig: DevConfig
12+
) extends Helpers:
13+
14+
def run(command: String, arguments: String*): Unit =
15+
val args = arguments.toSeq
16+
println(s"Running command: $command with args: $args")
17+
Try(Command.valueOf(command)) match
18+
case Success(cmd) =>
19+
runCommand(cmd, args)
20+
case Failure(_) =>
21+
println(s"Command not found: $command")
22+
println("Available commands: " + Command.values.mkString(", "))
23+
end match
24+
end run
25+
26+
private def runCommand(command: Command, args: Seq[String]): Unit =
27+
command match
28+
case Command.publish if args.size == 1 =>
29+
publish(args.head)
30+
case Command.publish =>
31+
println("Usage: publish <version>")
32+
case Command.prepareDocs =>
33+
// CompanyDocCreator.prepareDocs()
34+
case Command.releaseDocs =>
35+
// CompanyDocCreator.releaseDocs()
36+
case other =>
37+
println(s"Command not found: $other")
38+
println("Available commands: publish, prepareDocs, releaseDocs")
39+
40+
enum Command:
41+
case publish, prepareDocs, releaseDocs
42+
43+
private def publish(newVersion: String): Unit =
44+
println(s"Publishing ${devConfig.projectName}: $newVersion")
45+
verifyVersion(newVersion)
46+
verifySnapshots()
47+
verifyChangelog(newVersion)
48+
replaceVersion(newVersion, projectFile)
49+
println("Versions replaced")
50+
val isSnapshot = newVersion.contains("-")
51+
52+
os.proc("sbt", "-J-Xmx3G", "publish").callOnConsole()
53+
54+
if !isSnapshot then
55+
git(newVersion, newVers => replaceVersion(newVers, projectFile))
56+
end if
57+
end publish
58+
59+
end DevCompanyCamundalaRunner

04-helper/src/main/scala/camundala/helper/dev/DevCompanyHelper.scala renamed to 04-helper/src/main/scala/camundala/helper/dev/DevCompanyRunner.scala

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ import camundala.helper.util.{DevConfig, RepoConfig}
55

66
import scala.util.{Failure, Success, Try}
77

8-
object DevCompanyHelper:
8+
// dev-company/helperCompany.scala
9+
object DevCompanyRunner:
910

1011
def run(command: String, arguments: String*): Unit =
1112
val args = arguments.toSeq
@@ -30,7 +31,7 @@ object DevCompanyHelper:
3031
case other =>
3132
println(s"Invalid arguments for command $command: $other")
3233
println("Usage: project <projectName>")
33-
34+
// dev-company/company-camundala/helper.scala
3435

3536
enum Command:
3637
case init, project
@@ -48,4 +49,4 @@ object DevCompanyHelper:
4849

4950
private lazy val companyName = os.pwd.last.replace("dev-", "").toLowerCase
5051

51-
end DevCompanyHelper
52+
end DevCompanyRunner

04-helper/src/main/scala/camundala/helper/dev/company/CompanyScriptCreator.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,11 @@ case class CompanyScriptCreator()(using config: DevConfig):
1212
|//> using toolkit 0.5.0
1313
|//> using dep io.github.pme123::camundala-helper:${VersionHelper.camundalaVersion}
1414
|
15-
|import camundala.helper.dev.DevCompanyHelper
15+
|import camundala.helper.dev.DevCompanyRunner
1616
|
1717
| @main
1818
| def run(command: String, arguments: String*): Unit =
19-
| DevCompanyHelper.run(command, arguments*)
19+
| DevCompanyRunner.run(command, arguments*)
2020
|""".stripMargin
2121

2222

04-helper/src/main/scala/camundala/helper/dev/publish/PublishHelper.scala

Lines changed: 65 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -11,19 +11,15 @@ case class PublishHelper()(using
1111
publishConfig: Option[PublishConfig]
1212
) extends Helpers:
1313

14+
import PublishHelper.*
15+
1416
def publish(version: String): Unit =
1517
println(s"Publishing BPF Package: $version")
16-
// TODO uncomment: verifySnapshots()
18+
verifyVersion(version)
19+
verifySnapshots()
1720
verifyChangelog(version)
1821
pushDevelop()
1922
setApiVersion(version)
20-
21-
val releaseVersion = """^(\d+)\.(\d+)\.(\d+)(-.*)?$"""
22-
if !version.matches(releaseVersion) then
23-
throw new IllegalArgumentException(
24-
"Your Version has not the expected format (2.1.2(-SNAPSHOT))"
25-
)
26-
2723
replaceVersion(version)
2824

2925
lazy val sbtProcs = Seq(
@@ -49,27 +45,8 @@ case class PublishHelper()(using
4945
val isSnapshot = version.contains("-")
5046
if !isSnapshot then
5147
publishToWebserver()
48+
git(version, replaceVersion)
5249

53-
os.proc("git", "fetch", "--all").callOnConsole()
54-
os.proc("git", "commit", "-a", "-m", s"Released Version $version")
55-
.callOnConsole()
56-
os.proc("git", "tag", "-a", "--no-sign", s"v$version", "-m", s"Version $version")
57-
.callOnConsole()
58-
os.proc("git", "checkout", "master").callOnConsole()
59-
os.proc("git", "merge", branch).callOnConsole()
60-
os.proc("git", "push", "--tags").callOnConsole()
61-
os.proc("git", "checkout", branch).callOnConsole()
62-
val Pattern = """^(\d+)\.(\d+)\.(\d+)$""".r
63-
64-
val newVersion = version match
65-
case Pattern(major, minor, _) =>
66-
s"$major.${minor.toInt + 1}.0-SNAPSHOT"
67-
replaceVersion(newVersion)
68-
69-
os.proc("git", "commit", "-a", "-m", s"Init new Version $newVersion")
70-
.callOnConsole()
71-
os.proc("git", "push", "--all").callOnConsole()
72-
println(s"Published Version: $version")
7350
end if
7451
end publish
7552

@@ -86,29 +63,38 @@ case class PublishHelper()(using
8663

8764
os.write.over(apiFile, updatedFile)
8865

89-
private val projectFile: os.Path = workDir / "project" / "ProjectDef.scala"
90-
9166
private def replaceVersion(newVersion: String): Unit =
92-
replaceVersion(newVersion, projectFile)
93-
replaceVersion(newVersion, apiConfig.projectConfPath)
94-
end replaceVersion
95-
96-
private def replaceVersion(newVersion: String, versionFile: os.Path): Unit =
97-
val versionFileStr = os.read(versionFile)
98-
99-
val regexPattern = """version = "(\d+\.\d+\.\d+(-.+)?)""""
100-
val updatedFile = versionFileStr
101-
.replaceAll(regexPattern, s"""version = "$newVersion"""") + "\n"
102-
103-
os.write.over(versionFile, updatedFile)
67+
PublishHelper.replaceVersion(newVersion, projectFile)
68+
PublishHelper.replaceVersion(newVersion, apiConfig.projectConfPath)
10469
end replaceVersion
10570

10671
private def publishToWebserver(): Unit =
10772
// push it to Documentation Webserver
10873
publishConfig.foreach:
10974
ProjectWebDAV(devConfig.projectName, _).upload()
11075

111-
private def verifySnapshots(): Unit =
76+
end PublishHelper
77+
78+
object PublishHelper extends Helpers:
79+
val projectFile: os.Path = workDir / "project" / "ProjectDef.scala"
80+
81+
def verifyVersion(newVersion: String): Unit =
82+
val releaseVersion = """^(\d+)\.(\d+)\.(\d+)(-.*)?$"""
83+
if !newVersion.matches(releaseVersion) then
84+
throw new IllegalArgumentException(
85+
"Your Version has not the expected format (2.1.2(-SNAPSHOT))"
86+
)
87+
end verifyVersion
88+
89+
def verifyChangelog(newVersion: String): Unit =
90+
ChangeLogUpdater.verifyChangelog(
91+
newVersion,
92+
commitsAddress = _.replace(".git", "/commit/") // git
93+
.replace("ssh://git@", "https://") // ssh protocol
94+
.replace(":2222", "") // ssh port
95+
)
96+
97+
def verifySnapshots(): Unit =
11298
hasSnapshots("Settings")
11399
hasSnapshots("ProjectDef")
114100

@@ -120,16 +106,42 @@ case class PublishHelper()(using
120106
s"There are SNAPSHOT dependencies in `project/$fileName.scala`"
121107
)
122108

123-
private def verifyChangelog(newVersion: String): Unit =
124-
ChangeLogUpdater.verifyChangelog(
125-
newVersion,
126-
commitsAddress = _.replace(".git", "/commit/") // git
127-
.replace("ssh://git@", "https://") // ssh protocol
128-
.replace(":2222", "") // ssh port
129-
)
130-
// as projectUpdate for reference creation gets the newest changes from remote
131-
private def pushDevelop(): Unit =
109+
// as projectUpdate for reference creation gets the newest changes from remote
110+
def pushDevelop(): Unit =
132111
os.proc("git", "push").callOnConsole()
133112

134-
private lazy val branch = "develop"
113+
def replaceVersion(newVersion: String, versionFile: os.Path): Unit =
114+
val versionFileStr = os.read(versionFile)
115+
116+
val regexPattern = """version = "(\d+\.\d+\.\d+(-.+)?)""""
117+
val updatedFile = versionFileStr
118+
.replaceAll(regexPattern, s"""version = "$newVersion"""") + "\n"
119+
120+
os.write.over(versionFile, updatedFile)
121+
end replaceVersion
122+
123+
def git(version: String, replaceVersion: String => Unit): Unit =
124+
val branch = "develop"
125+
os.proc("git", "fetch", "--all").callOnConsole()
126+
os.proc("git", "commit", "-a", "-m", s"Released Version $version")
127+
.callOnConsole()
128+
os.proc("git", "tag", "-a", "--no-sign", s"v$version", "-m", s"Version $version")
129+
.callOnConsole()
130+
os.proc("git", "checkout", "master").callOnConsole()
131+
os.proc("git", "merge", branch).callOnConsole()
132+
os.proc("git", "push", "--tags").callOnConsole()
133+
os.proc("git", "checkout", branch).callOnConsole()
134+
val Pattern = """^(\d+)\.(\d+)\.(\d+)$""".r
135+
136+
val newVersion = version match
137+
case Pattern(major, minor, _) =>
138+
s"$major.${minor.toInt + 1}.0-SNAPSHOT"
139+
replaceVersion(newVersion)
140+
141+
os.proc("git", "commit", "-a", "-m", s"Init new Version $newVersion")
142+
.callOnConsole()
143+
os.proc("git", "push", "--all").callOnConsole()
144+
println(s"Published Version: $version")
145+
end git
146+
135147
end PublishHelper

04-helper/src/main/scala/camundala/helper/dev/update/SbtGenerator.scala

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@ case class SbtGenerator()(using
5858
| val org = "${projectConf.org}"
5959
| val name = "${projectConf.name}"
6060
| val version = "${projectConf.version}"
61-
| lazy val nameAsPackage = name.split("-").mkString(".")
6261
|
6362
|${versionHelper.dependencyVersionVars}
6463
|

04-helper/src/main/scala/camundala/helper/util/Helpers.scala

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,10 @@ trait Helpers:
3333
end check
3434

3535
extension (proc: os.proc)
36-
def callOnConsole(path: os.Path = os.pwd): os.CommandResult =
37-
proc.call(cwd = path, stdout = os.Inherit)
36+
37+
def callOnConsole(path: os.Path = os.pwd): Unit =
38+
println(proc.command.mkString(" "))
39+
val result = proc.call(cwd = path, stdout = os.Inherit)
40+
println(result.out.text())
3841
end extension
3942
end Helpers

docs/helper/initCompany.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -136,11 +136,11 @@ <h1 id="init-company" class="title">Init Company</h1>
136136
</span><span class="comment">//&gt; using toolkit 0.5.0
137137
//&gt; using dep io.github.pme123::camundala-helper:0.31.0-SNAPSHOT
138138
</span><span>
139-
</span><span class="keyword">import</span><span> </span><span class="identifier">camundala</span><span>.</span><span class="identifier">helper</span><span>.</span><span class="identifier">dev</span><span>.</span><span class="type-name">DevCompanyHelper</span><span>
139+
</span><span class="keyword">import</span><span> </span><span class="identifier">camundala</span><span>.</span><span class="identifier">helper</span><span>.</span><span class="identifier">dev</span><span>.</span><span class="type-name">DevCompanyRunner</span><span>
140140

141141
</span><span class="annotation">@main</span><span>
142142
</span><span class="keyword">def</span><span> </span><span class="declaration-name">run</span><span>(</span><span class="identifier">command</span><span>: </span><span class="type-name">String</span><span>, </span><span class="identifier">arguments</span><span>: </span><span class="type-name">String</span><span>*): </span><span class="type-name">Unit</span><span> =
143-
</span><span class="type-name">DevCompanyHelper</span><span>.</span><span class="identifier">run</span><span>(</span><span class="identifier">command</span><span>, </span><span class="identifier">arguments</span><span>*)</span></code></pre>
143+
</span><span class="type-name">DevCompanyRunner</span><span>.</span><span class="identifier">run</span><span>(</span><span class="identifier">command</span><span>, </span><span class="identifier">arguments</span><span>*)</span></code></pre>
144144
</li>
145145
<li>
146146
<p>Make the file executable:</p>

0 commit comments

Comments
 (0)