#!/bin/bash

set -eu

function urldecode { : "${*//+/ }"; echo -e "${_//%/\\x}"; }

function version_from_filename {
    echo "$1" | sed -r 's#[a-z]+-([0-9_.+]+)-.*#\1#'
}

function h5ai_query {
    component="$1"
    filename=$(curl -s -S -L -d "action=get&items%5Bhref%5D=%2Fcommunity%2F$component%3A%2F&items%5Bwhat%5D=1" -H \
                "Accept: application/json" https://download.kopano.io/community/ | jq '.items[].href' | \
                grep 'Debian_9.0-all\|Debian_9.0-amd64' | sed 's#"##g' | sed "s#/community/$component:/##")

    if [ -z "${filename// }" ]; then
        echo "unknown component"
        exit 1
    fi

    filename=$(urldecode "$filename")
    echo "$filename"
}

function dl_and_package_community {
    # take component as first argument and fallback to core if none given
    component=${1:-core}

    # query community server by h5ai API
    filename=$(h5ai_query "$component")

    # download & extract packages
    curl -s -S -L -o "$filename" https://download.kopano.io/community/"$component":/"${filename}"
    tar xf "$filename"

    # save buildversion
    currentVersion=$(version_from_filename "$filename")
    echo "$component-$currentVersion" >> /kopano/buildversion

    # save disk space
    rm "$filename"

    mv "${filename%.tar.gz}" "$component"

    # prepare directory to be apt source
    cd "$component"
    apt-ftparchive packages . | gzip -9c > Packages.gz
    cd ".."
}