#!/usr/bin/env bash

set -o errexit
set -o nounset
set -o pipefail

ROOT="${ROOT:-$(dirname "${BASH_SOURCE}")/..}"
DEFAULT_REGEX='^([a-z]+-)?[a-z]*[0-9]+(\.[0-9]+){0,2}(-.+)?(__.+)?$|^[a-z]+$'
SKOPEO="${SKOPEO:-skopeo}"
ROOT=$(realpath ${ROOT})

function helper::replace_domain() {
    local domain="${1}"
    local file="${2:-domain.txt}"
    for line in $(cat ${file}); do
        line="${line/ /}"
        if [[ "${line}" == "" ]]; then
            continue
        fi

        key="${line%=*}"
        val="${line##*=}"
        if [[ "${key}" == "" || "${val}" == "" ]]; then
            continue
        fi

        if [[ "${domain}" =~ ^${key} ]]; then
            echo "${domain}" | sed -e "s#^${key}#${val}#"
            return 0
        fi
    done
    echo "Error: domain ${domain} not found"
    return 1
}

function helper::get_source() {
    local source="${1:-mirror.txt}"
    cat "${source}" | tr -d ' ' | grep -v -E '^$' | grep -v -E '^#'
}

function helper::exclude() {
    local exclude="${1:-exclude.txt}"
    local tmp=$(cat "${exclude}" | tr -d ' ' | grep -v -E '^$' | grep -v -E '^#' | tr '\n' '|')
    echo "${tmp%|}"
}