diff options
Diffstat (limited to 'perl-install/install/steps_auto_install.pm')
| -rw-r--r-- | perl-install/install/steps_auto_install.pm | 138 | 
1 files changed, 138 insertions, 0 deletions
| diff --git a/perl-install/install/steps_auto_install.pm b/perl-install/install/steps_auto_install.pm new file mode 100644 index 000000000..ceaab7ed3 --- /dev/null +++ b/perl-install/install/steps_auto_install.pm @@ -0,0 +1,138 @@ +package install::steps_auto_install; + +use diagnostics; +use strict; +use vars qw(@ISA $graphical @graphical_steps); + +@ISA = qw(install::steps); + +#-###################################################################################### +#- misc imports +#-###################################################################################### +use common; +use install::steps; + +sub new { +    my ($type, $o) = @_; + +    $o->{interactive} ||= 'gtk' if $graphical || !is_empty_array_ref($o->{interactiveSteps}); +    # Handle legacy options +    push @{$o->{interactiveSteps}}, qw(setRootPassword_addUser) if intersection($o->{interactiveSteps}, ['addUser', 'setRootPassword']); +    push @{$o->{interactiveSteps}}, qw(installPackages configureNetwork), @graphical_steps, if_(!$o->{autoExitInstall}, 'exitInstall'); + +    if ($o->{interactive}) { +	require "install/steps_$o->{interactive}.pm"; + +	@ISA = ('install::steps_' . $o->{interactive}, @ISA); + +	foreach my $f (@{$o->{orderedSteps}}) { +	    $o->{steps}{$f}{auto} = 1 if !member($f, @{$o->{interactiveSteps}}); +	} + +	goto &{$install::{'steps_' . $o->{interactive} . '::'}{new}}; +    } else { +	@ISA = ('install::steps_auto_install_non_interactive', @ISA); +	(bless {}, ref($type) || $type)->install::steps::new($o); +    } +} + +sub exitInstall { +    my ($o, $alldone) = @_; + +    if ($o->{interactive}) { +	$o->SUPER::exitInstall($alldone); +    } else { +	install::steps::exitInstall($o); +	return if $o->{autoExitInstall}; +	print "\a"; +	print "Auto installation complete\n"; +	print "Press <Enter>" , $::local_install ? '' : " to reboot", "\n"; +	<STDIN>; +    } +} + + +#-###################################################################################### +#- install::steps_auto_install_non_interactive package +#-###################################################################################### +package install::steps_auto_install_non_interactive; + +use install::steps; +use lang; +use modules; +use common; +use log; + +my $iocharset; + +sub enteringStep { +    my ($o, $step) = @_; + +    my ($s, $t) = (N_("Entering step `%s'\n"), common::remove_translate_context($o->{steps}{$step}{text})); +    my $txt; +    if ($iocharset && !$::local_install) { +	$txt = sprintf(translate($s), translate($t)); +	$txt = Locale::gettext::iconv($txt, "utf-8", $iocharset); +    } else { +	$txt = sprintf($s, $t); +    } +    print $txt; + +    $o->install::steps::enteringStep($step); +} + +sub rebootNeeded { +    my ($o) = @_; +    errorInStep($o, <<EOF); +While partitioning, the partition table re-read failed, needing a reboot +This is plain wrong for an auto_install +EOF +} + +sub ask_warn { +    my ($_o, $_title, $message) = @_; +    log::l(join(" ", deref_array($message)) . ' ' . backtrace()); +} + +sub wait_message { +    my ($_o, $_title, $_message) = @_; +} +sub wait_message_with_progress_bar { +    my ($_o, $_title) = @_; +    undef, sub {}; +} + +sub charsetChanged { +    my ($o) = @_; +    lang::load_console_font($o->{locale}); + +    my ($name, $acm) = lang::l2console_font($o->{locale}, 1); +    my %fs_options = lang::fs_options($o->{locale}); +    $iocharset = $name && $acm && $fs_options{iocharset} ne 'utf8' ? $fs_options{iocharset} : ''; +} + +sub errorInStep { +    my ($_o, $err) = @_; +    print "error :(\n";  +    print "$err\n\n"; +    print "switch to console f2 for a shell\n"; +    print "Press <Enter> to reboot\n"; + +    my $answer = <STDIN>; +    if ($answer =~ /restart/i) { +	log::l("restarting install"); +	c::_exit(0x35); +    } +    c::_exit(1); +} + + +#-###################################################################################### +#- Steps Functions +#-###################################################################################### +sub installPackages { +    my ($o) = @_; +    catch_cdie { $o->install::steps::installPackages } sub { print formatError($@), "\n"; 1 }; +} + +1; | 
