#!/bin/bash
shopt -s extglob nullglob

export PKG_NAME=$1
shift

export PKG_BASE=$(realpath "$(dirname "$0")")
. "${PKG_BASE}/helper.sh"

if [[ -n $2 ]]; then
    PKG_VRSN=$2
fi

cat <<EOF
Package: ${PKG_NAME}
EOF

if [[ ${PKG_PRIO} == +* ]]; then
    cat <<EOF
Essential: yes
EOF
fi

if [[ $1 == status ]]; then
    cat <<EOF
Status: install ok installed
EOF
fi

cat <<EOF
Priority: ${PKG_PRIO#+}
Section: $(cat "${PKG_DATA}/_metadata/section")
EOF

if [[ $1 == status || $1 == available ]]; then
    cat <<EOF
Installed-Size: $(dpkg -f "${PKG_BASE}/debs/${PKG_NAME}_${PKG_VRSN}-${PKG_RVSN}_${PKG_ARCH}.deb" Installed-Size)
EOF
elif [[ $1 == control ]]; then
    cat <<EOF
Installed-Size: $(du -s "${PKG_DEST}" | cut -d $'\t' -f 1)
EOF
fi

cat <<EOF
Maintainer: $(cat "${PKG_DATA}/_metadata/maintainer")
Architecture: ${PKG_ARCH}
EOF

echo -n "Version: ${PKG_VRSN}"

if [[ $1 == status || $1 == available ]]; then
    echo "-${PKG_RVSN}"
else
    echo
fi

if [[ $1 == available ]]; then
    cat <<EOF
Size: $(find "${PKG_DEST}" -type f -exec cat {} \; | gzip -c | wc -c | cut -d $'\t' -f 1)
EOF
fi

if [[ -e ${PKG_DATA}/_metadata/predepends_ ]]; then
    echo "Pre-Depends: $(cat "${PKG_DATA}/_metadata/predepends_")"
else
    unset comma

    if [[ ${PKG_ZLIB} == lzma ]]; then
        if [[ ${comma+@} == @ ]]; then
            echo -n ","
        else
            echo -n "Pre-Depends:"
            comma=
        fi

        echo -n " dpkg (>= 1.14.25-8)"
    fi

    if [[ -e ${PKG_DATA}/_metadata/predepends ]]; then
        if [[ ${comma+@} == @ ]]; then
            echo -n ","
        else
            echo -n "Pre-Depends:"
            comma=
        fi

        echo -n " $(cat "${PKG_DATA}/_metadata/predepends")"
    fi

    if [[ ${comma+@} == @ ]]; then
        echo
    fi
fi

if [[ ! -e ${PKG_DATA}/_metadata/depends_ ]]; then
    unset comma
    for dep in "${PKG_DEPS[@]}"; do
        if [[ ${dep} == _* ]]; then
            continue
        fi

        if [[ ${comma+@} == @ ]]; then
            echo -n ","
        else
            echo -n "Depends:"
            comma=
        fi

        echo -n " $(basename "${dep}" .dep)"
        
        ver=${PKG_DATA}/_metadata/${dep%.dep}.ver.${PKG_ARCH}
        if [[ -e "${ver}" ]]; then
            echo -n " (>= $(cat "${ver}"))"
        fi
    done

    if [[ -e ${PKG_DATA}/_metadata/depends ]]; then
        if [[ ${comma+@} == @ ]]; then
            echo -n ","
        else
            echo -n "Depends:"
            comma=
        fi

        echo -n " $(cat "${PKG_DATA}/_metadata/depends")"
    fi

    if [[ ${comma+@} == @ ]]; then
        echo
    fi
elif [[ -s ${PKG_DATA}/_metadata/depends_ ]]; then
    echo "Depends: $(cat "${PKG_DATA}/_metadata/depends_")"
fi

if [[ -e ${PKG_DATA}/_metadata/replaces ]]; then
    cat <<EOF
Replaces: $(cat "${PKG_DATA}/_metadata/replaces")
EOF
fi

if [[ -e ${PKG_DATA}/_metadata/conflicts ]]; then
    cat <<EOF
Conflicts: $(cat "${PKG_DATA}/_metadata/conflicts")
EOF
fi

if [[ -e ${PKG_DATA}/_metadata/provides ]]; then
    cat <<EOF
Provides: $(cat "${PKG_DATA}/_metadata/provides")
EOF
fi

cat <<EOF
Description: $(head -n 1 "${PKG_DATA}/_metadata/description")
EOF

if [[ $(wc -l "${PKG_DATA}/_metadata/description" | cut -d ' ' -f 1) -gt 1 ]]; then
    cat <<EOF
$(tail -n +2 "${PKG_DATA}/_metadata/description" | fold -sw 72 | sed -e 's/^/ /')
EOF
fi

if [[ -e ${PKG_DATA}/_metadata/name ]]; then
    cat <<EOF
Name: $(cat "${PKG_DATA}/_metadata/name")
EOF
fi

if [[ -e ${PKG_DATA}/_metadata/author ]]; then
    cat <<EOF
Author: $(cat "${PKG_DATA}/_metadata/author")
EOF
fi

if [[ -e ${PKG_DATA}/_metadata/homepage ]]; then
    cat <<EOF
Homepage: $(cat "${PKG_DATA}/_metadata/homepage")
EOF
fi

if [[ -e ${PKG_DATA}/_metadata/depiction ]]; then
    cat <<EOF
Depiction: $(cat "${PKG_DATA}/_metadata/depiction")
EOF
fi

if [[ $1 == status || $1 == available ]]; then
    echo
fi