77 lines
2.5 KiB
Bash
77 lines
2.5 KiB
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
packager=${1:?packager must be deb or rpm}
|
|
version=${2:?version is required}
|
|
release_root=${3:?release target directory is required}
|
|
dist_dir=${4:-dist}
|
|
mkdir -p "$dist_dir"
|
|
|
|
if [[ "$packager" == "deb" ]]; then
|
|
architecture=amd64
|
|
system_dependencies=("libc6" "libgcc-s1")
|
|
else
|
|
architecture=amd64
|
|
system_dependencies=("glibc" "libgcc")
|
|
fi
|
|
|
|
make_package() {
|
|
local name=$1 description=$2
|
|
shift 2
|
|
local config
|
|
config=$(mktemp)
|
|
local contents=()
|
|
while [[ $# -gt 0 && "$1" == content:* ]]; do
|
|
contents+=("${1#content:}")
|
|
shift
|
|
done
|
|
local dependencies=("$@")
|
|
{
|
|
echo "name: $name"
|
|
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"
|
|
if [[ "$name" == "convertis" ]]; then
|
|
echo "provides:"
|
|
echo " - convertis-plugin-api-2"
|
|
fi
|
|
if [[ ${#contents[@]} -gt 0 ]]; then
|
|
echo "contents:"
|
|
for mapping in "${contents[@]}"; do
|
|
destination=${mapping#*::}
|
|
echo " - src: ${mapping%%::*}"
|
|
echo " dst: $destination"
|
|
echo " file_info:"
|
|
if [[ "$destination" == /usr/bin/* || "$destination" == *.so ]]; then
|
|
echo " mode: 0755"
|
|
else
|
|
echo " mode: 0644"
|
|
fi
|
|
done
|
|
fi
|
|
if [[ ${#dependencies[@]} -gt 0 ]]; then
|
|
echo "depends:"
|
|
for dependency in "${dependencies[@]}"; do
|
|
echo " - $dependency"
|
|
done
|
|
fi
|
|
} > "$config"
|
|
nfpm package --config "$config" --packager "$packager" --target "$dist_dir/"
|
|
rm -f "$config"
|
|
}
|
|
|
|
make_package convertis "Plugin-based universal file converter" \
|
|
"content:${release_root}/convertis::/usr/bin/convertis" \
|
|
"content:target/man/convertis.1::/usr/share/man/man1/convertis.1" \
|
|
"content:README.md::/usr/share/doc/convertis/README.md" \
|
|
"content:LICENSE::/usr/share/doc/convertis/LICENSE" \
|
|
"content:packaging/plugin-catalog.json::/usr/share/convertis/plugin-catalog.json" \
|
|
"${system_dependencies[@]}"
|