#!/bin/env fish
begin
    set -l dir (status dirname)
    set -l source "$dir/docker-compose.overrides.yml"
    source "$dir/../service.fish"

    function installSW -V dir -V source
        set -l file "$dir/docker-compose.base.yml"
        set -l pw (nix-shell -p keepassxc --run "keepassxc-cli generate --length 32")
        set -l dbPw (nix-shell -p keepassxc --run "keepassxc-cli generate --length 32")
        set -l envKey ".services.gotify.environment"
        set -l dbKey "$envKey.GOTIFY_DATABASE_CONNECTION"
        set -l db (yq "$dbKey" "$source" | sed "s/^\(.*:\).*\(@.*\)\$/\1$dbPw\2/")
        echo "db: $db"
        initializeServiceInstallation $argv
        sudo cp "$dir/docker-compose.base.yml" (getServiceRoot $argv)

        DB=$db yq "$dbKey = env(DB)" "$source" |
            PW=$pw yq "$envKey.GOTIFY_DEFAULTUSER_PASS = env(PW)" |
            PW=$dbPw yq ".services.db.environment.MARIADB_PASSWORD = env(PW)" |
            sudo tee (getServiceOverrides $argv) >/dev/null

        installDockerService $argv
    end

    function configureSW -V dir
        configureDockerService $argv
    end

    function getServiceServers
        printf "%s\0" "push" ""
    end

    function getServiceLocations
        argparse -i "name=" -- $argv
        printf "%s\0" "$_flag_name" /
    end

    function getExtraLocationSettings
        printf "%s\n" \
            '# Websocket' \
            "proxy_http_version 1.1;" \
            'proxy_set_header Upgrade $http_upgrade;' \
            'proxy_set_header Connection "upgrade";'
    end

    runInstaller --force $argv
end