#!/usr/bin/env bash

# Inspired on https://github.com/adriancooney/Taskfile
#
# Install an alias, to be able to simply execute `run`
# echo 'alias run=./scripts/run' >> ~/.aliases
#
# Define Docker Compose command prefix...
set -e

if [ $? == 0 ]; then
    DOCKER_COMPOSE="docker compose"
else
    DOCKER_COMPOSE="docker-compose"
fi

function help {
    echo "$0 <task> <args>"
    echo "Tasks:"
    compgen -A function | cat -n
}

function sync:v3 {
    if [ -z "$1" ]; then
        echo -e "Please provide a version.\n\nExample: run sync:v3 3.12.32"
        exit 1
    fi
    skopeo copy --all docker://ghcr.io/coollabsio/coolify:$1 docker://coollabsio/coolify:$1
}
function sync:bunny {
    php artisan sync:bunny --env=secrets
}

function queue {
    bash spin exec -u webuser coolify php artisan queue:listen
}

function horizon {
    bash spin exec -u webuser coolify php artisan horizon -vvv  
}

function schedule {
    bash spin exec -u webuser coolify php artisan schedule:work
}

function schedule:run {
    bash spin exec -u webuser coolify php artisan schedule:run
}

function db:reset {
    bash spin exec -u webuser coolify php artisan migrate:fresh --seed
}

function db {
    bash spin exec -u webuser coolify php artisan db
}

function db:migrate {
    bash spin exec -u webuser coolify php artisan migrate
}

function db:reset-prod {
    bash spin exec -u webuser coolify php artisan migrate:fresh --force --seed --seeder=ProductionSeeder ||
        php artisan migrate:fresh --force --seed --seeder=ProductionSeeder
}

function mfs {
    db:reset
}

function coolify {
    bash spin exec -u webuser coolify bash
}

function coolify:root {
    bash spin exec coolify bash
}
function coolify:proxy {
   docker exec -ti coolify-proxy sh
}

function redis {
    docker exec -ti coolify-redis redis-cli
}

function vite {
    bash spin exec vite bash
}

function tinker {
    bash spin exec -u webuser coolify php artisan tinker
}


function build:builder {
    act -W .github/workflows/coolify-builder.yml --secret-file .env.secrets
}
function default {
    help
}

TIMEFORMAT="Task completed in %3lR"
time "${@:-default}"
