[
    {
        "UpdateStageName": "Create Installation Directory",
        "UpdateSourcePlatform": "All",
        "UpdateSource": "CreateDirectory",
        "UpdateSourceArgs": "{{$FullBaseDir}}mariadb"
    },
    {
        "UpdateStageName": "Create Data Directory",
        "UpdateSourcePlatform": "All",
        "UpdateSource": "CreateDirectory",
        "UpdateSourceArgs": "{{$FullBaseDir}}data"
    },
    {
        "UpdateStageName": "Create Log Directory",
        "UpdateSourcePlatform": "All",
        "UpdateSource": "CreateDirectory",
        "UpdateSourceArgs": "{{$FullBaseDir}}log/mariadb"
    },
    {
        "UpdateStageName": "Create Run Directory",
        "UpdateSourcePlatform": "Linux",
        "UpdateSource": "CreateDirectory",
        "UpdateSourceArgs": "{{$FullBaseDir}}run/mariadbd"
    },
    {
        "UpdateStageName": "Download MariaDB",
        "UpdateSourcePlatform": "Linux",
        "UpdateSource": "Executable",
        "UpdateSourceData": "/bin/bash",
        "UpdateSourceArgs": "-c \"MariaDBRelease=\\\"{{ServerVersion}}\\\"; MariaDBVersion=\\\"{{CustomServerVersion}}\\\"; cd mariadb && if [[ -x mariadb/bin/mariadbd ]]; then InstalledVersion=$(mariadb/bin/mariadbd -V | sed \\\"s/.*Ver \\([0-9][0-9]*\\.[0-9][0-9]*\\.[0-9][0-9]*\\)-MariaDB.*/\\1/\\\"); else InstalledVersion=\\\"\\\"; fi; [[ -z \\\"$MariaDBVersion\\\" ]] && MariaDBVersion=$(wget -qO- \\\"https://downloads.mariadb.org/rest-api/mariadb/$MariaDBRelease/latest\\\" | jq -r \\\".releases | keys_unsorted[0]\\\"); if [[ ! \\\"$MariaDBVersion\\\" =~ ^(10|11|12|13)\\.[0-9]+\\.[0-9]+$ ]]; then echo \\\"Invalid MariaDB version format specified\\\" && exit 1; elif [[ \\\"$InstalledVersion\\\" == \\\"$MariaDBVersion\\\" ]]; then echo \\\"MariaDB v$MariaDBVersion already installed. Skipping\\\" && exit 0; else [[ -f mariadb.tar.gz ]] && rm -f mariadb.tar.gz >/dev/null 2>&1; wget -qO mariadb.tar.gz http://downloads.mariadb.org/rest-api/mariadb/$MariaDBVersion/mariadb-$MariaDBVersion-linux-systemd-x86_64.tar.gz || { echo \\\"Download failed from the MariaDB CDN. This is a fault with the CDN, not AMP. Aborting\\\"; exit 1; }; { [[ -d mariadb/lib/plugin ]] && mv mariadb/lib/plugin plugin-bak || true; } && mkdir -p mariadb && rm -rf mariadb/* >/dev/null 2>&1 && mkdir -p mariadb/lib && { [[ -d plugin-bak ]] && mv plugin-bak mariadb/lib/plugin || true; } && tar -xzf mariadb.tar.gz -C mariadb --strip-components=1 >/dev/null 2>&1 && rm -f mariadb.tar.gz >/dev/null 2>&1 && echo \\\"MariaDB v$MariaDBVersion downloaded\\\"; fi\"",
        "SkipOnFailure": false
    },
    {
        "UpdateStageName": "Download MariaDB",
        "UpdateSourcePlatform": "Windows",
        "UpdateSource": "Executable",
        "UpdateSourceData": "powershell.exe",
        "UpdateSourceArgs": "-NoProfile -Command \"$ProgressPreference='SilentlyContinue'; [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $MariaDBRelease='{{ServerVersion}}'; $MariaDBVersion='{{CustomServerVersion}}'; Set-Location -Path 'mariadb'; if (Test-Path 'mariadb/bin/mariadbd.exe') { $match = & mariadb/bin/mariadbd.exe -V | Select-String -Pattern 'Ver (\\d+\\.\\d+\\.\\d+)-MariaDB'; $InstalledVersion = $match.Matches[0].Groups[1].Value } else { $InstalledVersion = '' }; if ( [string]::IsNullOrWhiteSpace($MariaDBVersion) ) { $MariaDBVersion = (Invoke-RestMethod -UseBasicParsing -Uri \\\"https://downloads.mariadb.org/rest-api/mariadb/$MariaDBRelease/latest\\\").releases.PSObject.Properties.Name | Select-Object -First 1 }; if ( $MariaDBVersion -notmatch '^(10|11|12|13)\\.\\d+\\.\\d+$' ) { Write-Output 'Invalid MariaDB version format specified'; exit 1 } elseif ( $InstalledVersion -eq $MariaDBVersion ) { Write-Output \\\"MariaDB v$MariaDBVersion already installed. Skipping\\\"; exit 0 } else { if ( Test-Path mariadb.zip ) { Remove-Item mariadb.zip -Force -ErrorAction SilentlyContinue *> $null }; try { Invoke-WebRequest -UseBasicParsing -Uri http://downloads.mariadb.org/rest-api/mariadb/$MariaDBVersion/mariadb-$MariaDBVersion-winx64.zip -OutFile mariadb.zip -ErrorAction Stop } catch { Write-Output \\\"Download failed from the MariaDB CDN. This is a fault with the CDN, not AMP. Aborting\\\"; exit 1; }; Expand-Archive -Path \\\"mariadb.zip\\\" -DestinationPath \\\".\\\" -Force *> $null; if ( Test-Path mariadb.zip ) { Remove-Item mariadb.zip -Force -ErrorAction SilentlyContinue *> $null }; if (Test-Path \\\"mariadb-*\\\") { if ( Test-Path 'mariadb/lib/plugin' ) { Move-Item 'mariadb/lib/plugin' 'plugin-bak' -Force *> $null }; Remove-Item mariadb/* -Recurse -Force -ErrorAction SilentlyContinue *> $null; New-Item 'mariadb/lib' -ItemType Directory -Force | Out-Null; Move-Item 'plugin-bak' 'mariadb/lib/plugin' -Force *> $null; $source = Get-ChildItem -Directory -Filter 'mariadb-*' | Select-Object -First 1; if ($source) { robocopy $source.FullName 'mariadb' /E /MOVE /NFL /NDL /NJH /NJS /NP *> $null; if ($LASTEXITCODE -gt 7) { exit $LASTEXITCODE } }; Write-Output \\\"MariaDB v$MariaDBVersion downloaded\\\" } }\"",
        "SkipOnFailure": false
    },
    {
        "UpdateStageName": "Initialize MariaDB",
        "UpdateSourcePlatform": "Linux",
        "UpdateSource": "Executable",
        "UpdateSourceData": "/bin/bash",
        "UpdateSourceArgs": "-c \"cd mariadb && { [[ -f \\\"{{$FullBaseDir}}data/mysql/user.frm\\\" ]] || { mariadb/scripts/mariadb-install-db --no-defaults --port={{$ServerPort}} --basedir=\\\"{{$FullBaseDir}}mariadb\\\" --datadir=\\\"{{$FullBaseDir}}data\\\" >/dev/null && echo -e \\\"\\nDefault database tables created\\nSuper-users amp@localhost and root@localhost created with unix socket authentication\\nUse AMP's console to manage the server via the amp@localhost user\\n\\\"; }; }\"",
        "SkipOnFailure": false
    },
    {
        "UpdateStageName": "Initialize MariaDB",
        "UpdateSourcePlatform": "Windows",
        "UpdateSource": "Executable",
        "UpdateSourceData": "powershell.exe",
        "UpdateSourceArgs": "-NoProfile -Command \"Set-Location -Path 'mariadb'; if (Test-Path '{{$FullBaseDir}}data/mysql/user.frm') { exit 0 } else { & mariadb/bin/mariadb-install-db.exe --port={{$ServerPort}} --datadir=\\\"{{$FullBaseDir}}data\\\" 1> $null; if ($LASTEXITCODE -eq 0) { Write-Output \\\"`nDefault database tables created`nSuper-users root@localhost, root@127.0.0.1 and (if applicable) root@::1 created with secure password authentication`nUse AMP's console to manage the server via the root@localhost user`n\\\" } }\"",
        "SkipOnFailure": false
    },
    {
        "UpdateStageName": "Create my.cnf",
        "UpdateSourcePlatform": "All",
        "UpdateSource": "CreateFile",
        "UpdateSourceData": "",
        "UpdateSourceArgs": "{{$FullBaseDir}}my.cnf",
        "OverwriteExistingFiles": false
    }
]
