Bunch of changes, like a lot
This commit is contained in:
1 parent
f07f54d4c1
commit
3297f60f00
25 files changed
+566
-285
No files matched your search
Executable
+71
@@ -0,0 +1,71 @@
|
||||
#!/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/"
|
||||
Reference in new issue
Block a user