#!/bin/sh

# parts based on initial_auto from partman_auto
# parts based on partman-md's do_option for choose_partition

. /lib/partman/lib/base.sh
. /lib/partman/lib/commit.sh

# See if we are supposed to run and only run once
db_get partman-auto/method
if [ "$RET" != raid ] || \
   [ -f /var/lib/partman/initial_auto_raid ]; then
	exit 0
fi

mkdir -p /var/lib/partman
touch /var/lib/partman/initial_auto_raid

# Look around for raidids before stopping parted_server
rm -rf /var/lib/partman/raidids
mkdir -p /var/lib/partman/raidids
for dev in $DEVICES/*; do
	[ -d "$dev" ] || continue
	cd "$dev"
	open_dialog PARTITIONS
	while { read_line num id size type fs path name; [ "$id" ]; }; do
		[ -f "$id/raidid" ] || continue
		raidid="$(cat "$id/raidid")"
		echo "$path" >>"/var/lib/partman/raidids/$raidid"
	done
	close_dialog
done
cd /

confirm_changes partman-md || exit 1

commit_changes partman/text/commit_failed || exit $?

stop_parted_server

RET=""
auto-raidcfg || RET=$?
if [ "$RET" ] && [ "$RET" -ne 9 ]; then
	db_set partman-auto-raid/error false
	db_input critical partman-auto-raid/error
	db_go
	exit 1
fi
touch /var/lib/partman/do_initial_auto_raid_fs

restart_partman
