#!/bin/bash # # Progressia # Copyright (C) 2020-2021 Wind Corporation and contributors # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # echoerr() { echo "$@" 1>&2; } buildDebianPackage() { # Commands that must be available to execute this action requiredCommands='dpkg-deb fakeroot' # Package name. Sync with control file manually! name='progressia-techdemo' # Version that the package will receive. Sync with control file manually! version='1.0_all' # This directory will be copied into $tmpDir templateDirectory="build_packages/DEB/template" # Files that must be present requiredFiles="$templateDirectory/DEBIAN/control" nameAndVersion="$name-$version" tmpDir="build_packages/DEB/$nameAndVersion" outputFile="build_packages/DEB/$nameAndVersion.deb" echo "Checking environment to build Debian package" for item in $requiredCommands; do if command -v "$item" &> /dev/null; then echo "- $item found" else echoerr "Command $item not found, cannot package" exit 100 fi done for file in $requiredFiles; do if ! [ -r "$file" ]; then echoerr "$file is missing or not readable, cannot package" exit 101 else echo "- $file is present and readable" fi done echo "Environment OK; packaging Debian package" exitCode=0 { shareDir="$tmpDir/usr/share/progressia" mkdir -p "$tmpDir" && mkdir -p "$shareDir" && cp -r "$templateDirectory"/* "$tmpDir" && cp -r 'build/libs/lib' "$shareDir/lib" && cp 'build/libs/Progressia.jar' "$shareDir/Progressia.jar" && echo "------ DPKG-DEB ------" && fakeroot dpkg-deb --build "$tmpDir" && echo "---- DPKG-DEB END ----" && mv "$outputFile" build_packages } || { echoerr "Could not create Debian package" exitCode=1 } { if [ -d "$tmpDir" ]; then rm -r "$tmpDir" fi echo "Cleaned up" } || { echoerr "Could not clean up after packaging Debian package" exitCode=2 } exit "$exitCode" } buildWindowsInstaller() { # Commands that must be available to execute this action requiredCommands='makensis' # NSIS configuration file that must be present configurationFile='build_packages/NSIS/ProgressiaInstaller.nsi' # File that will be output outputFile='build_packages/NSIS/ProgressiaInstaller.exe' echo "Checking environment to build Windows installer" for item in $requiredCommands; do if command -v "$item" &> /dev/null; then echo "- $item found" else echoerr "Command $item not found, cannot build" exit 100 fi done if ! [ -r "$configurationFile" ]; then echoerr "$configurationFile is missing or not readable, cannot build" exit 101 else echo "- $configurationFile is present and readable" fi echo "Environment OK; building Windows installer" exitCode=0 { cp -r 'build/libs/lib' 'build_packages/NSIS/lib' && cp 'build/libs/Progressia.jar' 'build_packages/NSIS/Progressia.jar' && cp 'LICENSE' 'build_packages/NSIS/LICENSE.txt' && echo "------ NSIS ------" && makensis "$configurationFile" && echo "---- NSIS END ----" && mv "$outputFile" build_packages } || { echoerr "Could not build Windows installer" exitCode=1 } { if [ -d 'build_packages/NSIS/lib' ]; then rm -r 'build_packages/NSIS/lib' fi if [ -e 'build_packages/NSIS/Progressia.jar' ]; then rm 'build_packages/NSIS/Progressia.jar' fi if [ -e 'build_packages/NSIS/LICENSE.txt' ]; then rm 'build_packages/NSIS/LICENSE.txt' fi echo "Cleaned up" } || { echoerr "Could not clean up after building Windows installer" exitCode=2 } exit "$exitCode" } printUsage() { echoerr "Usage: $0 TARGET" echoerr " where TARGET is 'debian' or 'windows'" } if [ -n "$2" ]; then echoerr "Too many arguments." printUsage exit 202 fi case "$1" in "debian") buildDebianPackage ;; "windows") buildWindowsInstaller ;; "") echoerr "No action specified" printUsage exit 200 ;; "--help" | "-help" | "help" | "?") printUsage ;; *) echoerr "Unknown action '$1'" printUsage exit 201 ;; esac