[
    {
        "UpdateStageName": "TeamSpeak 6 Server Download",
        "UpdateSourcePlatform": "Linux",
        "UpdateSource": "Executable",
        "UpdateSourceData": "/bin/bash",
        "UpdateSourceArgs": "-c \"ServerVersion=\\\"{{ServerVersion}}\\\"; cd ts6 && if [[ -x server/tsserver ]]; then InstalledVersion=$(server/tsserver --version); InstalledVersion=\\\"${InstalledVersion%% *}\\\"; else InstalledVersion=\\\"\\\"; fi; [[ -z \\\"$ServerVersion\\\" ]] && ServerVersion=$(wget -qO- https://api.github.com/repos/teamspeak/teamspeak6-server/releases/latest | jq -r .tag_name); if [[ ! \\\"$ServerVersion\\\" =~ ^v6\\.[0-9]+\\.[0-9]+(-beta[0-9]*(\\.[0-9]*)?)?$ ]]; then echo \\\"Invalid TeamSpeak 6 version format specified\\\" && exit 1; elif [[ \\\"v${InstalledVersion#v}\\\" == \\\"$ServerVersion\\\" ]]; then echo \\\"TeamSpeak 6 $ServerVersion already installed. Skipping\\\" && exit 0; else if [[ $ServerVersion =~ beta([0-9]+) ]] && (( ${BASH_REMATCH[1]} < 9 )); then TagVersion=\\\"${ServerVersion/-//}\\\"; FileName=\\\"teamspeak-server_linux_amd64-${ServerVersion}.tar.bz2\\\"; Archive=\\\"teamspeak6.tar.bz2\\\"; StripComponents=1; else TagVersion=\\\"$ServerVersion\\\"; FileName=\\\"teamspeak6-server-linux-amd64.tar.xz\\\"; Archive=\\\"teamspeak6.tar.xz\\\"; fi; [[ -f $Archive ]] && rm -f $Archive >/dev/null 2>&1; wget -qO $Archive https://github.com/teamspeak/teamspeak6-server/releases/download/$TagVersion/$FileName || { echo \\\"Download failed from GitHub. Aborting\\\"; exit 1; }; tar -xf $Archive -C server $([[ -n \\\"$StripComponents\\\" ]] && echo \\\"--strip-components=1\\\") >/dev/null 2>&1 && rm -f $Archive >/dev/null 2>&1 && echo \\\"TeamSpeak 6 $ServerVersion downloaded\\\"; fi\"",
        "SkipOnFailure": false
    },
    {
        "UpdateStageName": "TeamSpeak 6 Server Download",
        "UpdateSourcePlatform": "Windows",
        "UpdateSource": "Executable",
        "UpdateSourceData": "powershell.exe",
        "UpdateSourceArgs": "-NoProfile -Command \"$ProgressPreference='SilentlyContinue'; [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $ServerVersion='{{ServerVersion}}'; Set-Location -Path 'ts6'; if ( [string]::IsNullOrWhiteSpace($ServerVersion) ) { $ServerVersion = (Invoke-RestMethod -UseBasicParsing -Uri \\\"https://api.github.com/repos/teamspeak/teamspeak6-server/releases/latest\\\").tag_name }; if ( $ServerVersion -notmatch '^v6\\.\\d+\\.\\d+(-beta\\d*(\\.\\d*)?)?$' ) { Write-Output 'Invalid TeamSpeak 6 version format specified'; exit 1 } else { if ( $ServerVersion -match 'beta(\\d+)' -and [int]$Matches[1] -lt 9 ) { $IsOldVersion = $true } else { $IsOldVersion = $false }; if ( $IsOldVersion ) { $TagVersion = $ServerVersion -replace '-', '/'; $FileName = \\\"teamspeak-server_win64-${ServerVersion}.zip\\\" } else { $TagVersion = $ServerVersion; $FileName = \\\"teamspeak6-server-win-x64.zip\\\" }; if ( Test-Path teamspeak6.zip ) { Remove-Item teamspeak6.zip -Force -ErrorAction SilentlyContinue *> $null }; try { Invoke-WebRequest -UseBasicParsing -Uri https://github.com/teamspeak/teamspeak6-server/releases/download/$TagVersion/$FileName -OutFile teamspeak6.zip -ErrorAction Stop } catch { Write-Output \\\"Download failed from GitHub. Aborting\\\"; exit 1; }; if ( $IsOldVersion ) { Expand-Archive -Path \\\"teamspeak6.zip\\\" -DestinationPath \\\".\\\" -Force *> $null; if ( Test-Path teamspeak6.zip ) { Remove-Item teamspeak6.zip -Force -ErrorAction SilentlyContinue *> $null }; if ( Test-Path 'teamspeak-server_win64' ) { robocopy 'teamspeak-server_win64' 'server' /E /MOVE /NFL /NDL /NJH /NJS /NP *> $null; if ($LASTEXITCODE -gt 7) { exit $LASTEXITCODE } else { if ( Test-Path 'teamspeak-server_win64' ) { Remove-Item 'teamspeak-server_win64' -Recurse -Force -ErrorAction SilentlyContinue *> $null } } } } else { Expand-Archive -Path \\\"teamspeak6.zip\\\" -DestinationPath \\\"server\\\" -Force *> $null; if ( Test-Path teamspeak6.zip ) { Remove-Item teamspeak6.zip -Force -ErrorAction SilentlyContinue *> $null } }; Write-Output \\\"TeamSpeak 6 $ServerVersion downloaded\\\" }\"",
        "SkipOnFailure": false
    },
    {
        "UpdateStageName": "Create tsserver.yaml File",
        "UpdateSourcePlatform": "All",
        "UpdateSource": "CreateFile",
        "UpdateSourceArgs": "{{$FullBaseDir}}tsserver.yaml",
        "OverwriteExistingFiles": false
    }
]