ls1intum / aeolus Goto Github PK
View Code? Open in Web Editor NEWHome Page: https://ls1intum.github.io/Aeolus/
License: MIT License
Home Page: https://ls1intum.github.io/Aeolus/
License: MIT License
Results from weekly meeting on the 07.08.2023
Preliminary language structure, we have actions
(clone, script [build, ], etc.) that are part of a job
. The actions are defined in so-called, for now, AeolusFiles and can include community-developed actions that are open-source and usable across the system.
Contains several actions that should be executed for an exercise
Actions that are executed at various points in the lifecycle of an exercise
Defined/written by community. We provide the definition and guidelines, and some basic stuff (clone/compile actions) to build basic jobs.
defines particular steps that are part of the final result or prepare something in the CI system.
Examples:
Check if it's still not possible to generate build plans from yaml
essentially all CI solutions make use of env variables, figure out a way to map those using Aeolus.
Idea: Gather a list of all default environment variables for the target systems and map these to our new system
Check if PUT
request is now possible, check if the web crawler for editing is obsolete.
AC:
AC:
Currently, the Bash scripts that are created from the Windfiles are ‘templated’ by manually adding them line-by-line to a result string. This has multiple disadvantages:
add_line()
needs to be called for every line. Each time the indentation has to be specified.\
and quotation marks.A template engine like for example Jinja2 would allow to create the scripts as templates with placeholders that can be filled in. It also allows for repeated blocks and blocks that are only ‘rendered’ (i.e., added to the script) based on some condition.
Especially when combined with a TypedDict
that holds the variables passed into the template, this allows for script templates that are easier to maintain.
Multiple smaller template files could be used and then be combined into the whole script.
More complex individual shell commands that are built from multiple conditional parameters could still be built in Python code and then passed in as a whole to the template to not have to deal with too many optional parameters in the template.
Approximate translation of
Line 58 in 789bcb0
main() {
{% if needs_lifecycle_parameter %}
local current_lifecycle="${1}"
{% endif %}
{% if needs_subshells %}
if [[ "${1}" == "aeolus_sourcing" ]]; then
# just source to use the methods in the subshell, no execution
return 0
fi
local _script_name
_script_name=$(realpath "${0}")
{% endif %}
{% if has_always_actions %}
trap final_aeolus_post_action EXIT
{% endif %}
{% for function in functions %}
{% if needs_subshells %}
bash -c "source ${_script_name} aeolus_sourcing; {{ function.name }} {{ function.parameter }}"
{% else %}
{{ function.name }} {{ function.parameter }}
{% endif %}
{% if has_multiple_steps %}
cd "{{ initial_directory_variable }}"
{% endif %}
{% end %}
}
main "${@}"
Jinja2 is just one example of a template engine I am somewhat familiar with. Other template engines might exist that are better suited for this concrete task.
The proposed refactoring is not essential to provide the core feature set of Aeolus. I would consider this as a possible nice-to-have to ensure long-term maintainability of the tool.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.