introduce swupd package manager

This commit is contained in:
romain-dartigues 2024-02-10 18:02:53 +01:00
parent 7d590225af
commit d1ae8942da
7 changed files with 149 additions and 0 deletions

View File

@ -0,0 +1,29 @@
#!/bin/sh -e
# This file is part of cdist.
#
# cdist is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# cdist is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
#
#
# Retrieve the status of a package on Clear Linux OS
#
if [ -f "$__object/parameter/name" ]
then name="$(cat "$__object/parameter/name")"
else name="$__object_id"
fi
if swupd bundle-list --status --quiet | grep -q "^${name}: .*installed"
then echo present
else echo absent
fi

View File

@ -0,0 +1,50 @@
#!/bin/sh -e
# This file is part of cdist.
#
# cdist is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# cdist is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
#
#
# Manage packages on Clear Linux OS
#
if [ -f "$__object/parameter/name" ]; then
name="$(cat "$__object/parameter/name")"
else
name="$__object_id"
fi
state_should="$(cat "$__object/parameter/state")"
state_is="$(cat "$__object/explorer/state")"
# Nothing to be done
[ "$state_is" = "$state_should" ] && exit 0
case "$state_should" in
present)
if [ -f "$__object/parameter/install-optional" ]
then swupd_opts=""
else swupd_opts="--skip-optional"
fi
echo "swupd bundle-add $swupd_opts -y --quiet '$name'"
echo "installed" >> "$__messages_out"
;;
absent)
echo "swupd bundle-remove '$name'"
echo "removed" >> "$__messages_out"
;;
*)
echo "Unknown state: $state_should" >&2
exit 1
;;
esac

View File

@ -0,0 +1,66 @@
cdist-type__package_swupd(7)
============================
NAME
----
cdist-type__package_swupd - Manage packages with swupd
DESCRIPTION
-----------
swupd (software update program) is the package manager used on Clear Linux OS to
manage packages. The package will be installed without optional
packages. If such packages are required, install them
separately or use the parameter ``--install-optional``.
REQUIRED PARAMETERS
-------------------
None
OPTIONAL PARAMETERS
-------------------
name
If supplied, use the name and not the object id as the package name.
state
Either "present" or "absent", defaults to "present"
BOOLEAN PARAMETERS
------------------
install-optional
If the package will be installed, it also installs optional packages
with it. It will not install optional packages if the original package
is already installed.
EXAMPLES
--------
.. code-block:: sh
# Ensure zsh in installed
__package_swupd zsh --state present
# Remove package
__package_swupd zsh --state absent
SEE ALSO
--------
:strong:`cdist-type__package`\ (7)
AUTHORS
-------
Romain Dartigues <romain.dartigues+cdist at gmail.com>
COPYING
-------
Copyright \(C) 2024 Romain Dartigues. You can redistribute it
and/or modify it under the terms of the GNU General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.

View File

@ -0,0 +1 @@
install-optional

View File

@ -0,0 +1 @@
present

View File

@ -0,0 +1,2 @@
name
state