Config Redesign
Current State
ARS
-
{ARS}/.env
» INIT -
{ARS}/originRepositoryConfig.json
» INIT -
{ARS}/relationsConfig.json
» INIT -
{ARS}/variationsConfig.json
» SEMESTER -
{ARS}/repositoryConfig.json
» MILESTONE -
{ARS}/variableExtensionsConfig.json
( » INIT )-
$.[i].variableExtensions.ClassPath.preValue
» SEMESTER
-
RepoEditor (-> PatchTool)
OriginRepo
{OriginRepo}/repositoryConfig.json
$.general
$.repository
repositoryName
» CALLrepositoryCount
» INITrepositoryMembers
» MILESTONE
$.individualRepositoryPersist
$.local
originRepositoryFilePath
» MILESTONEsubsetPaths
» CALL
$.remote
originRepositoryId
» MILESTONEcodeRepositoryTargetGroupId
» MILESTONEtestRepositoryTargetGroupId
» MILESTONEdeleteExistingRepositories
» CALLaddUsersAsGuests
» CALL
$.overview
generateOverview
» INIToverviewRepositoryId
» SEMESTERoverviewFileName
» MILESTONE
Assigned Configurations
[0] INIT
Configurations that typically only need to be defined once during installation.
Optimally in: {$HOME}/.divekit/
{ARS}/.env
» INIT{ARS}/originRepositoryConfig.json
» INIT{ARS}/relationsConfig.json
» INIT{ARS}/variableExtensionsConfig.json
( » INIT )$.[i].variableExtensions.ClassPath.preValue
» SEMESTER
{OriginRepo}/repositoryConfig.json
[1] SEMESTER
Configurations that typically only need to be defined once per semester. They are best stored in the OriginRepo.
Optimally in: {OriginRepo}/.divekit_norepo/{distribution}/
{ARS}/variationsConfig.json
» SEMESTER{OriginRepo}/repositoryConfig.json
$.overview.overviewRepositoryId
» SEMESTER
[2] MILESTONE
Configurations that typically only need to be defined once per milestone. They are best stored in the OriginRepo.
Optimally in: {OriginRepo}/.divekit_norepo/{distribution:{milestone}}/
{ARS}/repositoryConfig.json
» MILESTONE{OriginRepo}/repositoryConfig.json
$.repository.repositoryMembers
» MILESTONE$.local.originRepositoryFilePath
» MILESTONE$.remote
originRepositoryId
» MILESTONEcodeRepositoryTargetGroupId
» MILESTONEtestRepositoryTargetGroupId
» MILESTONE
$.overview.overviewFileName
» MILESTONE
[3] CALL
Configurations that must be defined with each call.
Optimally in: CLI flags
Future
[0] INIT
{ARS}/.env
will be stored in {$HOME}/.divekit/
ACCESS_TOKEN=YOUR_ACCESS_TOKEN
HOST=https://git.st.archi-lab.io
BRANCH=main
{ARS}/originRepositoryConfig.json
-> {$HOME}/.divekit/origin.json
Will be stored here during installation and then copied to the new Origin Repos during divekit init
.
{
"variables": {
"variableDelimiter": "$"
},
"solutionDeletion": {
"deleteFileKey": "//deleteFile",
"deleteParagraphKey": "//delete",
"replaceMap": {
"//unsup": "throw new UnsupportedOperationException();",
"//todo": "// TODO"
}
},
"warnings": {
"variableValueWarnings": {
"typeWhiteList": ["json", "java", "md"],
"ignoreList": ["name", "type"]
}
}
}
Suggested change:
{
"version": "2.0",
"variables": {
"delimiter": "$"
},
"solutionCleanup": {
"deleteFile": "//deleteFile",
"replaceParagraph": {
"//unsup": "throw new UnsupportedOperationException();",
"//todo": "// TODO",
"//delete": null
}
},
"warnings": {
"variation": {
"fileTypes": ["json", "java", "md"],
"ignore": ["name", "type"]
}
}
}
{ARS}/relationsConfig.json
-> {$HOME}/.divekit/variation/relations.json
Will be stored here during installation and then copied to the new Origin Repos during divekit init
.
[!NOTE]
I don’t fully understand what this is for - it may remain here forever and not need to be copied to the Origin Repo?
(what is UmletRev? What does the star mean?)
[
{
"id": "OneToOne",
"Umlet": "lt=-\nm1=1\nm2=1",
"UmletRev": "lt=-\nm1=1\nm2=1",
"Short": "1 - 1",
"Description": "one to one"
},
{
"id": "OneToMany",
"Umlet": "lt=-\nm1=1\nm2=*",
"UmletRev": "lt=-\nm1=*\nm2=1",
"Short": "1 - n",
"Description": "one to many"
},
{
"id": "ManyToOne",
"Umlet": "lt=-\nm1=*\nm2=1",
"UmletRev": "lt=-\nm1=1\nm2=*",
"Short": "n - 1",
"Description": "many to one"
},
{
"id": "ManyToMany",
"Umlet": "lt=-\nm1=*\nm2=*",
"UmletRev": "lt=-\nm1=*\nm2=*",
"Short": "n - m",
"Description": "many to many"
}
]
Suggested change:
id
->key
?
{
"version": "2.0",
"relations": [
{
"id": "OneToOne",
"umlet": "lt=-\nm1=1\nm2=1",
"umletRev": "lt=-\nm1=1\nm2=1",
"short": "1 - 1",
"description": "one to one"
},
{
"id": "OneToMany",
"umlet": "lt=-\nm1=1\nm2=*",
"umletRev": "lt=-\nm1=*\nm2=1",
"short": "1 - n",
"description": "one to many"
},
{
"id": "ManyToOne",
"umlet": "lt=-\nm1=*\nm2=1",
"umletRev": "lt=-\nm1=1\nm2=*",
"short": "n - 1",
"description": "many to one"
},
{
"id": "ManyToMany",
"umlet": "lt=-\nm1=*\nm2=*",
"umletRev": "lt=-\nm1=*\nm2=*",
"short": "n - m",
"description": "many to many"
}
]
}
{ARS}/variableExtensionsConfig.json
-> {$HOME}/.divekit/variation/variableExtensions.json
Will be stored here during installation and then copied to the new Origin Repos during divekit init
.
[
{
"id": "Basic",
"variableExtensions": {
"": {
"preValue": "",
"value": "id",
"postValue": "",
"modifier": "NONE"
},
"Class": {
"preValue": "",
"value": "id",
"postValue": "",
"modifier": "NONE"
},
"Package": {
"preValue": "",
"value": "Class",
"postValue": "",
"modifier": "ALL_LOWER_CASE"
},
"ClassPath": {
"preValue": "thkoeln.st.st2praktikum.racing.", // ??? deprecated ???
"value": "Class",
"postValue": ".domain",
"modifier": "ALL_LOWER_CASE"
}
}
},
{
"id": "Getter",
"variableExtensions": {
"GetToOne": {
"preValue": "get",
"value": "Class",
"postValue": "",
"modifier": "NONE"
},
"GetToMany": {
"preValue": "get",
"value": "s",
"postValue": "",
"modifier": "NONE"
}
}
}
]
Questions
From my notes
I thought I had written this somewhere already, but I can’t find it anymore.
- [0] INIT -> “Installation” exists twice
- Once during DiveKit installation
- Once during DiveKit initialization in a new OriginRepo
So what should go where (have ideas)?
- Is the
preValue
still needed?
I unfortunately don’t remember exactly what/why, but this was causing some significant issues.