mirror of
https://github.com/nillerusr/source-engine.git
synced 2025-02-10 14:14:16 +00:00
106 lines
2.3 KiB
Nix
106 lines
2.3 KiB
Nix
![]() |
{ writeShellScriptBin
|
||
|
, getopt
|
||
|
, xorg
|
||
|
, hl2-unwrapped
|
||
|
}:
|
||
|
|
||
|
writeShellScriptBin "hl2-wrapper" ''
|
||
|
config_path=$HOME/.config/hl2/config
|
||
|
default_resource_path=$HOME/hl2
|
||
|
|
||
|
longoptions="resource-path:,impermanent,help"
|
||
|
shortoptions="r:h"
|
||
|
|
||
|
impermanent=false
|
||
|
|
||
|
usage() {
|
||
|
echo "hl2(-wrapper) usage:"
|
||
|
echo "Define resource_path variable in $config_path, with the argument shown below or put resource files in $default_resource_path."
|
||
|
grep ' \+-.*) ' $0 | sed 's/#//' | sed -r 's/([a-z])\)/\1/'
|
||
|
exit 0
|
||
|
}
|
||
|
|
||
|
# Just in case
|
||
|
save_newly_created_files() {
|
||
|
newly_created_files=$(cd $tmp_dir && find . -type f | cut -c 2-)
|
||
|
|
||
|
echo "$newly_created_files" | while read file;
|
||
|
do
|
||
|
cp $tmp_dir$file $resource_path$file
|
||
|
done
|
||
|
}
|
||
|
|
||
|
cleanup() {
|
||
|
if ! $impermanent; then
|
||
|
save_newly_created_files
|
||
|
fi
|
||
|
|
||
|
rm -rf $tmp_dir
|
||
|
}
|
||
|
|
||
|
if [[ -e $config_path ]]
|
||
|
then
|
||
|
source $config_path
|
||
|
fi
|
||
|
|
||
|
parsed=$(${getopt}/bin/getopt -l $longoptions -o $shortoptions -a -- "$@")
|
||
|
|
||
|
eval set -- "$parsed"
|
||
|
|
||
|
while true; do
|
||
|
case "$1" in
|
||
|
-r | --resource-path) # Defines resources folder path
|
||
|
resource_path="$2"
|
||
|
shift 2
|
||
|
;;
|
||
|
--impermanent) # Don't save newly created files that are not in symlimked folders (you probably don't want to use this)
|
||
|
impermanent=true
|
||
|
shift 1
|
||
|
;;
|
||
|
-h | --help) # Get help
|
||
|
usage
|
||
|
exit 0
|
||
|
;;
|
||
|
--)
|
||
|
shift
|
||
|
break
|
||
|
;;
|
||
|
*)
|
||
|
echo "Wrong argument: $1"
|
||
|
usage
|
||
|
exit 1
|
||
|
;;
|
||
|
esac
|
||
|
done
|
||
|
|
||
|
if [[ ! $resource_path ]]
|
||
|
then
|
||
|
echo "The path to Half-Life 2 resource folder is not set either in a config file or with an argument. Looking for resource files in the standard directory (~/hl2)."
|
||
|
resource_path=$default_resource_path
|
||
|
fi
|
||
|
|
||
|
if [[ ! -d $resource_path ]]
|
||
|
then
|
||
|
echo "$resource_path doesn't exist. Set a proper resource path."
|
||
|
exit 1
|
||
|
elif [[ ! -d $resource_path/hl2 || ! -d $resource_path/platform ]]
|
||
|
then
|
||
|
echo "$resource_path doesn't contain 'hl2' and/or 'platform' folder. Set a proper resource path."
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
tmp_dir=$(mktemp -d)
|
||
|
echo $tmp_dir
|
||
|
|
||
|
mkdir $tmp_dir/{hl2,platform}
|
||
|
ln -s $resource_path/hl2/* $tmp_dir/hl2/
|
||
|
ln -s $resource_path/platform/* $tmp_dir/platform/
|
||
|
rm -rf $tmp_dir/hl2/bin
|
||
|
|
||
|
${xorg.lndir}/bin/lndir "${hl2-unwrapped}" $tmp_dir
|
||
|
|
||
|
trap cleanup EXIT
|
||
|
|
||
|
( cd $tmp_dir ; ./hl2_launcher )
|
||
|
''
|