summaryrefslogtreecommitdiff
path: root/run/pkg.sh
blob: cb944ab258a2a853cad1eae174f2f176c26029d8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#!/bin/bash

set -eo pipefail

if [ $# -lt 1 ]; then
  echo "Usage: $0 <package> [<destination>]"
  echo "packages: deb rpm"
  exit 1
fi

# check package version is set
: "${PACKAGE_VERSION:?}"

PACKAGE_DIR="$(cd "$(dirname "$0")" && pwd)"
PREFIX=/opt/sota

export AUTH_SERVER="${AUTH_SERVER-http://localhost:9001}"
export CORE_SERVER="${CORE_SERVER-http://localhost:8080}"
export OTA_CREDENTIALS_FILE="${OTA_CREDENTIALS_FILE-${PREFIX}/credentials.toml}"

case $1 in
  "deb" )
    export PACKAGE_MANAGER="deb"
    PKG_BUILD_OPTS="--deb-systemd ${PACKAGE_DIR}/sota_client.service"
    ;;
  "rpm" )
    export PACKAGE_MANAGER="rpm"
    PKG_BUILD_OPTS="--rpm-service ${PACKAGE_DIR}/sota_client.service"
    ;;
  *)
    echo "unknown package format $1"
    exit 2
esac
shift

function make_pkg {
  destination=$1
  template=$(mktemp)

  envsubst < "${PACKAGE_DIR}/sota.toml.template" > "${template}"
  [[ "${AUTH_SECTION}" = false ]] && sed -i '1,/\[core\]/{/\[core\]/p;d}' "${template}"
  chmod 600 "$template"

  fpm \
    -s dir \
    -t "${PACKAGE_MANAGER}" \
    --architecture native \
    --name "${PACKAGE_NAME:-sota-client}" \
    --version "${PACKAGE_VERSION}" \
    --package NAME-VERSION.TYPE \
    ${PKG_BUILD_OPTS} \
    "${PACKAGE_DIR}/sota_client=/usr/bin/sota_client" \
    "${PACKAGE_DIR}/system_info.sh=/usr/bin/system_info.sh" \
    "${PACKAGE_DIR}/sota_certificates=/etc/sota_certificates" \
    "${template}=/etc/sota.toml"

  if [ -n "$destination" ]; then
    mv -f "sota-client*.${PACKAGE_MANAGER}" "${destination}"
  fi
  rm -f "${template}"
}

make_pkg $*