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

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

        URL=$dbUrl yq "$dbKey = env(URL)" "$source" |
            PW=$pw yq ".services.db.environment.POSTGRES_PASSWORD = env(PW)" |
            sudo tee (getServiceOverrides $argv) >/dev/null

        installDockerService $argv
    end

    function configureSW -V dir
        configureDockerService $argv
    end

    function getServiceServers -V domain
        printf "%s\0" $domain
    end

    function getServiceLocations -V service
        printf "%s\0" $service /
    end

    function getBackupArgs
        printf "%s\n" --hidden --no-ignore . --exclude "docker-compose.yml" (getServiceRoot $argv)
    end

    runInstaller --force $argv
end