#!/usr/bin/env bash ENGINE_DIR="$1" VERSION="$2" origVersion=$VERSION SUFFIX=${SUFFIX:=ce} [[ $# < 2 ]] && echo 'not enough args' && exit 1 DATE_COMMAND="date" if [[ $(uname) -eq "Darwin" ]]; then DATE_COMMAND="docker run --rm alpine date" fi gen_deb_version() { # Adds an increment to the deb version to get proper order # 18.01.0-${SUFFIX}-tp1 -> 18.01.0-${SUFFIX}-0.1-tp1 # 18.01.0-${SUFFIX}-beta1 -> 18.01.0-${SUFFIX}-1.1-beta1 # 18.01.0-${SUFFIX}-rc1 -> 18.01.0-${SUFFIX}-2.1-rc1 # 18.01.0-${SUFFIX} -> 18.01.0-${SUFFIX}-3 fullVersion="$1" pattern="$2" increment="$3" testVersion="${fullVersion#*-$SUFFIX-*$pattern}" baseVersion="${fullVersion%-"$pattern"*}" echo "$baseVersion-$increment.$testVersion.$pattern$testVersion" } case "$VERSION" in *-dev) debVersion="$VERSION" ;; *-tp[0-9]*) debVersion="$(gen_deb_version "$VERSION" tp 0)" ;; *-beta[0-9]*) debVersion="$(gen_deb_version "$VERSION" beta 1)" ;; *-rc[0-9]*) debVersion="$(gen_deb_version "$VERSION" rc 2)" ;; *) debVersion="$VERSION-3" ;; esac export TZ=UTC tilde='~' # ouch Bash 4.2 vs 4.3, you keel me # git running in different directories, backwards compatible too GIT_COMMAND="git -C $ENGINE_DIR" debVersion="${debVersion//-/$tilde}" # using \~ or '~' here works in 4.3, but not 4.2; just ~ causes $HOME to be inserted, hence the $tilde # if we have a "-dev" suffix or have change in Git, let's make this package version more complex so it works better if [[ "$VERSION" == *-dev ]]; then gitUnix="$($GIT_COMMAND log -1 --pretty='%at')" gitDate="$($DATE_COMMAND --date "@$gitUnix" +'%Y%m%d.%H%M%S')" gitCommit="$($GIT_COMMAND log -1 --pretty='%h')" debVersion="0.${gitDate}-${gitCommit}" origVersion=$debVersion # $ dpkg --compare-versions 1.5.0 gt 1.5.0~rc1 && echo true || echo false # true # $ dpkg --compare-versions 1.5.0~rc1 gt 1.5.0~git20150128.112847.17e840a && echo true || echo false # true # $ dpkg --compare-versions 1.5.0~git20150128.112847.17e840a gt 1.5.0~dev~git20150128.112847.17e840a && echo true || echo false # true # ie, 1.5.0 > 1.5.0~rc1 > 1.5.0~git20150128.112847.17e840a > 1.5.0~dev~git20150128.112847.17e840a fi echo "$debVersion" "$origVersion"