ansible-sshd/meta/make_ostree_packages_files
Rich Megginson a25523ddce ci: Use supported ansible-lint action; run ansible-lint against the collection
The old ansible-community ansible-lint is deprecated.  There is a
new ansible-lint github action.

The latest Ansible repo gating tests run ansible-lint against
the collection format instead of against individual roles.
We have to convert the role to collection format before running
ansible-test.

This also requires tox-lsr 3.2.1

Role developers can run this locally using
`tox -e collection,ansible-lint-collection`
See https://github.com/linux-system-roles/tox-lsr/pull/125

Fix ansible-lint and ansible-test issues reported by the
latest 2.16 versions.

Signed-off-by: Rich Megginson <rmeggins@redhat.com>
2024-01-08 10:56:53 -07:00

48 lines
1.4 KiB
Bash
Executable file

#!/usr/bin/env bash
set -euo pipefail
declare -A os_family=( [RedHat]=RedHat [CentOS]=RedHat [Fedora]=RedHat
[AlmaLinux]=RedHat [Rocky]=RedHat [OracleLinux]=RedHat )
for file in vars/*.yml; do
if [ "$file" = vars/main.yml ]; then
continue
fi
# get platform and optional version
if [[ "$file" =~ vars/([^_]+)_([0-9]+).yml$ ]]; then
platform="${BASH_REMATCH[1]}"
version="${BASH_REMATCH[2]}"
packages_file=".ostree/packages-runtime-${platform}-${version}.txt"
elif [[ "$file" =~ vars/([^_.]+).yml$ ]]; then
platform="${BASH_REMATCH[1]}"
packages_file=".ostree/packages-runtime-${platform}.txt"
else
echo ERROR: cannot parse "$file"
exit 1
fi
# only os_family == RedHat is supported
if [ "${os_family[$platform]:-}" = RedHat ]; then
: # proceed - fall through
else
echo platform "$platform" not supported for ostree
continue
fi
# parse packages from file
printit=0
while read -r item pkg; do
if [[ "$item" =~ ^__sshd_packages: ]]; then
printit=1
elif [ "$printit" = 1 ]; then
if [ "$item" = "-" ] && [ -n "$pkg" ]; then
echo "$pkg"
else
break
fi
fi
done < "$file" | sort > "$packages_file"
# remove empty files
if [ ! -s "$packages_file" ]; then
rm -f "$packages_file"
fi
done