@@ -50,9 +50,12 @@ pub struct Flags {
5050pub fn parse < S : AsRef < OsStr > > ( args : & [ S ] ) -> Result < Flags > {
5151 let mut flags = Flags :: default ( ) ;
5252
53+ let mut version_short = false ;
54+ let mut version_long = false ;
5355 let args: Vec < String > = go_flag:: parse_args ( args, |f| {
5456 f. add_flag ( "debug" , & mut flags. debug ) ;
55- f. add_flag ( "v" , & mut flags. version ) ;
57+ f. add_flag ( "v" , & mut version_short) ;
58+ f. add_flag ( "version" , & mut version_long) ;
5659 f. add_flag ( "namespace" , & mut flags. namespace ) ;
5760 f. add_flag ( "id" , & mut flags. id ) ;
5861 f. add_flag ( "socket" , & mut flags. socket ) ;
@@ -63,6 +66,8 @@ pub fn parse<S: AsRef<OsStr>>(args: &[S]) -> Result<Flags> {
6366 } )
6467 . map_err ( |e| Error :: InvalidArgument ( e. to_string ( ) ) ) ?;
6568
69+ flags. version = version_short || version_long;
70+
6671 if let Some ( action) = args. first ( ) {
6772 flags. action = action. into ( ) ;
6873 }
@@ -96,6 +101,7 @@ mod tests {
96101 let flags = parse ( & args) . unwrap ( ) ;
97102
98103 assert ! ( flags. debug) ;
104+ assert ! ( !flags. version) ;
99105 assert_eq ! ( flags. id, "123" ) ;
100106 assert_eq ! ( flags. namespace, "default" ) ;
101107 assert_eq ! ( flags. socket, "/path/to/socket" ) ;
@@ -125,4 +131,16 @@ mod tests {
125131 assert_eq ! ( flags. action, "start" ) ;
126132 assert_eq ! ( flags. id, "" ) ;
127133 }
134+
135+ #[ test]
136+ fn parse_version_long_flag ( ) {
137+ let flags = parse ( & [ "-version" ] ) . unwrap ( ) ;
138+ assert ! ( flags. version) ;
139+ }
140+
141+ #[ test]
142+ fn parse_version_short_flag ( ) {
143+ let flags = parse ( & [ "-v" ] ) . unwrap ( ) ;
144+ assert ! ( flags. version) ;
145+ }
128146}
0 commit comments