Open marcoceppi opened 1 year ago
@marcoceppi 's comment in https://github.com/ublue-os/startingpoint/issues/37#issuecomment-1520554065
I'm considering moving this into Yafti repo proper. There's an architectural change which will split Yafti into several modual components.
yafti.core
This will be a silm, almost abstract base, for the minimum required to process rules, config, and templates/plugins
yafti.cli
A console only version of Yafti which will add the ability for it to be run from a CLI with a rich terminal experience
yafti.gtk
The current version of Yafti, but rebased on top of the new yafti.core. Requring libadawaita and gtk
yafti.qt
A QT-only compatible interface for the yafti.core
This split should allow yafti to work natively with any (or for CLI, no) desktop environment.
I totally agree with that vision of splitting up yafti into multiple blocks.
I think yafti.core
should be everything–config parsing, package installation, state management–neatly packed into a library with an elegant api.
For yafti.core
, though, I'd recommend (and gladly help with) using Nim as the programming language.
@xynydev where did you guys end up on this one?
Nowhere. I was just idealistically bousting my favorite programming language, not willing to do any work. But good work on your end @abanna .
There's a good chance some downstream image makers will want the features of package installation without any popup. One option would be to have YaftiScreen understand headless vs not headless and do an almost
--assume-yes
for each screen. Another option would be to have YaftiScreens describe a separate workflow for when headless. So TitleScreen would be a noop (or print to log) and PackageScreen would jump immediately to the package install step functionall and output to a log vs the console component.