Skip to content

Commit 3808163

Browse files
committed
refactor(self-update): extract (get|restore)_reg_value()
1 parent 0492b04 commit 3808163

File tree

1 file changed

+17
-11
lines changed

1 file changed

+17
-11
lines changed

src/cli/self_update/test.rs

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -32,27 +32,33 @@ pub fn with_saved_path(f: &mut dyn FnMut()) {
3232

3333
#[cfg(windows)]
3434
pub fn get_path() -> io::Result<Option<RegValue>> {
35-
let root = RegKey::predef(HKEY_CURRENT_USER);
36-
let environment = root
37-
.open_subkey_with_flags("Environment", KEY_READ | KEY_WRITE)
38-
.unwrap();
39-
match environment.get_raw_value("PATH") {
35+
get_reg_value(&RegKey::predef(HKEY_CURRENT_USER), "Environment", "PATH")
36+
}
37+
38+
#[cfg(windows)]
39+
fn restore_path(p: Option<RegValue>) {
40+
restore_reg_value(&RegKey::predef(HKEY_CURRENT_USER), "Environment", "PATH", p)
41+
}
42+
43+
#[cfg(windows)]
44+
fn get_reg_value(root: &RegKey, subkey: &str, name: &str) -> io::Result<Option<RegValue>> {
45+
let subkey = root.open_subkey_with_flags(subkey, KEY_READ | KEY_WRITE)?;
46+
match subkey.get_raw_value(name) {
4047
Ok(val) => Ok(Some(val)),
4148
Err(ref e) if e.kind() == io::ErrorKind::NotFound => Ok(None),
4249
Err(e) => Err(e),
4350
}
4451
}
4552

4653
#[cfg(windows)]
47-
fn restore_path(p: Option<RegValue>) {
48-
let root = RegKey::predef(HKEY_CURRENT_USER);
49-
let environment = root
50-
.open_subkey_with_flags("Environment", KEY_READ | KEY_WRITE)
54+
fn restore_reg_value(root: &RegKey, subkey: &str, name: &str, p: Option<RegValue>) {
55+
let subkey = root
56+
.open_subkey_with_flags(subkey, KEY_READ | KEY_WRITE)
5157
.unwrap();
5258
if let Some(p) = p.as_ref() {
53-
environment.set_raw_value("PATH", p).unwrap();
59+
subkey.set_raw_value(name, p).unwrap();
5460
} else {
55-
let _ = environment.delete_value("PATH");
61+
let _ = subkey.delete_value(name);
5662
}
5763
}
5864

0 commit comments

Comments
 (0)