#!/bin/bash

set -e

# TODO, 多次重复
disk=$(get_value devpath)
if echo "${disk}" | grep -q nvme; then
    disk=${disk}p
elif echo "${disk}" | grep -q mmcblk; then
    disk=${disk}p
fi

readonly GENFSTAB="${IN_TARGET}"/in_chroot/genfstab
if [[ -f "${GENFSTAB}" ]]; then
    if [[ "${is_990_9a0}" = "true" ]]; then
        bash "${GENFSTAB}" -p / >/etc/fstab
	if egrep -qi 'kirin.?900' /proc/cpuinfo; then
        	bash "${GENFSTAB}" -p -U / >/etc/fstab
    	fi
        # 990, 9a0 不自动挂载 swapfile
        sed -i "/${swap_file}/d" /etc/fstab
      #  sed -i '/\/boot/s/rw,/ro,/g' /etc/fstab
    else
        bash "${GENFSTAB}" -p -U / >/etc/fstab
    fi
fi

# 删除安装介质
tac /etc/fstab | sed -n '/cdrom/,+1!p' | tac >/etc/fstab.new
mv /etc/fstab.new /etc/fstab

# 修改 /data, /backup 的 options
#sed -n '/\/data /p' /etc/fstab |
#    while read dev mp fs options; do
#        sed -i "s/\\$mp .*/\\$mp     \t$fs     \trw,user,x-gvfs-show,nosuid,nofail     \t0 0/" /etc/fstab
#    done

sed -n '/\/backup /p' /etc/fstab |
    while read dev mp fs options; do
        sed -i "s/\\$mp .*/\\$mp     \t$fs     \tnoauto     \t0 0/" /etc/fstab
    done

sed -n '/\/boot /p' /etc/fstab |
    while read dev mp fs options pass1 pass2; do
            echo $read -- $dev -- $mp -- $fs -- $options -- $pass1 -- $pass2
                if echo "$options" | grep -q "nofail"; then
                        echo "1:options="$options
                else
                        options=$options",nofail"
                        echo "2:options="$options
                fi
                # options=$options",x-systemd.device-timeout=1ms"
            echo $read -- $dev -- $mp -- $fs -- $options -- $pass1 -- $pass2
        sed -i "s/\\$mp .*/\\$mp     \t$fs     \t$options     \t$pass1 2/" /etc/fstab
    done

sed -n '/\/data /p' /etc/fstab |
    while read dev mp fs options pass1 pass2; do
            echo $read -- $dev -- $mp -- $fs -- $options -- $pass1 -- $pass2
                if echo "$options" | grep -q "nofail"; then
                        echo "1:options="$options
                else
                        options=$options",nofail"
                        echo "2:options="$options
                fi
            # options=$options",x-systemd.device-timeout=1ms"
            echo $read -- $dev -- $mp -- $fs -- $options -- $pass1 -- $pass2
        sed -i "s/\\$mp .*/\\$mp     \t$fs     \t$options     \t$pass1 2/" /etc/fstab
    done

sed -n '/\/boot\/efi /p' /etc/fstab |
    while read dev mp fs options pass1 pass2; do
            echo $read -- $dev -- $mp -- $fs -- $options -- $pass1 -- $pass2
                if echo "$options" | grep -q "nofail"; then
                        echo "1:options="$options
                else
                        options=$options",nofail"
                        echo "2:options="$options
                fi
            # options=$options",x-systemd.device-timeout=1ms"
            echo $read -- $dev -- $mp -- $fs -- $options -- $pass1 -- $pass2
        sed -i "s@\\$mp .*@\\$mp     \t$fs     \t$options     \t$pass1 2@" /etc/fstab
    done


# sed -n '/\/pdp /p' /etc/fstab |
#     while read dev mp fs options; do
#         sed -i "s/\\$dev .*/\\$mp     \t$fs     \tnoauto     \t0 0/" /etc/fstab
#         echo $dev > /etc/kylin-pdp/pdp.cfg
#     done

# add bind
# if grep -q '/home' /proc/mounts; then
#     echo -e "/data/home     \t/home     \tnone     \tdefaults,bind     \t0 0" >>/etc/fstab
# fi
# if grep -q '/root' /proc/mounts; then
#     echo -e "/data/root     \t/root     \tnone     \tdefaults,bind     \t0 0" >>/etc/fstab
# fi


# 重新生成/etc/.bootinfo, 因ghost会覆盖
if [[ "${is_ghost}" = "true" ]]; then
    backup_uuid=$(sed -n '/\/backup /p' /etc/fstab  | awk '{print $1}' |awk '{split($0,arr,"=");print arr[2]}')
    echo "RECOVERY_DEV_UUID=$backup_uuid
SNAPSHOT_ENABLED=1" >/etc/.bootinfo
fi
