#!/bin/bash
# -*- coding: utf-8; indent-tabs-mode: nil; tab-width: 4; c-basic-offset: 4; -*-
# vim:fileencodings=utf-8:expandtab:tabstop=4:shiftwidth=4:softtabstop=4

set -xe

OEMLIB=${OEMLIB:-'/usr/share/volatile'}

TASKDIR=
KEYWORD=

generate_pkg_list()
{
    local _task
    local _list=
    local _keyword=${KEYWORD:-"apt_install|apt_install_oobe|PREREQ|PREREQ_DKMS|PREREQ_WORKAROUND"}
    local _reserve="for|while"
    local _t

    _task="$(find "$1" -type f)"
    for t in $_task; do
        _t="$_t $t"
    done
    _task="$_t"

    for f in $_task; do
        OLDIFS=$IFS
        IFS=$'\n'
        for line in $(grep -Eh "($_keyword)" $f | sed -r -e "/#/d" -e "/($_reserve)/d"); do
            if echo "$line" | grep -q '='; then
                eval "$line"
                _list="$_list $(eval echo \$"$(echo "$line" | grep -oE "($_keyword)")")"
            else
                _list="$_list $(eval echo "$line" | sed -r "s/$_keyword//")"
            fi
        done
        IFS=$OLDIFS
    done
    echo "$_list"
}

while [ "$1" ]; do
    case "$1" in
        -k|--keyword)
            shift
	    [ -z $KEYWORD ] && \
                KEYWORD=$1 || \
                KEYWORD="$KEYWORD|$1"
        ;;
        --debug)
            set -x
        ;;
        *)
            [ -n "$1" ] && \
                TASKDIR=$1
        ;;
    esac
    shift
done

list=
for task in ${TASKDIR:-ubiquity-starttask ubiquity-successtask task}
do
    taskdir=$OEMLIB/${task##*/}
    list="$list $(generate_pkg_list "$taskdir")"
done
echo "$list"
