Skip to content

Commit 946b54a

Browse files
committed
Restructured Helper - Added DevCompanyHelper.createProject.
1 parent c450c28 commit 946b54a

File tree

7 files changed

+85
-62
lines changed

7 files changed

+85
-62
lines changed
Lines changed: 45 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,48 @@
11
# Create Project
2+
23
**Experimental**
34

4-
TODO
5+
Creating a Project is done in two steps:
6+
7+
1. Create the project directory and the Helper Script.
8+
2. Run the Helper Script to create the project structure.
9+
10+
Here we focus on the first step.
11+
12+
1. We can use the same `helperCompany.scala` script, we created in the [Init Company] step.
13+
```scala
14+
cd ~/dev-myCompany
15+
./helperCompany.scala project myProject
16+
```
17+
This creates:
18+
19+
```bash
20+
dev-myCompany
21+
| projects
22+
| | myProject
23+
| | | helper.scala
24+
```
25+
26+
1. Make `helper.scala` executable:
27+
```bash
28+
cd ~/projects/myProject
29+
chmod +x helper.scala
30+
```
31+
32+
1. Open the `myCompany-myProject` directory with your IDE (I use Intellij).
33+
34+
@:callout(info)
35+
If you haven't released `company-camundala` yet,
36+
you need to run it at least locally (`sbt publishLocal`)
37+
and set the version in the `helper.scala` manually.
38+
39+
```scala
40+
//> using dep myCompany::myCompany-camundala-helper:VERSION NOT FOUND
41+
// replace with:
42+
//> using dep myCompany::myCompany-camundala-helper:0.1.0-SNAPSHOT
43+
```
44+
45+
@:@
46+
47+
### Next Step: [Project Development]
48+

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,5 +63,7 @@ chmod +x helperCompany.scala
6363

6464
1. Open the `company-camundala` directory with your IDE (I use Intellij).
6565
1. Import the sbt project. The project should compile without errors.
66+
1. Update `build.sbt` with your repository settings.
67+
1. Release the `company-camundala` project to your repository.
6668

6769
### Next Step: [Create Project]

04-helper/src/main/scala/camundala/helper/dev/DevCompanyHelper.scala

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -36,19 +36,16 @@ object DevCompanyHelper:
3636
case init, project
3737

3838
def initCompany: Unit =
39-
val companyName = os.pwd.last.replace("dev-", "")
4039
println(s"Init Company $companyName")
41-
given config: DevConfig = InitCompanyGenerator.init(companyName) //, repoConfig)
40+
given config: DevConfig = InitCompanyGenerator.init(companyName)
4241
InitCompanyGenerator().generate
4342

44-
def createCompany(companyName: String) = //, repoConfig: RepoConfig) =
45-
println(s"Create/Update Company: $companyName")
4643

47-
// given config: DevConfig = SetupCompanyGenerator.init(companyName, repoConfig)
44+
def createProject(projectName: String): Unit =
45+
println(s"Create Project: $projectName - Company: $companyName")
46+
given config: DevConfig = DevConfig.defaultConfig(s"$companyName-$projectName")
47+
InitCompanyGenerator().createProject
4848

49-
// SetupCompanyGenerator().generate
49+
private lazy val companyName = os.pwd.last.replace("dev-", "")
5050

51-
def createProject(projectName: String): Unit =
52-
println(s"Update Project: $projectName")
53-
// SetupGenerator()(using config.setupConfig).generate
5451
end DevCompanyHelper
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package camundala.helper.dev.company
22

33
import camundala.helper.dev.update.*
4-
import camundala.helper.util.*
54

65
case class InitCompanyGenerator()(using config: DevConfig):
76

@@ -16,7 +15,13 @@ case class InitCompanyGenerator()(using config: DevConfig):
1615
CompanySbtGenerator().generate
1716
end generate
1817

18+
lazy val createProject: Unit =
19+
generateProjectDirectories
20+
createOrUpdate(projects / projectName / "helper.scala", ScriptCreator().projectHelper)
21+
end createProject
22+
1923
private lazy val companyName = config.companyName
24+
private lazy val projectName = config.projectName
2025

2126
private lazy val generateDirectories: Unit =
2227
os.makeDir.all(gitTemp)
@@ -25,6 +30,8 @@ case class InitCompanyGenerator()(using config: DevConfig):
2530
os.makeDir.all(companyCamundala)
2631
os.makeDir.all(projects)
2732
end generateDirectories
33+
private lazy val generateProjectDirectories: Unit =
34+
os.makeDir.all(projects / projectName)
2835

2936
private lazy val gitTemp = os.pwd / "git-temp"
3037
private lazy val docker = os.pwd / "docker"
@@ -36,24 +43,7 @@ end InitCompanyGenerator
3643

3744
object InitCompanyGenerator:
3845
def init(companyName: String) = //, repoConfig: RepoConfig.Artifactory) =
39-
// createOrUpdate(os.pwd / api.defaultProjectPath, defaultProjectContent(companyName))
4046
DevConfig.defaultConfig(s"$companyName-camundala")
41-
/* .copy(reposConfig =
42-
ReposConfig(
43-
repos = Seq(repoConfig),
44-
repoSearch = repoConfig.repoSearch,
45-
ammoniteRepos = Seq(repoConfig)
46-
)
47-
) */
4847
end init
4948

50-
private def defaultProjectContent(companyName: String) =
51-
s"""
52-
|org = "$companyName"
53-
|name = "$companyName-services"
54-
|version = "0.1.0-SNAPSHOT"
55-
|dependencies: {
56-
|
57-
|}
58-
|""".stripMargin
5949
end InitCompanyGenerator

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

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,8 +119,9 @@ case class CompanySbtGenerator()(using
119119
|
120120
|lazy val publicationSettings = Seq(
121121
| isSnapshot := false,
122-
| //publishTo := Some(releaseRepo), //TODO define releaseRepo
123-
| // Enables publishing to maven repo
122+
| credentials ++= Seq(repoCredentials),
123+
| publishTo := Some(releaseRepo),
124+
| resolvers ++= Seq(releaseRepo), //TODO add additional resolvers
124125
| publishMavenStyle := true,
125126
| packageDoc / publishArtifact := false,
126127
| // disable using the Scala version in output paths and artifacts
@@ -190,6 +191,21 @@ case class CompanySbtGenerator()(using
190191
| testFrameworks += new TestFramework("munit.Framework")
191192
|)
192193
|
194+
|lazy val releaseRepoStr: String =
195+
| s"https://bin.mycompany.com/artifactory/mycompany-maven-local" //TODO Change with yours
196+
|lazy val releaseRepo: MavenRepository = "Artifactory Realm" at releaseRepoStr
197+
|
198+
|// TODO change with yours
199+
|lazy val repoCredentials: Credentials = Credentials("Artifactory Realm", "bin.mycompany.com", "user", "pwd")
200+
|/*(for {
201+
| user <- sys.env.get("MVN_REPOSITORY_USERNAME")
202+
| pwd <- sys.env.get("MVN_REPOSITORY_PASSWORD")
203+
|} yield Credentials("Artifactory Realm", "bin.mycompany.com", user, pwd))
204+
| .getOrElse(
205+
| throw new IllegalArgumentException(
206+
| "System Environment Variables MVN_REPOSITORY_USERNAME and/ or REPOSITORY_PASSWORD are not set."
207+
| )
208+
| )*/
193209
|""".stripMargin
194210
end buildSbt
195211

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,15 @@ case class CompanyWrapperGenerator()(using config: DevConfig):
1515

1616
private lazy val helperConfig =
1717
objectContent("CompanyDevHelper"):
18-
"""
19-
| def config(projectName: String): DevConfig =
18+
s"""
19+
| def config(projectName: String, subProjects: Seq[String] = Seq.empty): DevConfig =
2020
| DevConfig.defaultConfig(projectName) //TODO Implement your Config!
21+
| .copy(subProjects = subProjects)
2122
|""".stripMargin
2223
end helperConfig
2324

2425
private def objectContent(objName: String)(body: String) =
25-
s"""package $companyName.helper
26+
s"""package $companyName.camundala.helper
2627
|
2728
|import camundala.helper.dev.*
2829
|import camundala.helper.util.*

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

Lines changed: 2 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -4,32 +4,6 @@ import camundala.helper.util.CompanyVersionHelper
44

55
case class ScriptCreator()(using config: DevConfig):
66

7-
lazy val companyHelper =
8-
s"""$helperHeader
9-
|
10-
|@main(doc =
11-
| \"\"\"> Creates the directories and generic files for the company BPMN Projects
12-
| \"\"\")
13-
|def update(
14-
|): Unit =
15-
| DevHelper.updateCompany()
16-
|
17-
|""".stripMargin
18-
19-
lazy val projectCreate: String =
20-
s"""$helperHeader
21-
|
22-
|@main(doc =
23-
| \"\"\"> Creates the directories and generic files for the company BPMN Projects
24-
| \"\"\")
25-
|def create(
26-
| @arg(doc = "The project name - should be generated automatically after creation.")
27-
| projectName: String
28-
|): Unit = {
29-
| val config = ProjectDevHelper.config(projectName)
30-
| DevHelper.createProject(config)
31-
|}
32-
|""".stripMargin
337

348
lazy val projectHelper =
359
val projectName = config.projectName
@@ -39,12 +13,11 @@ case class ScriptCreator()(using config: DevConfig):
3913
|lazy val subProjects = Seq(
4014
| ${config.subProjects.map(sp => s"\"$sp\"").mkString(", ")}
4115
|)
42-
|lazy val config: HelperConfig = ProjectDevHelper.config(projectName, subProjects)
43-
|given setup.DevConfig = config.setupConfig
16+
|given util.DevConfig = CompanyDevHelper.config(projectName, subProjects)
4417
|
4518
|@main
4619
|def run(command: String, arguments: String*): Unit =
47-
| ${config.companyClassName}DevHelper.run(command, arguments*)
20+
| dev.DevHelper.run(command, arguments*)
4821
|""".stripMargin
4922
end projectHelper
5023

0 commit comments

Comments
 (0)