log_info("got installation config: ". to_json(Proxmox::Install::Config::get(), { utf8 => 1, canonical => 1 }) ."\n");
}
+sub send_reboot_ui_message {
+ if (Proxmox::Install::Config::get_autoreboot()) {
+ my $secs = 5;
+ while ($secs > 0) {
+ Proxmox::UI::finished(1, "Installation finished - auto-rebooting in $secs seconds ..");
+ sleep 1;
+ $secs -= 1;
+ }
+ } else {
+ Proxmox::UI::finished(1, "Installation complete - reboot now?");
+ }
+}
+
my $cmd = shift;
if (!$cmd || $cmd eq 'help' || !exists($commands->{$cmd})) {
usage($cmd // '');
Proxmox::UI::finished(0, $err);
}
} else {
- if (Proxmox::Install::Config::get_autoreboot()) {
- Proxmox::UI::finished(1, "Installation finished - auto-rebooting in ~ 5 seconds");
- } else {
- Proxmox::UI::finished(1, "Installation complete - reboot now?");
- }
+ send_reboot_ui_message();
}
} elsif ($cmd eq 'start-session-test') {
Proxmox::UI::init_stdio({}, $env);
}
}
- if (Proxmox::Install::Config::get_autoreboot()) {
- Proxmox::UI::finished(1, "Installation finished - auto-rebooting in ~ 5 seconds");
- } else {
- Proxmox::UI::finished(1, "Installation complete - reboot now?");
- }
+ send_reboot_ui_message();
}
exit(0);
use cursive::{
utils::Counter,
- view::{Resizable, ViewWrapper},
+ view::{Nameable, Resizable, ViewWrapper},
views::{Dialog, DummyView, LinearLayout, PaddedView, ProgressBar, TextContent, TextView},
CbSink, Cursive,
};
}
fn prepare_for_reboot(siv: &mut Cursive, success: bool, msg: &str) {
+ const DIALOG_ID: &str = "autoreboot-dialog";
let title = if success { "Success" } else { "Failure" };
+ // If the dialog was previously created, just update its content and we're done.
+ if let Some(mut dialog) = siv.find_name::<Dialog>(DIALOG_ID) {
+ dialog.set_content(TextView::new(msg));
+ return;
+ }
+
// For rebooting, we just need to quit the installer,
// our caller does the actual reboot.
siv.add_layer(
Dialog::text(msg)
.title(title)
- .button("Reboot now", Cursive::quit),
+ .button("Reboot now", Cursive::quit)
+ .with_name(DIALOG_ID),
);
let autoreboot = siv