With the exception of the "info" subcommand, nearly all of distro's
subcommands deal with package managing, so push them into their own
command category.
Signed-off-by: Jan Lindemann <jan@janware.com>
DistroBase's option --id is now redundant to the new global option
--distro-id in the App class, so remove --id. The only added value
DistroBase then brings to the table is its .distro property, which
can be provided by App just fine at this point, given that App has
all it needs to construct a Distro object, so add .distro to App and
remove the entire DistroBase class.
For convenience, also make App.distro available as a newly added
cmds.Cmd.distro property. This also obviates the need for the
distro-related properties in the .distro.Cmd class, remove all that.
Signed-off-by: Jan Lindemann <jan@janware.com>
Move most of CmdDistro into the new class DistroBase, meant to serve
as base class for distro-aware commands other than "distro".
Signed-off-by: Jan Lindemann <jan@janware.com>
Add @property App.distro_id, returning the ID field of
/etc/os-release. It is supposed to be the most specific part of the
OS cascade.
Signed-off-by: Jan Lindemann <jan@janware.com>
Better safe than sorry: If things are to happen unattendedly, enforce
the need to explicitly request that.
Signed-off-by: Jan Lindemann <jan@janware.com>