Skip to content

Commit ca0dc61

Browse files
committed
add setter for what_if
1 parent 2beb660 commit ca0dc61

File tree

2 files changed

+20
-14
lines changed

2 files changed

+20
-14
lines changed

registry/src/main.rs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ fn main() {
4545
args::SubCommand::Config { subcommand } => {
4646
match subcommand {
4747
args::ConfigSubCommand::Get{input} => {
48-
let reg_helper = match RegistryHelper::new(&input, false) {
48+
let reg_helper = match RegistryHelper::new(&input) {
4949
Ok(reg_helper) => reg_helper,
5050
Err(err) => {
5151
eprintln!("Error: {err}");
@@ -64,13 +64,16 @@ fn main() {
6464
}
6565
},
6666
args::ConfigSubCommand::Set{input, what_if} => {
67-
let reg_helper = match RegistryHelper::new(&input, what_if) {
67+
let mut reg_helper = match RegistryHelper::new(&input) {
6868
Ok(reg_helper) => reg_helper,
6969
Err(err) => {
7070
eprintln!("Error: {err}");
7171
exit(EXIT_INVALID_INPUT);
7272
}
7373
};
74+
if what_if {
75+
reg_helper.enable_what_if();
76+
}
7477
match reg_helper.set() {
7578
Ok(reg_config) => {
7679
if let Some(config) = reg_config {
@@ -85,7 +88,7 @@ fn main() {
8588
}
8689
},
8790
args::ConfigSubCommand::Delete{input} => {
88-
let reg_helper = match RegistryHelper::new(&input, false) {
91+
let reg_helper = match RegistryHelper::new(&input) {
8992
Ok(reg_helper) => reg_helper,
9093
Err(err) => {
9194
eprintln!("Error: {err}");

registry/src/registry_helper.rs

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ pub struct RegistryHelper {
1414
}
1515

1616
impl RegistryHelper {
17-
pub fn new(config: &str, what_if: bool) -> Result<Self, RegistryError> {
17+
pub fn new(config: &str) -> Result<Self, RegistryError> {
1818
let registry: Registry = match serde_json::from_str(config) {
1919
Ok(config) => config,
2020
Err(e) => return Err(RegistryError::Json(e)),
@@ -27,11 +27,15 @@ impl RegistryHelper {
2727
config: registry,
2828
hive,
2929
subkey: subkey.to_string(),
30-
what_if
30+
what_if: false
3131
}
3232
)
3333
}
3434

35+
pub fn enable_what_if(&mut self) {
36+
self.what_if = true;
37+
}
38+
3539
pub fn get(&self) -> Result<Registry, RegistryError> {
3640
let exist: bool;
3741
let (reg_key, _subkey) = match self.open(Security::Read) {
@@ -248,7 +252,6 @@ impl RegistryHelper {
248252
}
249253

250254
fn handle_error_or_what_if(&self, error: RegistryError) -> Result<Option<Registry>, RegistryError> {
251-
// TODO: return error message via metadata instead of as property within set state
252255
if self.what_if {
253256
return Ok(Some(Registry {
254257
key_path: self.config.key_path.clone(),
@@ -317,7 +320,7 @@ fn convert_reg_value(value: &Data) -> Result<RegistryValueData, RegistryError> {
317320

318321
#[test]
319322
fn get_hklm_key() {
320-
let reg_helper = RegistryHelper::new(r#"{"keyPath":"HKEY_LOCAL_MACHINE"}"#, false).unwrap();
323+
let reg_helper = RegistryHelper::new(r#"{"keyPath":"HKEY_LOCAL_MACHINE"}"#).unwrap();
321324
let reg_config = reg_helper.get().unwrap();
322325
assert_eq!(reg_config.key_path, r#"HKEY_LOCAL_MACHINE"#);
323326
assert_eq!(reg_config.value_name, None);
@@ -326,7 +329,7 @@ fn get_hklm_key() {
326329

327330
#[test]
328331
fn get_product_name() {
329-
let reg_helper = RegistryHelper::new(r#"{"keyPath":"HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion","valueName":"ProductName"}"#, false).unwrap();
332+
let reg_helper = RegistryHelper::new(r#"{"keyPath":"HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion","valueName":"ProductName"}"#).unwrap();
330333
let reg_config = reg_helper.get().unwrap();
331334
assert_eq!(reg_config.key_path, r#"HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion"#);
332335
assert_eq!(reg_config.value_name, Some("ProductName".to_string()));
@@ -335,7 +338,7 @@ fn get_product_name() {
335338

336339
#[test]
337340
fn get_nonexisting_key() {
338-
let reg_helper = RegistryHelper::new(r#"{"keyPath":"HKCU\\DoesNotExist"}"#, false).unwrap();
341+
let reg_helper = RegistryHelper::new(r#"{"keyPath":"HKCU\\DoesNotExist"}"#).unwrap();
339342
let reg_config = reg_helper.get().unwrap();
340343
assert_eq!(reg_config.key_path, r#"HKCU\DoesNotExist"#);
341344
assert_eq!(reg_config.value_name, None);
@@ -345,7 +348,7 @@ fn get_nonexisting_key() {
345348

346349
#[test]
347350
fn get_nonexisting_value() {
348-
let reg_helper = RegistryHelper::new(r#"{"keyPath":"HKCU\\Software","valueName":"DoesNotExist"}"#, false).unwrap();
351+
let reg_helper = RegistryHelper::new(r#"{"keyPath":"HKCU\\Software","valueName":"DoesNotExist"}"#).unwrap();
349352
let reg_config = reg_helper.get().unwrap();
350353
assert_eq!(reg_config.key_path, r#"HKCU\Software"#);
351354
assert_eq!(reg_config.value_name, Some("DoesNotExist".to_string()));
@@ -355,7 +358,7 @@ fn get_nonexisting_value() {
355358

356359
#[test]
357360
fn set_and_remove_test_value() {
358-
let reg_helper = RegistryHelper::new(r#"{"keyPath":"HKCU\\DSCTest\\DSCSubKey","valueName":"TestValue","valueData": { "String": "Hello"} }"#, false).unwrap();
361+
let reg_helper = RegistryHelper::new(r#"{"keyPath":"HKCU\\DSCTest\\DSCSubKey","valueName":"TestValue","valueData": { "String": "Hello"} }"#).unwrap();
359362
reg_helper.set().unwrap();
360363
let result = reg_helper.get().unwrap();
361364
assert_eq!(result.key_path, r#"HKCU\DSCTest\DSCSubKey"#);
@@ -367,7 +370,7 @@ fn set_and_remove_test_value() {
367370
assert_eq!(result.value_name, Some("TestValue".to_string()));
368371
assert_eq!(result.value_data, None);
369372
assert_eq!(result.exist, Some(false));
370-
let reg_helper = RegistryHelper::new(r#"{"keyPath":"HKCU\\DSCTest"}"#, false).unwrap();
373+
let reg_helper = RegistryHelper::new(r#"{"keyPath":"HKCU\\DSCTest"}"#).unwrap();
371374
let result = reg_helper.get().unwrap();
372375
assert_eq!(result.key_path, r#"HKCU\DSCTest"#);
373376
assert_eq!(result.value_name, None);
@@ -382,13 +385,13 @@ fn set_and_remove_test_value() {
382385

383386
#[test]
384387
fn delete_tree() {
385-
let reg_helper = RegistryHelper::new(r#"{"keyPath":"HKCU\\DSCTest2\\DSCSubKey","valueName":"TestValue","valueData": { "String": "Hello"} }"#, false).unwrap();
388+
let reg_helper = RegistryHelper::new(r#"{"keyPath":"HKCU\\DSCTest2\\DSCSubKey","valueName":"TestValue","valueData": { "String": "Hello"} }"#).unwrap();
386389
reg_helper.set().unwrap();
387390
let result = reg_helper.get().unwrap();
388391
assert_eq!(result.key_path, r#"HKCU\DSCTest2\DSCSubKey"#);
389392
assert_eq!(result.value_name, Some("TestValue".to_string()));
390393
assert_eq!(result.value_data, Some(RegistryValueData::String("Hello".to_string())));
391-
let reg_helper = RegistryHelper::new(r#"{"keyPath":"HKCU\\DSCTest2"}"#, false).unwrap();
394+
let reg_helper = RegistryHelper::new(r#"{"keyPath":"HKCU\\DSCTest2"}"#).unwrap();
392395
reg_helper.remove().unwrap();
393396
let result = reg_helper.get().unwrap();
394397
assert_eq!(result.key_path, r#"HKCU\DSCTest2"#);

0 commit comments

Comments
 (0)