72 lines
2.3 KiB
Bash
Executable File
72 lines
2.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
packager=${1:?packager must be deb or rpm}
|
|
manifest=${2:?plugin Cargo.toml is required}
|
|
release_root=${3:?release target directory 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
|
|
|
|
metadata=$(cargo metadata --format-version 1 --no-deps --manifest-path "$manifest")
|
|
manifest_absolute=$(realpath "$manifest")
|
|
package_metadata=$(jq -c --arg manifest "$manifest_absolute" \
|
|
'.packages[] | select(.manifest_path == $manifest)' <<<"$metadata")
|
|
package=$(jq -r '.name' <<<"$package_metadata")
|
|
version=$(jq -r '.version' <<<"$package_metadata")
|
|
description=$(jq -r '.description' <<<"$package_metadata")
|
|
api_version=$(jq -r '.metadata.convertis["api-version"]' <<<"$package_metadata")
|
|
target=$(jq -r '.targets[] | select(.kind | index("cdylib")) | .name' <<<"$package_metadata")
|
|
library="lib${target}.so"
|
|
|
|
if [[ "$api_version" != "2" ]]; then
|
|
echo "$manifest advertises unsupported plugin API $api_version" >&2
|
|
exit 1
|
|
fi
|
|
if [[ ! -f "$release_root/$library" ]]; then
|
|
echo "plugin library not found: $release_root/$library" >&2
|
|
exit 1
|
|
fi
|
|
|
|
mkdir -p "$dist_dir"
|
|
config=$(mktemp)
|
|
trap 'rm -f "$config"' EXIT
|
|
|
|
if [[ "$packager" == "deb" ]]; then
|
|
architecture=amd64
|
|
dependency_key="debian-dependencies"
|
|
else
|
|
architecture=x86_64
|
|
dependency_key="rpm-dependencies"
|
|
fi
|
|
|
|
{
|
|
echo "name: $package"
|
|
echo "arch: $architecture"
|
|
echo "platform: linux"
|
|
echo "version: $version"
|
|
echo "release: 1"
|
|
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 "contents:"
|
|
echo " - src: $release_root/$library"
|
|
echo " dst: /usr/lib/convertis/plugins/$library"
|
|
echo " file_info:"
|
|
echo " mode: 0755"
|
|
echo "depends:"
|
|
echo " - convertis-plugin-api-2"
|
|
jq -r --arg key "$dependency_key" \
|
|
'.metadata.convertis[$key] // [] | .[] | " - " + .' \
|
|
<<<"$package_metadata"
|
|
} >"$config"
|
|
|
|
"$nfpm_command" package --config "$config" --packager "$packager" --target "$dist_dir/"
|