#!/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 " 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