# Created by Tobias Powalowski <tpowa@archlinux.org>

run_hook ()
{
    if ! [ "$MDADMRUN" = "1" ]; then
        input="$(cat /proc/cmdline)"
        mdconfig="/etc/mdadm.conf"
        # for partitionable raid, we need to load md_mod first!
        modprobe md_mod 2>/dev/null
        # If md is specified on commandline, create config file from those parameters.
        if [ "$(echo $input | grep "md=")" ]; then
            #Create initial mdadm.conf
            # scan all devices in /proc/partitions
            echo DEVICE partitions > $mdconfig
            for i in $input; do 
                case $i in
                    # raid 
                    md=[0-9]*,/*)
                        device="$(echo "$i" | sed -e 's|,/.*||g' -e 's|=||g')"
                        array="$(echo $i | cut -d, -f2-)"
                        echo "ARRAY /dev/$device devices=$array" >> $mdconfig
                        ;;
                    # partitionable raid
                    md=d[0-9]*,/*)
                        device="$(echo "$i" | sed -e 's|,/.*||g' -e 's|=|_|g')"
                        array="$(echo $i | cut -d, -f2-)"
                        echo "ARRAY /dev/$device devices=$array" >> $mdconfig
                        ;;
                    # raid UUID 
                    md=[0-9]*,[0-9,a-z]*)
                        device="$(echo "$i" | sed -e 's|,.*||g' -e 's|=||g')"
                        array="$(echo $i | cut -d, -f2-)"
                        echo "ARRAY /dev/$device UUID=$array" >> $mdconfig
                        ;;
                    # partitionable raid UUID
                    md=d[0-9]*,[0-9,a-z]*)
                        device="$(echo "$i" | sed -e 's|,.*||g' -e 's|=|_|g')"
                        array="$(echo $i | cut -d, -f2-)"
                        echo "ARRAY /dev/$device UUID=$array" >> $mdconfig
                        ;;
                esac 
            done
        fi
        # assemble everything
        [ -e $mdconfig ] && /sbin/mdassemble
    else
        msg ":: Skipping already run by arch_root_advanced hook..."
    fi
}