[pve-devel] [PATCH installer 6/7] low-level: avoid open-coding config reading, parsing and merging
Christoph Heiss
c.heiss at proxmox.com
Wed Jul 26 16:04:00 CEST 2023
Signed-off-by: Christoph Heiss <c.heiss at proxmox.com>
---
proxmox-low-level-installer | 45 +++++++++++++++----------------------
1 file changed, 18 insertions(+), 27 deletions(-)
diff --git a/proxmox-low-level-installer b/proxmox-low-level-installer
index 814961e..745402a 100755
--- a/proxmox-low-level-installer
+++ b/proxmox-low-level-installer
@@ -53,6 +53,22 @@ sub usage {
exit($cmd ne 'help' ? 1 : 0);
}
+sub read_and_merge_config {
+ my $config_raw;
+ while (my $line = <>) {
+ if ($line =~ /^\s*\{/) {
+ $config_raw = $line;
+ last;
+ }
+ }
+
+ my $config = eval { from_json($config_raw, { utf8 => 1 }) };
+ die "failed to parse config from stdin - $@\n" if $@;
+
+ Proxmox::Install::Config::merge($config);
+ log_info("got installation config: ". to_json(Proxmox::Install::Config::get(), { utf8 => 1, canonical => 1 }) ."\n");
+}
+
my $cmd = shift;
if (!$cmd || $cmd eq 'help' || !exists($commands->{$cmd})) {
usage($cmd // '');
@@ -87,19 +103,7 @@ if ($cmd eq 'dump-env') {
file_write_all($run_env_file, $run_env_serialized);
} elsif ($cmd eq 'start-session') {
Proxmox::UI::init_stdio({}, $env);
-
- my $config_raw;
- while (my $line = <>) {
- if ($line =~ /^\s*\{/) {
- $config_raw = $line;
- last;
- }
- }
- my $config = eval { from_json($config_raw, { utf8 => 1 }) };
- die "failed to parse config from stdin - $@\n" if $@;
-
- Proxmox::Install::Config::merge($config);
- log_info("got installation config: ". to_json(Proxmox::Install::Config::get(), { utf8 => 1, canonical => 1 }) ."\n");
+ read_and_merge_config();
eval { Proxmox::Install::extract_data() };
if (my $err = $@) {
@@ -119,20 +123,7 @@ if ($cmd eq 'dump-env') {
}
} elsif ($cmd eq 'start-session-test') {
Proxmox::UI::init_stdio({}, $env);
-
- my $config_raw;
- while (my $line = <>) {
- if ($line =~ /^\s*\{/) {
- $config_raw = $line;
- last;
- }
- }
- my $config = eval { from_json($config_raw, { utf8 => 1 }) };
- die "failed to parse config from stdin - $@\n" if $@;
-
- Proxmox::Install::Config::merge($config);
-
- print STDERR "got config: ". to_json(Proxmox::Install::Config::get(), { utf8 => 1, canonical => 1 }) ."\n";
+ read_and_merge_config();
my $res = Proxmox::UI::prompt("Reply anything?") ? 'ok' : 'not ok';
Proxmox::UI::message("Test Message - got $res");
--
2.41.0
More information about the pve-devel
mailing list