Files
convertis/packaging/build-plugin-metapackages.sh
Elias Wendland c4982665a6
Release / check-release (push) Successful in 22s
Release / build (push) Skipped
Release / package (deb) (push) Skipped
Release / package (rpm) (push) Skipped
Release / publish (push) Skipped
CI / test (push) Successful in 2m6s
feat: add build script for plugin metapackages and integrate into CI pipeline
2026-07-17 20:12:47 +02:00

75 lines
2.1 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
packager=${1:?packager must be deb or rpm}
version=${2:?metapackage version is required}
release=${3:?metapackage release is required}
dist_dir=${4:-dist}
nfpm_command=${NFPM:-nfpm}
if [[ "$packager" != "deb" && "$packager" != "rpm" ]]; then
echo "packager must be deb or rpm" >&2
exit 1
fi
if [[ ! "$release" =~ ^[1-9][0-9]*$ ]]; then
echo "metapackage release must be a positive integer" >&2
exit 1
fi
if [[ "$packager" == "deb" ]]; then
architecture=all
else
architecture=noarch
fi
mkdir -p "$dist_dir"
make_metapackage() {
local name=$1 description=$2
shift 2
local config
config=$(mktemp)
{
echo "name: $name"
echo "arch: $architecture"
echo "platform: linux"
echo "version: $version"
echo "release: $release"
echo "section: utils"
echo "priority: optional"
echo "maintainer: Elias Wendland <eliaswendland@pm.me>"
echo "description: $description"
echo "license: GPL-3.0-only"
echo "homepage: https://git.ewenlau.net/ewenlau/convertis"
echo "depends:"
for dependency in "$@"; do
echo " - $dependency"
done
} > "$config"
"$nfpm_command" package --config "$config" --packager "$packager" --target "$dist_dir/"
rm -f "$config"
}
# These dependencies deliberately have no version constraint. Each plugin has
# its own release cycle, so a metapackage must never pin an installed plugin to
# the version that happened to exist when the metapackage was built.
make_metapackage convertis-ffmpeg "All official FFmpeg plugins for Convertis" \
convertis \
convertis-ffmpeg-audio \
convertis-ffmpeg-video \
convertis-ffmpeg-video-to-frames \
convertis-ffmpeg-frames-to-video
make_metapackage convertis-image "All official image plugins for Convertis" \
convertis \
convertis-native-image \
convertis-image-ascii \
convertis-imagemagick \
convertis-graphicsmagick
make_metapackage convertis-plugins-all "Every official Convertis plugin" \
convertis \
convertis-ffmpeg \
convertis-image \
convertis-html