mirror of
https://github.com/ValveSoftware/source-sdk-2013.git
synced 2025-04-22 14:33:35 +03:00
44 lines
1.4 KiB
Bash
Executable File
44 lines
1.4 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -euo pipefail
|
|
|
|
function run_in_sniper() {
|
|
script_file=$(basename -- "$script")
|
|
check_env=$(sha256sum -- "$script" | cut -d " " -f 1)
|
|
|
|
if [[ ! -f /run/.containerenv ]]; then
|
|
# Check if podman exists
|
|
if ! command -v podman &> /dev/null; then
|
|
echo "Error: podman is not installed. Exiting..."
|
|
exit 1
|
|
fi
|
|
|
|
# Let's say we run as /home/misyl/my_mod/src/myscript
|
|
# We want to mount /home/misyl/my_mod, and then launch
|
|
# src/myscript inside of that.
|
|
#
|
|
# The below achieves that.
|
|
mod_src_dir=$(pwd)
|
|
mod_src_dir_name=$(basename -- "$mod_src_dir")
|
|
mod_base_dir=$(dirname -- "$mod_src_dir")
|
|
|
|
image="registry.gitlab.steamos.cloud/steamrt/sniper/sdk:latest"
|
|
echo "Running script inside $image"
|
|
exec podman run \
|
|
--env "$check_env=$script_file" \
|
|
--env "CCACHE_DIR=${CCACHE_DIR:-$HOME/.ccache}" \
|
|
--userns=keep-id \
|
|
--rm -it \
|
|
--mount type=bind,\"source="${CCACHE_DIR:-$HOME/.ccache}"\",\"target="${CCACHE_DIR:-$HOME/.ccache}"\" \
|
|
--mount type=bind,\"source="$mod_base_dir"\",target=/my_mod/ \
|
|
"$image" \
|
|
/my_mod/"$mod_src_dir_name"/"$script_file" \
|
|
"$@"
|
|
fi
|
|
|
|
if [[ $(printenv -- "$check_env") != "$script_file" ]]; then
|
|
echo "Can't run in a nested container setup. Sorry! :("
|
|
exit 1
|
|
fi
|
|
}
|