#!/bin/bash # This script packages rpm, deb, and pacman packages of mgmt with fpm. The # first argument is the package type, and all subsequent arguments are the # dependencies. Example usage: `./fpm-pack.sh deb dependency1 dependency2` # the binary to package BINARY="mgmt" # git tag pointing to the current commit TAG=$(git tag -l --points-at HEAD) # maintainer email MAINTAINER="mgmt@noreply.github.com" # project url URL="https://github.com/purpleidea/mgmt/" # project description DESCRIPTION="Next generation distributed, event-driven, parallel config management!" # project license LICENSE="GPLv3" # location to install the binary PREFIX="/usr/bin" # release directory DIR="releases" # placeholder for dependencies to be read from arguments DEPS= # placeholder for changelog argument parsed from the package type CHANGELOG= # make sure we're on a tagged commit if [ "$TAG" == "" ]; then echo "cannot release an untagged commit" exit 1 fi # make sure the package type is valid if [ "$1" != "deb" ] && [ "$1" != "rpm" ] && [ "$1" != "pacman" ]; then echo "invalid package type" exit 1 fi # there are no changelogs for pacman packages if [ "$1" != "pacman" ]; then CHANGELOG="--${1}-changelog=${DIR}/${1}/changelog" fi # arguments after the first one are deps for i in "${@:2}"; do DEPS="$DEPS -d $i" done # build the package fpm \ --log error \ --name "$BINARY" \ --version "$TAG" \ --maintainer "$MAINTAINER" \ --url "$URL" \ --description "$DESCRIPTION" \ --license "$LICENSE" \ --input-type dir \ --output-type "$1" \ --package "${DIR}/${1}/" \ ${CHANGELOG} \ ${DEPS} \ --prefix "$PREFIX" \ "$BINARY"