Refactoring Easy-installer
This milestone is about refactoring Easy-installer.
Now that we have few years of feedback we can better see what Easy-installer must be and do. Consequently, we can redesign the application to a better version.
The refactoring should be progressive as it will affect all the application.
Expected benefits:
Codes more accessible:
- Easier to understand for everyone (including external user)
- Easier to maintain
Codes more reliable:
- Splitted in smaller unit
- Easier to implement test, and unit test
Codes more flexible:
- Easier to add, update or remove steps
- Easier to create new type of Steps
- Easier to modify process or to make specific things for one or few device
App's size reduction (a little).
Reduces classes coupling:
- Better efficiency (a little)
- JavaFX code will be more isolated
Concerned part of the application:
Everything
new process idea:
new Diagram package idea
There is may be some improvement possible in the "Step" classes. (How to separate Custom, Executable and CustomExecutable properly)
New config files for each device:
We still have 2 yaml file by device but they will be: <device_preparation.yml> <device_flash.yml>
They will both contains a full Process
The <device_preparation> will just include one more section about files to download. But this will remain the same as it is
Before:
After:
Yaml new structure: 0. Process data stepscount: steps:
preparationProcess also include: sources: as it is already done
-
Default step : type: stepNumber: nextStepKey:
-
Custom Step contain default step datas plus: title: // key from translation file titleIcon: //name of the icon to print with title instructions: //List of key from translation file
- <key 1>
- <key 2>
- <key 3>
- ...
but we fixed "type: custom"
- ExecutableStep contains default step datas plus: script: //Name of the script to run. No extension! outputKey: // Key used to save script output in parameters nextKoStepKey: okCodes: //List of valid exit code for the script/command with translation key to use for interface "": "": ... koCodes: //Same as "okCodes" but for failure "": "": ...
but we fixed "type: executable"
- ExecutableCustomStep contains Default step + ActionStep + ExecutableStep
but we fixed "type: custom-executable"
- Load Step contains ExecutableActionStep data plus: averageTime: //The average time for command execution
but we fixed "type: load"
Idea of improvement:
( Feature proposal )yaml option for default Step:
- osRestriction: This allow to define step that are only run on the corresponding OS. Multiple os can be specified. values:
- windows
- linux
- OSX
or "~" if no restriction
- skippable:
values : true or false This give the possibility to user to skip it
by example if it's already done But some step should be unskippable