1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- {% macro setup_script(values, tpl) -%}
- #!/bin/bash
- {%- set cfg = "%s/Pal/Saved/Config/LinuxServer" | format(values.consts.server_path) %}
- {%- set cfg_file = "%s/PalWorldSettings.ini" | format(cfg) %}
- if [ ! -d {{ cfg }} ]; then
- echo "Config directory not found, creating..."
- mkdir -p {{ cfg }}
- fi
- if [ ! -f {{ cfg_file }} ]; then
- echo "Config file not found, fetching..."
- # -- Fetch the config file if it doesn't exist, just like the container does
- wget -qO {{ cfg_file }} https://github.com/ich777/docker-steamcmd-server/raw/palworld/config/PalWorldSettings.ini || { echo "Failed to fetch config file"; exit 1; }
- fi
- set_ini_value() {
- local key="${1}"
- local value="${2}"
- local quote="${3:-false}"
- local print="${4:-true}"
- # -- Escape special characters for sed
- escaped_value=$(printf '%s\n' "$value" | sed 's/[&/\]/\\&/g')
- if [ "$quote" = true ]; then
- escaped_value="\"${escaped_value}\""
- fi
- echo -n "Setting ${key}..."
- # Check if the key already exists
- if grep -q "^OptionSettings=\(.*${key}=.*\)$" "{{ cfg_file }}"; then
- # Key exists, update its value using the original logic
- sed -i "s|\(${key}=\)[^,]*|\1${escaped_value}|g" "{{ cfg_file }}" || { echo "Failed to update ${key}"; exit 1; }
- else
- # Key doesn't exist, append it right after "OptionSettings=("
- sed -i "s|^\(OptionSettings=(\)|\1${key}=${escaped_value}, |" "{{ cfg_file }}" || { echo "Failed to append ${key}"; exit 1; }
- fi
- if [ "$print" = true ]; then
- echo " Set to $(grep -Po "(?<=${key}=)[^,]*" "{{ cfg_file }}")" || { echo "Failed to print ${key}"; exit 1; }
- else
- echo " Set, but value is marked as private"
- fi
- }
- set_ini_value "RCONEnabled" True
- set_ini_value "RCONPort" {{ values.network.rcon_port.port_number }}
- set_ini_value "PublicPort" {{ values.network.server_port.port_number }}
- set_ini_value "ServerName" "{{ values.palworld.server.name }}" true
- set_ini_value "ServerDescription" "{{ values.palworld.server.description }}" true
- set_ini_value "ServerPassword" '{{ values.palworld.server.password }}' true false
- set_ini_value "AdminPassword" '{{ values.palworld.admin_password }}' true false
- set_ini_value "AllowConnectPlatform" '{{ values.palworld.allow_platform }}' false
- echo "Setting user defined ini keys..."
- {%- for item in values.palworld.ini_keys %}
- {%- set key = item.key %}
- {%- set value = item.value|string %}
- {%- if tpl.funcs.is_number(value) %}
- echo "Value of [{{ key }}] is a number, setting without quotes"
- set_ini_value "{{ key }}" {{ value }}
- {%- elif tpl.funcs.is_boolean(value) %}
- echo "Value of [{{ key }}] is a boolean, setting without quotes"
- set_ini_value "{{ key }}" {{ tpl.funcs.camel_case(value) }}
- {%- else %}
- echo "Value of [{{ key }}] is a string, setting with quotes"
- set_ini_value "{{ key }}" "{{ value }}" true
- {%- endif %}
- {%- endfor %}
- {%- endmacro %}
|