#!/bin/bash

set -euo pipefail
SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
cd "${SCRIPT_DIR}"

NEW_RELEASE="${1:-}"
if ! [[ "${NEW_RELEASE}" =~ [0-9]+\.[0-9]+\.x ]]; then
    echo "Usage: $0 0.3.x" >&2
    exit 1
fi

function copy_pacman_database()
{
    local DB_PATH="${1}"
    local DB_NAME="$(basename "${DB_PATH%%.*}" | tr '-' '_')"
    local LISTING=(
        $(xz -d -c "${DB_PATH}" |\
          tar t |\
          grep '/desc$' |\
          xargs dirname)
    )
    for ENTRY in "${LISTING[@]}"; do
        cp -va "${ENTRY}"*.pkg.tar.* "release/${NEW_RELEASE}/"
    done

    local DB_BASENAME="$(basename "${DB_PATH%%.*}")"
    for EXT in db db.tar.xz files files.tar.xz; do
        cp -va "${DB_BASENAME}.${EXT}" "release/${NEW_RELEASE}/${DB_BASENAME}-release-${NEW_RELEASE%.x}.${EXT}"
    done
}

mkdir -p "release/${NEW_RELEASE}"
copy_pacman_database deckard-arch-hotfixes.db.tar.xz "release/${NEW_RELEASE}"
