summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDieter Plaetinck <dieter@plaetinck.be>2008-11-23 12:45:34 +0100
committerDieter Plaetinck <dieter@plaetinck.be>2008-11-23 12:45:34 +0100
commit7b229a75088b480c282c90d6d29ce2d5ef181a9c (patch)
treefe857f77369958c867ac1ab2a32b13384778716d /src
parentecc499acc3559ff370608d1e3910b7f5e5269577 (diff)
more interactive filesystem(s) WIP
Diffstat (limited to 'src')
-rw-r--r--src/core/libs/lib-ui-interactive.sh77
1 files changed, 43 insertions, 34 deletions
diff --git a/src/core/libs/lib-ui-interactive.sh b/src/core/libs/lib-ui-interactive.sh
index 1c2223d..42db4ec 100644
--- a/src/core/libs/lib-ui-interactive.sh
+++ b/src/core/libs/lib-ui-interactive.sh
@@ -354,6 +354,29 @@ interactive_filesystem ()
[ -z "$fs_label" ] && fs_label=no_label
[ -z "$fs_params" ] && fs_params=no_params
NEW_FILESYSTEM="$fs_type;$fs_mount;$fs_opts;$fs_label;$fs_params"
+
+ # add new theoretical blockdevice, if relevant
+ if [ "$fs_type" = lvm-vg ]
+ then
+ echo "/dev/mapper/$fs_label($fs_type) empty" >> $TMP_MENU
+ elif [ "$fs_type" = lvm-pv ]
+ then
+ echo "$part($fs_type) empty" >> $TMP_MENU
+ elif [ "$fs_type" = lvm-lv ]
+ then
+ echo "/dev/mapper/$part_label-$fs_label($fs_type) empty" >> $TMP_MENU
+ elif [ "$fs_type" = dm_crypt ]
+ then
+ echo "/dev/mapper/$fs_label($fs_type) empty" >> $TMP_MENU
+ fi
+
+ # TODO: cascading remove theoretical blockdevice(s), if relevant ( eg if we just changed from vg->ext3, dm_crypt -> fat, or if we changed the label of something, etc)
+ if [[ $old_fs = lvm-* || $old_fs = dm_crypt ]] && [[ $fs != lvm-* && "$fs" != dm_crypt ]]
+ then
+ [ "$fs" = lvm-vg -o "$fs" = dm_cryp ] && target="/dev/mapper/$label"
+ [ "$fs" = lvm-lv ] && target="/dev/mapper/$vg-$label" #TODO: $vg not set
+ sed -i "#$target#d" $TMP_MENU #TODO: check affected items, delete those, etc etc.
+ fi
}
interactive_filesystems() {
@@ -379,45 +402,30 @@ interactive_filesystems() {
part_type=` sed 's/.*(\(.*\))$/\1/' <<< $ANSWER_OPTION | cut -d ',' -f 1`
part_label=`sed 's/.*(\(.*\))$/\1/' <<< $ANSWER_OPTION | cut -d ',' -f 2`
fs=`awk "/^$part/ {print \$2} $TMP_MENU"`
- if [ $part_type = lvm-vg ]
+
+ if [ $part_type = lvm-vg ] # one lvm VG can host multiple LV's so that's a bit a special blockdevice...
then
- #TODO: menu here where you can add/edit 0..n lv's
+ list=
+ if [ $fs != empty ]
+ then
+ for lv in `sed '/|/ /' <<< $fs`
+ do
+ list="$list $lv"
+ done
+ fi
+ list="$list empty NEW"
+ ask_option empty "Edit/create new LV's on this VG:" $list
+ interactive_filesystem $ANSWER_OPTION
+ #TODO: for now we just append, that's obviously wrong
+ fs="$fs|$NEW_FILESYSTEM"
else
interactive_filesystem $part $part_type $part_label $fs
+ fs=$NEW_FILESYSTEM
fi
-
- # TODO: handle $NEW_FILESYSTEM
-
-
# update the menu
- sed -i "s/^$part($part_type).*/$part($part_type) $fs;$mount;$opts;$label;$params/" $TMP_MENU
-
- # add new dummy blockdevice, if relevant
- if [ "$fs" = lvm-vg ]
- then
- echo "/dev/mapper/$label($fs) no_filesystem;no_mountpoint;no_opts;no_label;no_params" >> $TMP_MENU
- elif [ "$fs" = lvm-pv ]
- then
- echo "$part($fs) no_filesystem;no_mountpoint;no_opts;no_label;no_params" >> $TMP_MENU
- elif [ "$fs" = lvm-lv ]
- then
- #TODO: $vg is not set yet
- echo "/dev/mapper/$vg-$label($fs) no_filesystem;no_mountpoint;no_opts;no_label;no_params" >> $TMP_MENU
- elif [ "$fs" = dm_crypt ]
- then
- echo "/dev/mapper/$label($fs) no_filesystem;no_mountpoint;no_opts;no_label;no_params" >> $TMP_MENU
- fi
-
- # cascading remove (dummy) blockdevice(s), if relevant ( eg if we just changed from vg->ext3, dm_crypt -> fat, etc)
- if [[ $old_fs = lvm-* || $old_fs = dm_crypt ]] && [[ $fs != lvm-* && "$fs" != dm_crypt ]]
- then
- [ "$fs" = lvm-vg -o "$fs" = dm_cryp ] && target="/dev/mapper/$label"
- [ "$fs" = lvm-lv ] && target="/dev/mapper/$vg-$label" #TODO: $vg not set
- sed -i "#$target#d" $TMP_MENU #TODO: check affected items, delete those, etc etc.
- fi
+ sed -i "s/^$part($part_type,$part_label).*/$part($part_type,$part_label) $fs/" $TMP_MENU
- # TODO: find a way to make it possible to create n lv's on 1 pv
done
# If the user has forgotten one or more fundamental ones, ask him now
@@ -473,8 +481,9 @@ interactive_filesystems() {
ask_yesno "Would you like to create and mount the filesytems like this?\n\nSyntax\n------\nDEVICE:TYPE:MOUNTPOINT:FORMAT\n\n$(for i in $(cat /home/arch/aif/runtime/.parts); do echo "$i\n";done)" && PARTFINISH="DONE"
done
-# TODO: should not need this anymore target_umountall
- # TODO: prepend $var_TARGET_DIR before handing over
+ # TODO: should not need this anymore target_umountall
+ # TODO: prepend $var_TARGET_DIR before handing over
+ # TODO: convert our format to what process_filesystems will understand
process_filesystems && notify "Partitions were successfully created." && return 0
show_warning "Something went wrong while processing the filesystems"