#!/bin/bash
# Copyright (c) Hisilicon Technologies Co., Ltd. 2021. All rights reserved.

set -e

function usage () {
    echo "USAGE:"
    echo "    -d driver part specific config"
    echo "    -i input defconfig files"
    echo "    -f common base config file"
    echo "    -o output config file"
}

function generate_new_config()
{
    cp "${BASED_DEFCONFIG_DIR}" "${OUTPUT_DEFCONFIG_FILE}"
    for config in ${PRODUCT_DEFCONFIG_DIR[@]}; do echo ${config} >> ${INPUT_DEFOCONFIG_FILE}; done
    while read line; do
        if [[ "${line}" =~ CONFIG_* ]] ; then
            echo "${line}" | sed "s/.*\(CONFIG_[^ ]\+\)[ =].*/\1/g" | \
                while read product_item; do
                if grep "${product_item}" "${OUTPUT_DEFCONFIG_FILE}" > /dev/null; then
                    sed -i "/\b${product_item}\b/d" "${OUTPUT_DEFCONFIG_FILE}"
                    echo "${line}" >> "${OUTPUT_DEFCONFIG_FILE}"
                else
                    echo "${line}" >> "${OUTPUT_DEFCONFIG_FILE}"
                fi
                done
        else
            echo "${line}" >> "${OUTPUT_DEFCONFIG_FILE}"
        fi
    done < "${INPUT_DEFOCONFIG_FILE}"
}

while getopts 'b:i:d:o:' OPT; do
    case "$OPT" in
        b)
            export BASED_DEFCONFIG_DIR="${OPTARG}";;
        i)
            export INPUT_DEFOCONFIG_FILE="${OPTARG}";;
        d)
            export PRODUCT_DEFCONFIG_DIR="${OPTARG}";;
        o)
            export OUTPUT_DEFCONFIG_FILE="${OPTARG}";;
        ?)
            usage
    esac
done

generate_new_config