From eb35645bccd24b52e8c14d7eae48f079eac6c812 Mon Sep 17 00:00:00 2001 From: dteske Date: Fri, 14 Jun 2013 19:35:30 +0000 Subject: Add skeleton processing of selected packages in the order in which they should be processed. De-select each package as we "process" (actual processing still pending) each package so that if we get an error, we can return to an accurate state of selected packages. --- usr.sbin/bsdconfig/share/packages/packages.subr | 49 +++++++++++++++++++++---- 1 file changed, 42 insertions(+), 7 deletions(-) (limited to 'usr.sbin') diff --git a/usr.sbin/bsdconfig/share/packages/packages.subr b/usr.sbin/bsdconfig/share/packages/packages.subr index 28ed7f1..d9356c3 100755 --- a/usr.sbin/bsdconfig/share/packages/packages.subr +++ b/usr.sbin/bsdconfig/share/packages/packages.subr @@ -603,18 +603,53 @@ f_package_review() --menu \"\$prompt\" \ $height $width $rows \ $menu_list \ - 2> /dev/null - local retval=$? + 2> /dev/null || return $? + # Return if the user pressed ESC or chose Cancel/No # - # XXX - # - f_show_msg "Coming soon..." + # Process each of the selected packages: + # + First, process dependencies. + # + Second, process packages marked for Install. + # + Third, process packages marked for Re-install. + # + Finally, process packages marked for Uninstall. # + for package in $SELECTED_PACKAGES; do + mark= + f_str2varname "$package" varpkg + f_getvar _mark_$varpkg mark + [ "$mark" = "D" ] || continue + # XXX Install dependency + f_package_deselect "$package" + done + for package in $SELECTED_PACKAGES; do + mark= + f_str2varname "$package" varpkg + f_getvar _mark_$varpkg mark + [ "$mark" = "I" ] || continue + # XXX Install package + f_package_deselect "$package" + done + for package in $SELECTED_PACKAGES; do + mark= + f_str2varname "$package" varpkg + f_getvar _mark_$varpkg mark + [ "$mark" = "R" ] || continue + # XXX Re-install package + f_package_deselect "$package" + done + for package in $SELECTED_PACKAGES; do + mark= + f_str2varname "$package" varpkg + f_getvar _mark_$varpkg mark + [ "$mark" = "U" ] || continue + # XXX Uninstall package + f_package_deselect "$package" + done + # XXX - # + f_show_msg "Coming soon..." - return $retval + return $SUCCESS } # f_package_config -- cgit v1.1