JanssenProject / JanssenProject/jans
task(agama): implementation design
- Dominant language
- Java
- Stars
- 648
- Forks
- 174
- Avg merge
- 1d 18h
- Merged PRs (30d)
- 110
Description
Here is the original design proposal (WIP) by @jgomer2001 .
--------------------
Implementation design
--------------------
To solve this, we could make a few changes to the archive and metadata.
### `.gama` structure
```
├── code/
├── lib/
├── web/
├── gluufederation/agama-openid/ <--- github_id and project to avoid collissions
├── project.json
├── LICENSE
└── README.md
```
### `projects.json` metadata
```
{
"projectName": "A unique name that will be associated to this project",
"author": "A user handle that identifies you",
"description": "Other relevant data can go here",
"type": "",
"configs": {
"com.foods.sweet": {
"prop1": "secret",
"prop2": [1, 2, 3]
}
},
"noDirectLaunch": [ "test" ]
"parent_project": {
"GluuFederation/agama-pw": {"version": "1.9.42", "include_in_gama": True},
"GluuFederation/agama-openid": {"version": "3.3.2", "include_in_gama": False}
}
}
```
### Impacts / questions
* .gama
1. Add parent folder to `web` (github-id/repo)
* Agama Lab
1. Notifications about dependency version updates
1. Present an option to bundle certain projects in the `.gama`
1. Show links to dependency docs of available published projects--for example, smart drop down selector for Trigger to available flows (including depenencies)
1. Perhaps we can optionally show the parent project assets--but they are greyed out and **read only**. There could be a project checkbox to show imported assets...
* Publication Process
1. Impacts to project publication process? For example, we should perhaps not allow derivative projects in Agama Lab... `parent_project` must be null.
### More questions
Things to consider before undertaking implementation:
1. how will TUI display deployments now? when uploading an archive with several imported projects, several rows will appear, ie. one per project?
1. if so, how will removal work now? eg. if a project is removed, their dependencies too?
1. what if someone deploys a new version of a project but the currently deployed version is a dependency of another existing project? (project versioning is not supported because there cannot be several versions of the same Java class simultaneously)
1. While agama-lab will show a sort of "merged" view for code and lib directories, will the generated archive contain the archives of the corresponding dependencies instead? ie. dependencies not "exploded" ?
Contributor guide
Assessment
This issue has not been assessed yet.