MCPcopy Create free account
hub / github.com/PowerShell/DSC / config_set

Function config_set

archive/registry/src/regconfighelper.rs:74–135  ·  view source on GitHub ↗
(config: &Registry)

Source from the content-addressed store, hash-verified

72}
73
74pub fn config_set(config: &Registry) -> Result<String, RegistryError> {
75 let mut reg_result = Registry { key_path: config.key_path.clone(), ..Default::default() };
76 let reg_key: RegistryKey;
77 match &config.value_name {
78 None => {
79 match config.exist {
80 Some(true) | None => {
81 open_or_create_key(&config.key_path)?;
82 },
83 Some(false) => {
84 reg_result.exist = Some(false);
85 remove_key(&config.key_path)?;
86 },
87 }
88 },
89 Some(value_name) => {
90 reg_result.value_name = Some(value_name.clone());
91 match &config.exist {
92 Some(true) | None => {
93 reg_key = open_or_create_key(&config.key_path)?;
94 match config.value_data.as_ref() {
95 Some(value_data) => {
96 reg_result.value_data = Some(value_data.clone());
97 reg_key.set_value(value_name, &convert_configreg_data(value_data))?;
98 },
99 None => {
100 // just verify that the value exists
101 match reg_key.get_value(value_name) {
102 Ok(_) => {},
103 Err(NtStatusError { status: NtStatusErrorKind::ObjectNameNotFound, .. }) => {
104 reg_key.set_value(value_name, &NtRegistryValueData::None)?;
105 },
106 Err(err) => {
107 return Err(RegistryError::NtStatus(err));
108 }
109 }
110 }
111 }
112 },
113 Some(false) => {
114 reg_key = open_or_create_key(&config.key_path)?;
115 reg_result.exist = Some(false);
116 match reg_key.delete_value(value_name) {
117 Ok(()) | Err(NtStatusError { status: NtStatusErrorKind::ObjectNameNotFound, ..}) => {},
118 Err(err) => {
119 return Err(RegistryError::NtStatus(err));
120 }
121 }
122 },
123 }
124 }
125 }
126
127 let reg_json = match serde_json::to_string(&reg_result) {
128 Ok(reg_json) => reg_json,
129 Err(err) => {
130 return Err(RegistryError::Json(err.to_string()));
131 }

Callers 1

mainFunction · 0.70

Calls 10

open_or_create_keyFunction · 0.85
remove_keyFunction · 0.85
convert_configreg_dataFunction · 0.85
JsonClass · 0.85
set_valueMethod · 0.80
get_valueMethod · 0.80
delete_valueMethod · 0.80
defaultFunction · 0.50
to_stringFunction · 0.50
as_refMethod · 0.45

Tested by

no test coverage detected