11use std:: io:: { Write , stdout} ;
22
3- use coreutils:: { Result , help_text , version_text } ;
3+ use coreutils:: { Result , cli } ;
44use rustix:: system:: uname;
5- use sap:: {
6- Argument :: { Long , Short } ,
7- Parser ,
8- } ;
95
106bitflags:: bitflags! {
117 #[ rustfmt:: skip]
@@ -21,42 +17,25 @@ bitflags::bitflags! {
2117 }
2218}
2319
24- const VERSION : & str = version_text ! ( "uname" ) ;
25- const HELP : & str = help_text ! ( "uname" ) ;
26-
2720fn main ( ) -> Result {
2821 let mut info_mask = Info :: empty ( ) ;
2922 let mut stdout = stdout ( ) ;
3023
31- let mut arg_parser = Parser :: from_env ( ) ?;
32-
33- while let Some ( arg) = arg_parser. forward ( ) ? {
34- match arg {
35- Long ( "version" ) => {
36- stdout. write_all ( VERSION . as_bytes ( ) ) ?;
37- stdout. flush ( ) ?;
38- return Ok ( ( ) ) ;
39- }
40- Long ( "help" ) => {
41- stdout. write_all ( HELP . as_bytes ( ) ) ?;
42- stdout. flush ( ) ?;
43- return Ok ( ( ) ) ;
44- }
45- Short ( 'a' ) | Long ( "all" ) => {
46- info_mask = Info :: all ( ) ;
47- }
48- Short ( 's' ) | Long ( "kernel-name" ) => info_mask |= Info :: KERNEL_NAME ,
49- Short ( 'n' ) | Long ( "nodename" ) => info_mask |= Info :: NODENAME ,
50- Short ( 'r' ) | Long ( "kernel-release" ) => info_mask |= Info :: KERNEL_RELEASE ,
51- Short ( 'v' ) | Long ( "kernel-version" ) => info_mask |= Info :: KERNEL_VERSION ,
52- Short ( 'm' ) | Long ( "machine" ) => info_mask |= Info :: MACHINE ,
53- Short ( 'p' ) | Long ( "processor" ) => info_mask |= Info :: PROCESSOR ,
54- Short ( 'i' ) | Long ( "hardware-platform" ) => info_mask |= Info :: HARDWARE_PLATFORM ,
55- Short ( 'o' ) | Long ( "operating-system" ) => info_mask |= Info :: OPERATING_SYSTEM ,
56-
57- argument => return Err ( argument. into_error ( None ) . into ( ) ) ,
24+ cli ! {
25+ "uname" , stdout, while ,
26+ Short ( 'a' ) | Long ( "all" ) => {
27+ info_mask = Info :: all( ) ;
5828 }
59- }
29+ Short ( 's' ) | Long ( "kernel-name" ) => info_mask |= Info :: KERNEL_NAME
30+ Short ( 'n' ) | Long ( "nodename" ) => info_mask |= Info :: NODENAME
31+ Short ( 'r' ) | Long ( "kernel-release" ) => info_mask |= Info :: KERNEL_RELEASE
32+ Short ( 'v' ) | Long ( "kernel-version" ) => info_mask |= Info :: KERNEL_VERSION
33+ Short ( 'm' ) | Long ( "machine" ) => info_mask |= Info :: MACHINE
34+ Short ( 'p' ) | Long ( "processor" ) => info_mask |= Info :: PROCESSOR
35+ Short ( 'i' ) | Long ( "hardware-platform" ) => info_mask |= Info :: HARDWARE_PLATFORM
36+ Short ( 'o' ) | Long ( "operating-system" ) => info_mask |= Info :: OPERATING_SYSTEM
37+ arg => return Err ( arg. into_error( None ) . into( ) )
38+ } ;
6039
6140 if info_mask. is_empty ( ) {
6241 info_mask = Info :: KERNEL_NAME ;
0 commit comments