@@ -78,6 +78,7 @@ impl RegistryHelper {
78
78
79
79
pub fn set ( & self , is_what_if : bool ) -> Result < Option < Registry > , RegistryError > {
80
80
let mut depth = None ;
81
+ let mut proposed_data: Option < RegistryValueData > = None ;
81
82
let reg_key = match self . open ( Security :: Write ) {
82
83
Ok ( ( reg_key, _subkey) ) => reg_key,
83
84
// handle NotFound error
@@ -98,24 +99,24 @@ impl RegistryHelper {
98
99
99
100
self . open ( Security :: Write ) ?. 0
100
101
} ,
101
- Err ( e) => return self . handle_what_if_error ( e, is_what_if)
102
+ Err ( e) => return self . handle_error_or_what_if ( e, is_what_if)
102
103
} ;
103
104
104
105
if let Some ( value_data) = & self . config . value_data {
105
106
let Ok ( value_name) = U16CString :: from_str ( self . config . value_name . as_ref ( ) . unwrap ( ) ) else {
106
- return self . handle_what_if_error ( RegistryError :: Utf16Conversion ( "valueName" . to_string ( ) ) , is_what_if) ;
107
+ return self . handle_error_or_what_if ( RegistryError :: Utf16Conversion ( "valueName" . to_string ( ) ) , is_what_if) ;
107
108
} ;
108
109
109
110
let data = match value_data {
110
111
RegistryValueData :: String ( s) => {
111
112
let Ok ( utf16) = U16CString :: from_str ( s) else {
112
- return self . handle_what_if_error ( RegistryError :: Utf16Conversion ( "valueData" . to_string ( ) ) , is_what_if) ;
113
+ return self . handle_error_or_what_if ( RegistryError :: Utf16Conversion ( "valueData" . to_string ( ) ) , is_what_if) ;
113
114
} ;
114
115
Data :: String ( utf16)
115
116
} ,
116
117
RegistryValueData :: ExpandString ( s) => {
117
118
let Ok ( utf16) = U16CString :: from_str ( s) else {
118
- return self . handle_what_if_error ( RegistryError :: Utf16Conversion ( "valueData" . to_string ( ) ) , is_what_if) ;
119
+ return self . handle_error_or_what_if ( RegistryError :: Utf16Conversion ( "valueData" . to_string ( ) ) , is_what_if) ;
119
120
} ;
120
121
Data :: ExpandString ( utf16)
121
122
} ,
@@ -129,7 +130,7 @@ impl RegistryHelper {
129
130
let mut m16: Vec < UCString < u16 > > = Vec :: < UCString < u16 > > :: new ( ) ;
130
131
for s in m {
131
132
let Ok ( utf16) = U16CString :: from_str ( s) else {
132
- return self . handle_what_if_error ( RegistryError :: Utf16Conversion ( "valueData" . to_string ( ) ) , is_what_if) ;
133
+ return self . handle_error_or_what_if ( RegistryError :: Utf16Conversion ( "valueData" . to_string ( ) ) , is_what_if) ;
133
134
} ;
134
135
m16. push ( utf16) ;
135
136
}
@@ -141,22 +142,11 @@ impl RegistryHelper {
141
142
} ;
142
143
143
144
if is_what_if {
144
- let change_type = if let Some ( name_exists) = self . get ( ) ?. exist {
145
- if name_exists { Action :: Clobber }
146
- else { Action :: New }
147
- } else { Action :: Clobber } ;
148
- return Ok ( Some ( Registry {
149
- key_path : self . config . key_path . clone ( ) ,
150
- what_if : Some ( WhatIf {
151
- change_type,
152
- proposed_data : Some ( convert_reg_value ( & data) ?) ,
153
- depth,
154
- message : None
155
- } ) ,
156
- ..Default :: default ( )
157
- } ) ) ;
145
+ proposed_data = Some ( convert_reg_value ( & data) ?) ;
146
+ }
147
+ else {
148
+ reg_key. set_value ( & value_name, & data) ?;
158
149
}
159
- reg_key. set_value ( & value_name, & data) ?;
160
150
}
161
151
162
152
if is_what_if {
@@ -168,13 +158,14 @@ impl RegistryHelper {
168
158
key_path : self . config . key_path . clone ( ) ,
169
159
what_if : Some ( WhatIf {
170
160
change_type,
171
- proposed_data : None ,
161
+ proposed_data,
172
162
depth,
173
163
message : None
174
164
} ) ,
175
165
..Default :: default ( )
176
166
} ) ) ;
177
167
}
168
+
178
169
Ok ( None )
179
170
}
180
171
@@ -249,7 +240,7 @@ impl RegistryHelper {
249
240
Ok ( ( parent_key, subkeys) )
250
241
}
251
242
252
- fn handle_what_if_error ( & self , error : RegistryError , is_what_if : bool ) -> Result < Option < Registry > , RegistryError > {
243
+ fn handle_error_or_what_if ( & self , error : RegistryError , is_what_if : bool ) -> Result < Option < Registry > , RegistryError > {
253
244
if is_what_if {
254
245
return Ok ( Some ( Registry {
255
246
key_path : self . config . key_path . clone ( ) ,
0 commit comments