#!/bin/bash

BASEDIR=$(dirname "$0")
FILTER_FILE="${BASEDIR}/filter.txt"

declare -A filter
declare -A pkgversion


if [ -f "${FILTER_FILE}" ]; then
	while IFS=';' read -r architecture  package version ; do
		filter["$architecture:$package"]=1
		pkgversion["$architecture:$package:$version"]=1
	done < "$FILTER_FILE"
else
	echo  "${FILTER_FILE} not exist"
fi

# 将 Bash 关联数组转换为一个格式化的字符串传递给 awk
filter_str=""
for key in "${!filter[@]}"; do
    filter_str+="$key=${filter[$key]} "
done

pkgversion_str=""
for key in "${!pkgversion[@]}"; do
    pkgversion_str+="$key=${pkgversion[$key]} "
done

for d in dists/*/pkg/* ; do
	## echo "${d##*/}"
	suffix="${d##*/}"
	echo "d=${d};suffix=${suffix}"
	mkdir -p main/binary-${suffix}
	dpkg-scanpackages --multiversion -a ${suffix} . |  awk  -v filter_str="$filter_str" -v pkgversion_str="$pkgversion_str"  '
BEGIN { 
	RS = ""; 
	FS = "\n";
	split(filter_str, arr1, " ");
        for (i in arr1) {
            split(arr1[i], kv, "=");
            filter[kv[1]] = kv[2];
        }

	split(pkgversion_str, arr2, " ");
        for (i in arr2) {
            split(arr2[i], kv, "=");
            pkgversion[kv[1]] = kv[2];
        }
}
/^Package:/ {

    package = "";
    version = "";
    architecture = "";

    for (i=1; i<=NF; i++) {
        if ($i ~ /^Package:/) {
            package = substr($i, 10);
        } else if ($i ~ /^Version:/) {
            version = substr($i, 10);
            break
        } else if ($i ~ /^Architecture: (.*)/) {
            arch = substr($i, 15)
            #if (arch == "'${suffix}'" ) {
            #    print $0 "\n"
            # }
            break
        }
    }
    filter1="'${suffix}':"package;
    if (filter1 in filter ) {
        n = split(version, arr, ":");
        if (n > 1){
            version=arr[2];
        }
        filter2="'${suffix}':"package":"version;
        # print "filter2["filter2"]"
        if (filter2 in pkgversion ) {
            print $0 "\n";
        }
        # print "The value of " variable " is " assoc_array[variable];
    } else {
        print $0 "\n";
    }
}
'  > main/binary-${suffix}/Packages
	gzip -c main/binary-${suffix}/Packages > main/binary-${suffix}/Packages.gz
done
cat <<EOF > Release
Origin: Debian
Label: Debian
Suite: stable
Version: 11.6
Codename: bullseye
Changelogs: https://metadata.ftp-master.debian.org/changelogs/@CHANGEPATH@_changelog
Date: Sat, 17 Dec 2022 10:14:37 UTC
Acquire-By-Hash: yes
No-Support-for-Architecture-all: Packages
Architectures: all amd64 arm64 armel armhf i386 mips64el mipsel ppc64el s390x
Components: main contrib non-free
Description: Debian 11.6 Released 17 December 2022
EOF



apt-ftparchive release . >> Release
gpg --armor --detach-sign --sign -o Release.gpg Release
gpg --clearsign -o InRelease Release
ln -s dists/*/pkg pkg

