@@ -212,9 +212,75 @@ pub struct Cli {
212
212
213
213
pub fn parse ( args : & [ String ] ) -> Cli {
214
214
#[ cfg( feature = "uefi" ) ]
215
- return uefi:: parse ( args) ;
215
+ let cli = uefi:: parse ( args) ;
216
216
#[ cfg( not( feature = "uefi" ) ) ]
217
- return clap_std:: parse ( args) ;
217
+ let cli = clap_std:: parse ( args) ;
218
+
219
+ if cfg ! ( feature = "readonly" ) {
220
+ // Initialize a new Cli with no arguments
221
+ let mut safe_cli = Cli :: default ( ) ;
222
+
223
+ // Copy all arguments that are readonly/safe
224
+ // We explicitly only cope the safe ones so that if we add new arguments in the future,
225
+ // which might be unsafe, we can't forget to exclude them from the safe set.
226
+ // TODO: Instead of silently ignoring blocked command, we should remind the user
227
+ safe_cli. verbosity = cli. verbosity ;
228
+ safe_cli. versions = cli. versions ;
229
+ safe_cli. version = cli. version ;
230
+ safe_cli. esrt = cli. esrt ;
231
+ safe_cli. device = cli. device ;
232
+ safe_cli. power = cli. power ;
233
+ safe_cli. thermal = cli. thermal ;
234
+ safe_cli. sensors = cli. sensors ;
235
+ // fansetduty
236
+ // fansetrpm
237
+ // autofanctrl
238
+ safe_cli. privacy = cli. privacy ;
239
+ safe_cli. pd_info = cli. version ;
240
+ safe_cli. dp_hdmi_info = cli. dp_hdmi_info ;
241
+ // dp_hdmi_update
242
+ safe_cli. audio_card_info = cli. audio_card_info ;
243
+ safe_cli. pd_bin = cli. pd_bin ;
244
+ safe_cli. ec_bin = cli. ec_bin ;
245
+ safe_cli. capsule = cli. capsule ;
246
+ safe_cli. dump = cli. dump ;
247
+ safe_cli. h2o_capsule = cli. h2o_capsule ;
248
+ // dump_ec_flash
249
+ // flash_ec
250
+ // flash_ro_ec
251
+ safe_cli. driver = cli. driver ;
252
+ safe_cli. test = cli. test ;
253
+ safe_cli. intrusion = cli. intrusion ;
254
+ safe_cli. inputdeck = cli. inputdeck ;
255
+ safe_cli. inputdeck_mode = cli. inputdeck_mode ;
256
+ safe_cli. expansion_bay = cli. expansion_bay ;
257
+ // charge_limit
258
+ // charge_current_limit
259
+ safe_cli. get_gpio = cli. get_gpio ;
260
+ safe_cli. fp_led_level = cli. fp_led_level ;
261
+ safe_cli. fp_brightness = cli. fp_brightness ;
262
+ safe_cli. kblight = cli. kblight ;
263
+ safe_cli. rgbkbd = cli. rgbkbd ;
264
+ // tablet_mode
265
+ // touchscreen_enable
266
+ safe_cli. stylus_battery = cli. stylus_battery ;
267
+ safe_cli. console = cli. console ;
268
+ safe_cli. reboot_ec = cli. reboot_ec ;
269
+ // ec_hib_delay
270
+ safe_cli. hash = cli. hash ;
271
+ safe_cli. pd_addrs = cli. pd_addrs ;
272
+ safe_cli. pd_ports = cli. pd_ports ;
273
+ safe_cli. help = cli. help ;
274
+ safe_cli. info = cli. info ;
275
+ // allupdate
276
+ safe_cli. paginate = cli. paginate ;
277
+ safe_cli. intrusion = cli. intrusion ;
278
+ // raw_command
279
+
280
+ safe_cli
281
+ } else {
282
+ cli
283
+ }
218
284
}
219
285
220
286
fn print_single_pd_details ( pd : & PdController ) {
0 commit comments