191 lines
4.8 KiB
Bash
Executable File
191 lines
4.8 KiB
Bash
Executable File
#!/bin/bash
|
|
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
|
|
OUTPUT_DIR="$2"
|
|
DEFAULT_CFG_FILE=NIUT.ini
|
|
CFG_FILE="${3:-$DEFAULT_CFG_FILE}"
|
|
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_iniKeyEx $DEFAULT_INSTALL_CFG_FILE 'Engine.GameEngine' ServerPackages $1
|
|
add_iniKeyEx $DEFAULT_INSTALL_CFG_FILE 'XC_Engine.XC_GameEngine' ServerPackages $1
|
|
}
|
|
function del_ServerPackage() {
|
|
del_iniKeyEx $DEFAULT_INSTALL_CFG_FILE 'Engine.GameEngine' ServerPackages $1
|
|
del_iniKeyEx $DEFAULT_INSTALL_CFG_FILE 'XC_Engine.XC_GameEngine' ServerPackages $1
|
|
}
|
|
function add_ServerActors() {
|
|
add_iniKeyEx $DEFAULT_INSTALL_CFG_FILE 'Engine.GameEngine' ServerActors $1
|
|
add_iniKeyEx $DEFAULT_INSTALL_CFG_FILE 'XC_Engine.XC_GameEngine' ServerActors $1
|
|
}
|
|
function del_ServerActors() {
|
|
del_iniKeyEx $DEFAULT_INSTALL_CFG_FILE 'Engine.GameEngine' ServerActors $1
|
|
del_iniKeyEx $DEFAULT_INSTALL_CFG_FILE '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 } <UT99_INSTALL_DIR> [<UT99_CONFIG_FILE>] [<CONFIG_KEY> <CONFIG_VALUE>]"
|
|
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 <UT99_INSTALL_DIR>"
|
|
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
|