@@ -87,8 +87,8 @@ pub(crate) struct ConnectArgs {
8787 #[ arg( long, value_enum, default_value_t = ConnectArgs :: default_os( ) ) ]
8888 os : Os ,
8989
90- #[ arg( long, default_value_t = ConnectArgs :: default_os_version ( ) ) ]
91- os_version : String ,
90+ #[ arg( long, help = "If not specified, it will be computed based on the --os option" ) ]
91+ os_version : Option < String > ,
9292
9393 #[ arg( long, help = "Disable DTLS and ESP" ) ]
9494 no_dtls : bool ,
@@ -121,8 +121,12 @@ impl ConnectArgs {
121121 }
122122 }
123123
124- fn default_os_version ( ) -> String {
125- match ConnectArgs :: default_os ( ) {
124+ fn os_version ( & self ) -> String {
125+ if let Some ( os_version) = self . os_version . as_deref ( ) {
126+ return os_version. to_string ( ) ;
127+ }
128+
129+ match self . os {
126130 Os :: Linux => format ! ( "Linux {}" , whoami:: distro( ) ) ,
127131 Os :: Windows => String :: from ( "Microsoft Windows 11 Pro , 64-bit" ) ,
128132 Os :: Mac => String :: from ( "Apple Mac OS X 13.4.0" ) ,
@@ -149,7 +153,7 @@ impl<'a> ConnectHandler<'a> {
149153 GpParams :: builder ( )
150154 . user_agent ( & self . args . user_agent )
151155 . client_os ( ClientOs :: from ( & self . args . os ) )
152- . os_version ( self . args . os_version . clone ( ) )
156+ . os_version ( self . args . os_version ( ) )
153157 . ignore_tls_errors ( self . shared_args . ignore_tls_errors )
154158 . certificate ( self . args . certificate . clone ( ) )
155159 . sslkey ( self . args . sslkey . clone ( ) )
@@ -359,7 +363,7 @@ impl<'a> ConnectHandler<'a> {
359363 None
360364 } ;
361365
362- let os_version = self . args . os_version . clone ( ) ;
366+ let os_version = self . args . os_version ( ) ;
363367 let verbose = self . shared_args . verbose . to_verbose_arg ( ) ;
364368 let auth_launcher = SamlAuthLauncher :: new ( & self . args . server )
365369 . gateway ( is_gateway)
0 commit comments