#!/bin/bash SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) OUTPUT_DIR="$2" CFG_FILE="$3" DEFAULT_CFG_FILE=NIUT.ini DEFAULT_INSTALL_CFG_FILE=UnrealTournament.ini function add_iniKeyEx() { crudini --set $OUTPUT_DIR/System/$1 $2 __$3 $4 # Warning: ugly hack with sed to allow multiple key instances + to remove space around '=' sed -i "s/[[:space:]]*__$(echo $3 | sed -e 's/\([[\/.*]\|\]\)/\\&/g')[[:space:]]*=[[:space:]]*/$(echo $3 | sed -e 's/\([[\/.*]\|\]\)/\\&/g')=/g" $OUTPUT_DIR/System/$1 } function set_iniKeyEx() { crudini --set $OUTPUT_DIR/System/$1 $2 $3 $4 } # !!Warning!! section is not considered function del_iniKeyEx() { sed -i "/[[:space:]]*$(echo $3 | sed -e 's/\([[\/.*]\|\]\)/\\&/g')[[:space:]]*=[[:space:]]*$(echo $4 | sed -e 's/\([[\/.*]\|\]\)/\\&/g')/d" $OUTPUT_DIR/System/$1 } function add_iniKey() { add_iniKeyEx $CFG_FILE $1 $2 $3 } function set_iniKey() { set_iniKeyEx $CFG_FILE $1 $2 $3 } # !!Warning!! section is not considered function del_iniKey() { del_iniKeyEx $CFG_FILE $1 $2 $3 } function add_ServerPackage() { add_iniKey 'Engine.GameEngine' ServerPackages $1 add_iniKey 'XC_Engine.XC_GameEngine' ServerPackages $1 } function del_ServerPackage() { del_iniKey 'Engine.GameEngine' ServerPackages $1 del_iniKey 'XC_Engine.XC_GameEngine' ServerPackages $1 } function add_ServerActors() { add_iniKey 'Engine.GameEngine' ServerActors $1 add_iniKey 'XC_Engine.XC_GameEngine' ServerActors $1 } function del_ServerActors() { del_iniKey 'Engine.GameEngine' ServerActors $1 del_iniKey 'XC_Engine.XC_GameEngine' ServerActors $1 } function getmodprefix() { UFile=$(find $OUTPUT_DIR/System -type f -iname "niut*.u" -exec basename {} \;) BaseName="${UFile%.*}" echo "$BaseName" } function install() { rsync -a $SCRIPT_DIR/Help/ $OUTPUT_DIR/Help/ --exclude '.git' rsync -a $SCRIPT_DIR/System/ $OUTPUT_DIR/System/ --exclude '.git' echo install ok } function enable() { BaseName="$(getmodprefix)" add_ServerPackage $BaseName echo enable ok } function disable() { BaseName="$(getmodprefix)" del_ServerPackage $BaseName echo disable ok } function config() { case $# in 5) OptionKey=$4 OptionValue=$5 ;; 4) OptionKey=$3 OptionValue=$4 ;; *) echo "Not enough arguments" show_help exit 1 ;; esac NIUTUFile=$(find $OUTPUT_DIR/System -type f -iname "niut*.u" -exec basename {} \;) echo $NIUTUFile NIUTBaseName="${NIUTUFile%.*}" echo $NIUTBaseName case "$OptionKey" in *) set_iniKeyEx NIUT.ini "${NIUTBaseName^^}.NIUTMutator" $OptionKey $OptionValue ;; esac } function show_help() { echo echo "Usage: $0 { getmodprefix | install | enable | disable | config } [] [ ]" echo } function check_cfg_file_config() { if [ $# -eq 4 ] then echo "CFG_FILE is unset, setting it to $DEFAULT_CFG_FILE" CFG_FILE=$DEFAULT_CFG_FILE elif [ $# -eq 5 ] then echo "CFG_FILE is set to '$CFG_FILE'" else echo "Wrong number of arguments" show_help exit 9999 # die with error code 9999 fi if [ ! -f $OUTPUT_DIR/System/$CFG_FILE ] then echo "$OUTPUT_DIR/System/$CFG_FILE does not exist" show_help exit 9999 # die with error code 9999 fi } function check_cfg_file_gen() { if [ -z ${CFG_FILE} ] then echo "CFG_FILE is unset, setting it to $DEFAULT_CFG_FILE" CFG_FILE=$DEFAULT_CFG_FILE else echo "CFG_FILE is set to '$CFG_FILE'" fi if [ ! -f $OUTPUT_DIR/System/$CFG_FILE ] then echo "$OUTPUT_DIR/System/$CFG_FILE does not exist" show_help exit 9999 # die with error code 9999 fi } function check_cfg_file_gen2() { if [ -z ${CFG_FILE} ] then echo "CFG_FILE is unset, setting it to $DEFAULT_INSTALL_CFG_FILE" CFG_FILE=$DEFAULT_INSTALL_CFG_FILE else echo "CFG_FILE is set to '$CFG_FILE'" fi if [ ! -f $OUTPUT_DIR/System/$CFG_FILE ] then echo "$OUTPUT_DIR/System/$CFG_FILE does not exist" show_help exit 9999 # die with error code 9999 fi } function check_game_dir() { ### Check if a directory does not exist ### if [ -z $OUTPUT_DIR ] then echo "incorrect " show_help exit 9999 # die with error code 9999 fi } case "$1" in 'getmodprefix') check_game_dir getmodprefix ;; 'install') check_game_dir "$@" install "$@" ;; 'enable') check_game_dir "$@" check_cfg_file_gen2 "$@" disable "$@" enable "$@" ;; 'config') check_game_dir "$@" check_cfg_file_config "$@" config "$@" ;; 'disable') check_game_dir "$@" check_cfg_file_gen2 "$@" disable "$@" ;; *) show_help exit 1 ;; esac exit 0