[
    {
        "UpdateStageName": "Delete Active File",
        "UpdateSourcePlatform": "Linux",
        "UpdateSource": "Executable",
        "UpdateSourceData": "/bin/bash",
        "UpdateSourceArgs": "-c \"rm -f \\\"{{$FullBaseDir}}battleye/\\\"beserver*_active_*.cfg >/dev/null 2>&1\"",
        "SkipOnFailure": true
    },
    {
        "UpdateStageName": "Delete Active File",
        "UpdateSourcePlatform": "Windows",
        "UpdateSource": "Executable",
        "UpdateSourceData": "cmd.exe",
        "UpdateSourceArgs": "/C del /Q /F \"{{$FullBaseDir}}battleye\\\"beserver*_active_*.cfg > NUL 2>&1",
        "SkipOnFailure": true
    },
    {
        "UpdateStageName": "Copy Steamclient",
        "UpdateSourcePlatform": "Linux",
        "UpdateSource": "Executable",
        "UpdateSourceData": "/bin/bash",
        "UpdateSourceArgs": "-c \"mkdir -p arma3/linux ; \\cp -f arma3/linux64/steamclient.so arma3/linux/steamclient.so\"",
        "UpdateSourceConditionSetting": "ServerExecutable",
        "UpdateSourceConditionValue": "_x64",
        "SkipOnFailure": false
    },
    {
        "UpdateStageName": "Copy Steamclient",
        "UpdateSourcePlatform": "Linux",
        "UpdateSource": "Executable",
        "UpdateSourceData": "/bin/bash",
        "UpdateSourceArgs": "-c \"mkdir -p arma3/linux ; \\cp -f arma3/linux32/steamclient.so arma3/linux/steamclient.so\"",
        "UpdateSourceConditionSetting": "ServerExecutable",
        "UpdateSourceConditionValue": "",
        "SkipOnFailure": false
    },
    {
        "UpdateStageName": "Manage Bikeys",
        "UpdateSourcePlatform": "Linux",
        "UpdateSource": "Executable",
        "UpdateSourceData": "/bin/bash",
        "UpdateSourceArgs": "-c \"cd arma3/233780; find keys -name \\\"*.bikey\\\" ! -name \\\"a3.bikey\\\" -delete; IFS=\\\";\\\" read -ra subdirs_array <<< \\\"{{mod}};{{clientmod}}\\\"; for subdir in \\\"${subdirs_array[@]}\\\"; do [ -n \\\"$(shopt -s nullglob; echo $subdir/*.bikey)\\\" ] && \\cp \\\"$subdir/\\\"*.bikey keys/ >/dev/null 2>&1; [ -d \\\"$subdir/keys\\\" ] && \\cp \\\"$subdir/keys/\\\"*.bikey keys/ >/dev/null 2>&1; [ -d \\\"$subdir/key\\\" ] && \\cp \\\"$subdir/key/\\\"*.bikey keys/ >/dev/null 2>&1; done\"",
        "UpdateSourceConditionSetting": "ManageBikeys",
        "UpdateSourceConditionValue": "true",
        "SkipOnFailure": true
    },
    {
        "UpdateStageName": "Manage Bikeys",
        "UpdateSourcePlatform": "Windows",
        "UpdateSource": "Executable",
        "UpdateSourceData": "powershell.exe",
        "UpdateSourceArgs": "-NoProfile -Command \"$subdirs = \\\"{{mod}};{{clientmod}}\\\" -split ';'; Set-Location arma3\\233780; Remove-Item '.\\keys\\*.bikey' -Exclude 'a3.bikey' -Force -ErrorAction SilentlyContinue; foreach ($subdir in $subdirs) { Get-ChildItem -Path \\\"$subdir\\*.bikey\\\" -File -ErrorAction SilentlyContinue | ForEach-Object { Copy-Item $_ -Destination '.\\keys' }; if (Test-Path \\\"$subdir\\keys\\\") { Copy-Item \\\"$subdir\\keys\\*.bikey\\\" -Destination '.\\keys' -Force -ErrorAction SilentlyContinue }; if (Test-Path \\\"$subdir\\key\\\") { Copy-Item \\\"$subdir\\key\\*.bikey\\\" -Destination '.\\keys' -Force -ErrorAction SilentlyContinue }; }\"",
        "UpdateSourceConditionSetting": "ManageBikeys",
        "UpdateSourceConditionValue": "true",
        "SkipOnFailure": true
    },
    {
        "UpdateStageName": "Headless Client Script Download",
        "UpdateSourcePlatform": "Linux",
        "UpdateSource": "FetchURL",
        "UpdateSourceData": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/arma3runhc.sh",
        "UpdateSourceArgs": "runhc.sh",
        "UpdateSourceTarget": "{{$FullInstanceDir}}",
        "OverwriteExistingFiles": true,
        "UpdateSourceConditionSetting": "ServerExecutable",
        "UpdateSourceConditionValue": "_x64"
    },
    {
        "UpdateStageName": "Headless Client Script Download",
        "UpdateSourcePlatform": "Windows",
        "UpdateSource": "FetchURL",
        "UpdateSourceData": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/arma3runhc.ps1",
        "UpdateSourceArgs": "runhc.ps1",
        "UpdateSourceTarget": "{{$FullInstanceDir}}",
        "OverwriteExistingFiles": true,
        "UpdateSourceConditionSetting": "ServerExecutable",
        "UpdateSourceConditionValue": "_x64"
    },
    {
        "UpdateStageName": "Headless Client Script Download",
        "UpdateSourcePlatform": "Linux",
        "UpdateSource": "FetchURL",
        "UpdateSourceData": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/arma3runhc32.sh",
        "UpdateSourceArgs": "runhc.sh",
        "UpdateSourceTarget": "{{$FullInstanceDir}}",
        "OverwriteExistingFiles": true,
        "UpdateSourceConditionSetting": "ServerExecutable",
        "UpdateSourceConditionValue": ""
    },
    {
        "UpdateStageName": "Headless Client Script Download",
        "UpdateSourcePlatform": "Windows",
        "UpdateSource": "FetchURL",
        "UpdateSourceData": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/arma3runhc32.ps1",
        "UpdateSourceArgs": "runhc.ps1",
        "UpdateSourceTarget": "{{$FullInstanceDir}}",
        "OverwriteExistingFiles": true,
        "UpdateSourceConditionSetting": "ServerExecutable",
        "UpdateSourceConditionValue": ""
    },
    {
        "UpdateStageName": "Start Headless Clients",
        "UpdateSourcePlatform": "Linux",
        "UpdateSource": "Executable",
        "UpdateSourceData": "/bin/bash",
        "UpdateSourceArgs": "-c \"chmod +x ./runhc.sh; ./runhc.sh {{HeadlessClientsNum}} {{$ApplicationIPBinding}} {{$GamePort}} \\\"{{password}}\\\" \\\"{{mod}}\\\" \\\"{{hc_parfile}}\\\" {{HeadlessClientsStartLimit}} &\"",
        "RunInBackground": true,
        "SkipOnFailure": true
    },
    {
        "UpdateStageName": "Start Headless Clients",
        "UpdateSourcePlatform": "Windows",
        "UpdateSource": "Executable",
        "UpdateSourceData": "cmd.exe",
        "UpdateSourceArgs": "/C start powershell.exe -NoProfile -ExecutionPolicy Bypass -File \"runhc.ps1\" {{HeadlessClientsNum}} {{$ApplicationIPBinding}} {{$GamePort}} \"{{password}}\" \"{{mod}}\" \"{{hc_parfile}}\" {{HeadlessClientsStartLimit}}",
        "RunInBackground": true,
        "SkipOnFailure": true
    }
]