81 lines
4.3 KiB
Markdown
81 lines
4.3 KiB
Markdown
|
# Architecture of ReleaseMixin
|
||
|
|
||
|
[Link to live editor](https://mermaid.live/edit#pako:eNrtV99vmzAQ_lcsPzUSrUjIj8JDpUqb9jSpaqs9TJGQg6_UGxhmTNes6v8-E0MCGIem6-MiBYnz3Xd3vu8ulxccZRRwgAv4VQKP4BMjsSApUp81r54CIolEvDmbup6D6sdEn21KllB0fnWFbiEBUsBX9sx4gMKQcSbD8CwX2Q9l76Ao4w8sDh9YArUtiSR7IhI6pge3HWnl4QuT1zlrYU8sirXgfpvDLeRZwWQmti07DVRb50RIFrGccNk2tEB_A1GwjA_Cmhm2sWvL4yEP4ho-neEMHZQSxsONIDx6tGenD4BTo7oO8tV3NVLaXIBChVBoaVOFPc7MrfixcNDCtRXoRkPU8jsQTyyCVsbGbfQZMwigdQaPbHccg-zn0WflQb2TzEF8jHIt_FCqM5uTrl3HUfeo0wgVeqJQChlGWZoyacBrTS2kMCi2u2mdBOjQly2c8eh7kAPtUyXxpMVG-Ia6PjfENuwkI3TXjw3ymy0VhVTJ3mza4m5l46A6ozBhhZwY92bJ6yi1zPaort1psNSALYUALrv9v29zs2p972Pn4wgfMAJ-CyYhJJzWjO5352h3B6jpNxupOmOwfunWMhKgFEMD6FgPjIVnHXlGxo27OpzJO8baiS2oQ9iRveFtIQXj8ajvZhIRSs_erNydVeYP0QeyZ1Om-QnUqdSHyn06d2xI_4nzYcRpXeWRdWBPr4GFpyLaym3xzLbySBLvLjovi8fDRDqyqt6T-JrTG6Vu3XE6S-g-E5vhu3wNh61hrI7GIU9BakqnQ-GZVEnSf4zh5HSaICrDAfbYbG0du7v6HqmqJ3ZwCkLt4FT9m3qpJGssHyGFNVadhSkRP9d4zV-VHilldrflEQ4eSFKAg8ucKg_1X6-e9DOt2m0vVLv89yxTSlKU-hUHL_gZB-fT6cWlt_Td5dzz1ACdL30Hb5Xcny4uZjN_7k2ni5k39y5fHfxnBzG7cD135fnzxdJfrObu6vUveFPSvA)
|
||
|
|
||
|
```mermaid
|
||
|
sequenceDiagram
|
||
|
rect rgb(103, 103, 10)
|
||
|
build ->> ReleaseMixin: __init__(project, config_file)
|
||
|
activate ReleaseMixin
|
||
|
ReleaseMixin ->> GitApi: __init__()
|
||
|
ReleaseMixin ->> ReleaseTypeRepository: __init__(GitApi)
|
||
|
participant ReleaseType
|
||
|
ReleaseMixin ->> VersionRepository: __init__(config_file)
|
||
|
participant Version
|
||
|
ReleaseMixin ->> ReleaseRepository: __init__(VersionRepository, ReleaseTypeRepository, main_branch)
|
||
|
participant Release
|
||
|
end
|
||
|
rect rgb(10, 90, 7)
|
||
|
build ->> ReleaseMixin: prepare_release()
|
||
|
rect rgb(20, 105, 50)
|
||
|
ReleaseMixin ->> PrepareReleaseService: __init__(ReleaseRepository)
|
||
|
activate PrepareReleaseService
|
||
|
PrepareReleaseService ->> ReleaseRepository: get_release()
|
||
|
activate ReleaseRepository
|
||
|
ReleaseRepository ->> ReleaseTypeRepository: get_release_type()
|
||
|
activate ReleaseTypeRepository
|
||
|
ReleaseTypeRepository ->> GitApi: get_latest_commit()
|
||
|
activate GitApi
|
||
|
deactivate GitApi
|
||
|
ReleaseTypeRepository ->> ReleaseType:
|
||
|
deactivate ReleaseTypeRepository
|
||
|
ReleaseRepository ->> VersionRepository: get_version()
|
||
|
activate VersionRepository
|
||
|
VersionRepository ->> VersionRepository: load_file()
|
||
|
VersionRepository ->> VersionRepository: parse_file()
|
||
|
VersionRepository ->> Version: __init__(file, version_list)
|
||
|
deactivate VersionRepository
|
||
|
ReleaseRepository ->> Release: __init__(ReleaseType, Version, current_branch)
|
||
|
end
|
||
|
deactivate ReleaseRepository
|
||
|
activate ReleaseRepository
|
||
|
deactivate ReleaseRepository
|
||
|
rect rgb(20, 105, 50)
|
||
|
ReleaseMixin ->> PrepareReleaseService: write_and_commit_release()
|
||
|
PrepareReleaseService ->> Release: release_version()
|
||
|
activate Release
|
||
|
Release ->> Version: create_release_version()
|
||
|
deactivate Release
|
||
|
PrepareReleaseService ->> PrepareReleaseService: __write_and_commit_version(Version)
|
||
|
PrepareReleaseService ->> ReleaseRepository:
|
||
|
ReleaseRepository ->> VersionRepository: write_file(version_string)
|
||
|
PrepareReleaseService ->> GitApi: add()
|
||
|
PrepareReleaseService ->> GitApi: commit()
|
||
|
end
|
||
|
rect rgb(20, 105, 50)
|
||
|
ReleaseMixin ->> PrepareReleaseService: write_and_commit_bump()
|
||
|
PrepareReleaseService ->> Release: bump_version()
|
||
|
activate Release
|
||
|
Release ->> Version: create_bump_version()
|
||
|
deactivate Release
|
||
|
PrepareReleaseService ->> PrepareReleaseService: __write_and_commit_version(Version)
|
||
|
PrepareReleaseService ->> ReleaseRepository:
|
||
|
ReleaseRepository ->> VersionRepository: write_file(version_string)
|
||
|
PrepareReleaseService ->> GitApi: add()
|
||
|
PrepareReleaseService ->> GitApi: commit()
|
||
|
deactivate PrepareReleaseService
|
||
|
end
|
||
|
end
|
||
|
rect rgb(120, 70, 50)
|
||
|
build ->> ReleaseMixin: tag_and_push_release()
|
||
|
ReleaseMixin ->> TagAndPushReleaseService: __init__(GitApi)
|
||
|
activate TagAndPushReleaseService
|
||
|
ReleaseMixin ->> TagAndPushReleaseService: tag_and_push_release()
|
||
|
TagAndPushReleaseService ->> TagAndPushReleaseService: tag_release()
|
||
|
TagAndPushReleaseService ->> GitApi: tag_annotated()
|
||
|
TagAndPushReleaseService ->> TagAndPushReleaseService: push_release()
|
||
|
TagAndPushReleaseService ->> GitApi: push()
|
||
|
deactivate TagAndPushReleaseService
|
||
|
deactivate ReleaseMixin
|
||
|
end
|
||
|
```
|