mirror of
				https://github.com/KartKrewDev/RingRacers.git
				synced 2025-10-30 08:01:28 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			166 lines
		
	
	
	
		
			4.2 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			166 lines
		
	
	
	
		
			4.2 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
#!/bin/bash
 | 
						|
 | 
						|
# Deployer for Travis-CI
 | 
						|
# Debian package templating
 | 
						|
#
 | 
						|
# Call this script BEFORE running debuild!
 | 
						|
# source ./debian_template.sh [clean] [main/asset]
 | 
						|
#
 | 
						|
# Before running this script,
 | 
						|
# you should also set PACKAGE_NAME_EMAIL="John Doe <jdoe@example.com>" to match
 | 
						|
# the identity of the key you will use to sign the package.
 | 
						|
#
 | 
						|
 | 
						|
# Get script's actual path
 | 
						|
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
 | 
						|
 | 
						|
# Recursive function for directory crawling
 | 
						|
# $1 = Directory root to crawl
 | 
						|
# $2 = Code to eval on file
 | 
						|
# $3 = Code to eval on directory
 | 
						|
# Exposes $dirtails, $dirlevel, and $dirtailname
 | 
						|
dirlevel=0 # initialize
 | 
						|
dirtails=()
 | 
						|
 | 
						|
# Utility function to make dira/dirb/dirc string
 | 
						|
makedirtailname () {
 | 
						|
	dirtailname=""
 | 
						|
	for tail in $dirtails; do
 | 
						|
		if [[ "$dirtailname" == "" ]]; then
 | 
						|
			dirtailname="/$tail";
 | 
						|
		else
 | 
						|
			dirtailname="$dirtailname/$tail";
 | 
						|
		fi;
 | 
						|
	done;
 | 
						|
}
 | 
						|
 | 
						|
evaldirectory () {
 | 
						|
	if [ -d "$1" ]; then
 | 
						|
		# Set contextual variables
 | 
						|
		# dirtails is an array of directory basenames after the crawl root
 | 
						|
		if (( $dirlevel > 0 )); then
 | 
						|
			dirtails+=( "$(basename $1)" );
 | 
						|
		else
 | 
						|
			dirtails=();
 | 
						|
		fi;
 | 
						|
		dirlevel=$((dirlevel+1));
 | 
						|
 | 
						|
		# Generate directory path after the crawl root
 | 
						|
		makedirtailname;
 | 
						|
 | 
						|
		# Eval our directory with the latest contextual info
 | 
						|
		# Don't eval on root
 | 
						|
		if (( $dirlevel > 1 )) && [[ "$3" != "" ]]; then
 | 
						|
			eval "$3";
 | 
						|
		fi;
 | 
						|
 | 
						|
		# Iterate entries
 | 
						|
		for name in $1/*; do
 | 
						|
			if [ -d "$name" ]; then
 | 
						|
				# Name is a directory, but don't eval yet
 | 
						|
				# Recurse so our vars are updated
 | 
						|
				evaldirectory "$name" "$2" "$3";
 | 
						|
 | 
						|
				# Decrement our directory level and remove a dirtail
 | 
						|
				unset 'dirtails[ ${#dirtails[@]}-1 ]';
 | 
						|
				dirlevel=$((dirlevel-1));
 | 
						|
				makedirtailname;
 | 
						|
			else
 | 
						|
				# Name is a file
 | 
						|
				if [ -f "$name" ] && [[ "$2" != "" ]]; then
 | 
						|
					eval "$2";
 | 
						|
				fi;
 | 
						|
			fi;
 | 
						|
		done;
 | 
						|
 | 
						|
		# Reset our variables; we're done iterating
 | 
						|
		if (( $dirlevel == 1 )); then
 | 
						|
			dirlevel=0;
 | 
						|
		fi;
 | 
						|
	fi;
 | 
						|
}
 | 
						|
 | 
						|
#
 | 
						|
# Initialize package parameter defaults
 | 
						|
#
 | 
						|
if [[ "$__DEBIAN_PARAMETERS_INITIALIZED" != "1" ]]; then
 | 
						|
	. ${DIR}/deployer/travis/deployer_defaults.sh;
 | 
						|
fi;
 | 
						|
 | 
						|
# Clean up after ourselves; we only expect to run this script once
 | 
						|
# during buildboting
 | 
						|
__DEBIAN_PARAMETERS_INITIALIZED=0
 | 
						|
 | 
						|
# for envsubst
 | 
						|
export __PACKAGE_DATETIME="$(date '+%a, %d %b %Y %H:%M:%S %z')"
 | 
						|
export __PACKAGE_DATETIME_DIGIT="$(date -u '+%Y%m%d%H%M%S')"
 | 
						|
 | 
						|
if [[ "$PACKAGE_REVISION" == "" ]]; then
 | 
						|
	PACKAGE_REVISION="-$__PACKAGE_DATETIME_DIGIT";
 | 
						|
	__PACKAGE_REVISION_BY_DATE=1;
 | 
						|
	export PACKAGE_REVISION=${PACKAGE_REVISION}; # for envsubst
 | 
						|
fi;
 | 
						|
 | 
						|
#
 | 
						|
# Clean the old debian/ directories
 | 
						|
#
 | 
						|
if [[ "$1" == "clean" ]]; then
 | 
						|
	toclean=$2;
 | 
						|
else
 | 
						|
	toclean=$1;
 | 
						|
fi;
 | 
						|
 | 
						|
if [[ "$toclean" == "" ]] || [[ "$toclean" == "main" ]]; then
 | 
						|
	echo "Cleaning main package scripts";
 | 
						|
	if [[ ! -f ${DIR}/debian ]]; then
 | 
						|
		rm -rf ${DIR}/debian;
 | 
						|
	fi;
 | 
						|
fi;
 | 
						|
if [[ "$toclean" == "" ]] || [[ "$toclean" == "asset" ]]; then
 | 
						|
	echo "Cleaning asset package scripts";
 | 
						|
	if [[ ! -f ${DIR}/assets/debian ]]; then
 | 
						|
		rm -rf ${DIR}/assets/debian;
 | 
						|
	fi;
 | 
						|
fi;
 | 
						|
 | 
						|
#
 | 
						|
# Make new templates
 | 
						|
#
 | 
						|
if [[ "$1" != "clean" ]]; then
 | 
						|
	totemplate=$1;
 | 
						|
 | 
						|
	# HACK: ${shlibs:Depends} in the templates make the templating fail
 | 
						|
	# So just define replacemment variables
 | 
						|
	export SHLIBS_DEPENDS=${SHLIBS_DEPENDS};
 | 
						|
	export MISC_DEPENDS=${MISC_DEPENDS};
 | 
						|
	export DEBFILEVAR='$$file'; # used in assets/debian/rules
 | 
						|
 | 
						|
	# Package parameters are exported for envsubst in deployer_defaults.sh
 | 
						|
 | 
						|
	if [[ "$totemplate" == "" ]] || [[ "$totemplate" == "main" ]]; then
 | 
						|
		echo "Generating main package scripts";
 | 
						|
		fromroot=${DIR}/debian-template;
 | 
						|
		toroot=${DIR}/debian;
 | 
						|
		mkdir ${toroot};
 | 
						|
 | 
						|
		evaldirectory ${fromroot} \
 | 
						|
			"cat \$name | envsubst > ${toroot}\${dirtailname}/\$( basename \$name )" \
 | 
						|
			"mkdir \"${toroot}\${dirtailname}\"";
 | 
						|
	fi;
 | 
						|
 | 
						|
	if [[ "$totemplate" == "" ]] || [[ "$totemplate" == "asset" ]]; then
 | 
						|
		echo "Generating asset package scripts";
 | 
						|
		fromroot=${DIR}/assets/debian-template;
 | 
						|
		toroot=${DIR}/assets/debian;
 | 
						|
		mkdir ${toroot};
 | 
						|
 | 
						|
		# Root dir to crawl; file eval; directory eval
 | 
						|
		evaldirectory ${fromroot} \
 | 
						|
			"cat \$name | envsubst > ${toroot}\${dirtailname}/\$( basename \$name )" \
 | 
						|
			"mkdir \"${toroot}\${dirtailname}\"";
 | 
						|
	fi;
 | 
						|
fi;
 | 
						|
 | 
						|
if [[ "$__DPL_ACTIVE" != "1" ]] && [[ "$__PACKAGE_REVISION_BY_DATE" == "1" ]]; then
 | 
						|
	unset PACKAGE_REVISION; # so we can reset the date on subsequent runs
 | 
						|
fi;
 |