From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) by lore.proxmox.com (Postfix) with ESMTPS id EE5DB1FF29F for ; Thu, 18 Jul 2024 15:49:45 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 6E7B9D455; Thu, 18 Jul 2024 15:49:46 +0200 (CEST) From: Christoph Heiss To: pve-devel@lists.proxmox.com Date: Thu, 18 Jul 2024 15:48:50 +0200 Message-ID: <20240718134905.1177775-6-c.heiss@proxmox.com> X-Mailer: git-send-email 2.45.1 In-Reply-To: <20240718134905.1177775-1-c.heiss@proxmox.com> References: <20240718134905.1177775-1-c.heiss@proxmox.com> MIME-Version: 1.0 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.023 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: [pve-devel] [PATCH installer v2 05/17] common: split out installer setup files loading functionality X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox VE development discussion Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: pve-devel-bounces@lists.proxmox.com Sender: "pve-devel" This allows re-using this piece of code in e.g. the post hook, instead of having to open-code it there. No functional changes. Signed-off-by: Christoph Heiss --- Changes v1 -> v2: * change `&PathBuf` parameter to `impl AsRef` --- proxmox-auto-installer/tests/parse-answer.rs | 40 +++++--------------- proxmox-installer-common/src/setup.rs | 13 +++++-- 2 files changed, 19 insertions(+), 34 deletions(-) diff --git a/proxmox-auto-installer/tests/parse-answer.rs b/proxmox-auto-installer/tests/parse-answer.rs index 4014b6d..450915a 100644 --- a/proxmox-auto-installer/tests/parse-answer.rs +++ b/proxmox-auto-installer/tests/parse-answer.rs @@ -1,4 +1,4 @@ -use std::path::PathBuf; +use std::path::{Path, PathBuf}; use serde_json::Value; use std::fs; @@ -8,13 +8,16 @@ use proxmox_auto_installer::answer::Answer; use proxmox_auto_installer::udevinfo::UdevInfo; use proxmox_auto_installer::utils::parse_answer; -use proxmox_installer_common::setup::{read_json, LocaleInfo, RuntimeInfo, SetupInfo}; +use proxmox_installer_common::setup::{ + load_installer_setup_files, read_json, LocaleInfo, RuntimeInfo, SetupInfo, +}; fn get_test_resource_path() -> Result { Ok(std::env::current_dir() .expect("current dir failed") .join("tests/resources")) } + fn get_answer(path: PathBuf) -> Result { let answer_raw = std::fs::read_to_string(path).unwrap(); let answer: answer::Answer = toml::from_str(&answer_raw) @@ -24,46 +27,23 @@ fn get_answer(path: PathBuf) -> Result { Ok(answer) } -fn setup_test_basic(path: &PathBuf) -> (SetupInfo, LocaleInfo, RuntimeInfo, UdevInfo) { - let installer_info: SetupInfo = { - let mut path = path.clone(); - path.push("iso-info.json"); - - read_json(&path) - .map_err(|err| format!("Failed to retrieve setup info: {err}")) - .unwrap() - }; - - let locale_info = { - let mut path = path.clone(); - path.push("locales.json"); - - read_json(&path) - .map_err(|err| format!("Failed to retrieve locale info: {err}")) - .unwrap() - }; - - let mut runtime_info: RuntimeInfo = { - let mut path = path.clone(); - path.push("run-env-info.json"); - - read_json(&path) - .map_err(|err| format!("Failed to retrieve runtime environment info: {err}")) - .unwrap() - }; +pub fn setup_test_basic(path: &Path) -> (SetupInfo, LocaleInfo, RuntimeInfo, UdevInfo) { + let (installer_info, locale_info, mut runtime_info) = load_installer_setup_files(path).unwrap(); let udev_info: UdevInfo = { - let mut path = path.clone(); + let mut path = path.to_path_buf(); path.push("run-env-udev.json"); read_json(&path) .map_err(|err| format!("Failed to retrieve udev info details: {err}")) .unwrap() }; + runtime_info.disks.sort(); if runtime_info.disks.is_empty() { panic!("disk list is empty!"); } + (installer_info, locale_info, runtime_info, udev_info) } diff --git a/proxmox-installer-common/src/setup.rs b/proxmox-installer-common/src/setup.rs index c0d701e..ee3d0c9 100644 --- a/proxmox-installer-common/src/setup.rs +++ b/proxmox-installer-common/src/setup.rs @@ -163,24 +163,29 @@ pub fn installer_setup(in_test_mode: bool) -> Result<(SetupInfo, LocaleInfo, Run } else { crate::RUNTIME_DIR.to_owned() }; - let path = PathBuf::from(base_path); + load_installer_setup_files(base_path) +} + +pub fn load_installer_setup_files( + base_path: impl AsRef, +) -> Result<(SetupInfo, LocaleInfo, RuntimeInfo), String> { let installer_info: SetupInfo = { - let mut path = path.clone(); + let mut path = base_path.as_ref().to_path_buf(); path.push("iso-info.json"); read_json(&path).map_err(|err| format!("Failed to retrieve setup info: {err}"))? }; let locale_info = { - let mut path = path.clone(); + let mut path = base_path.as_ref().to_path_buf(); path.push("locales.json"); read_json(&path).map_err(|err| format!("Failed to retrieve locale info: {err}"))? }; let mut runtime_info: RuntimeInfo = { - let mut path = path.clone(); + let mut path = base_path.as_ref().to_path_buf(); path.push("run-env-info.json"); read_json(&path) -- 2.45.1 _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel