@@ -30,24 +30,28 @@ mod metadata;
30
30
{usage-heading} {usage}
31
31
{all-args}" ) ]
32
32
struct Cli {
33
- /// Browser type (e.g., chrome, firefox, edge)
34
- #[ clap( short, long, value_parser) ]
33
+ /// Browser name ( chrome, firefox, or edge)
34
+ #[ clap( short, long, value_parser, default_value = "" ) ]
35
35
browser : String ,
36
36
37
+ /// Driver name (chromedriver, geckodriver, or msedgedriver)
38
+ #[ clap( short, long, value_parser, default_value = "" ) ]
39
+ driver : String ,
40
+
37
41
/// Driver version (e.g., 106.0.5249.61, 0.31.0, etc.)
38
- #[ clap( short = 'D ' , long, value_parser, default_value = "" ) ]
42
+ #[ clap( short = 'v ' , long, value_parser, default_value = "" ) ]
39
43
driver_version : String ,
40
44
41
45
/// Major browser version (e.g., 105, 106, etc.)
42
46
#[ clap( short = 'B' , long, value_parser, default_value = "" ) ]
43
47
browser_version : String ,
44
48
45
49
/// Display DEBUG messages
46
- #[ clap( short, long) ]
50
+ #[ clap( short = 'D' , long) ]
47
51
debug : bool ,
48
52
49
53
/// Display TRACE messages
50
- #[ clap( short, long) ]
54
+ #[ clap( short = 'T' , long) ]
51
55
trace : bool ,
52
56
53
57
/// Clear driver cache
@@ -59,16 +63,20 @@ fn main() -> Result<(), Box<dyn Error>> {
59
63
let cli = Cli :: parse ( ) ;
60
64
setup_logging ( & cli) ;
61
65
let browser_name: String = cli. browser ;
66
+ let driver_name: String = cli. driver ;
62
67
let os = OS ;
63
68
let arch = ARCH ;
64
- let browser_manager: Box < dyn BrowserManager > = if browser_name. eq_ignore_ascii_case ( "chrome" ) {
69
+ let browser_manager: Box < dyn BrowserManager > = if browser_name. eq_ignore_ascii_case ( "chrome" )
70
+ || driver_name. eq_ignore_ascii_case ( "chromedriver" ) {
65
71
ChromeManager :: new ( )
66
- } else if browser_name. eq_ignore_ascii_case ( "firefox" ) {
72
+ } else if browser_name. eq_ignore_ascii_case ( "firefox" )
73
+ || driver_name. eq_ignore_ascii_case ( "geckodriver" ) {
67
74
FirefoxManager :: new ( )
68
- } else if browser_name. eq_ignore_ascii_case ( "edge" ) {
75
+ } else if browser_name. eq_ignore_ascii_case ( "edge" )
76
+ || driver_name. eq_ignore_ascii_case ( "msedgedriver" ) {
69
77
EdgeManager :: new ( )
70
78
} else {
71
- return Err ( format ! ( "Browser {} not supported" , browser_name ) ) ?;
79
+ return Err ( format ! ( "Invalid browser/driver name" ) ) ?;
72
80
} ;
73
81
74
82
if cli. clear_cache {
@@ -79,23 +87,23 @@ fn main() -> Result<(), Box<dyn Error>> {
79
87
let mut browser_version = cli. browser_version ;
80
88
81
89
if !driver_version. is_empty ( ) && !browser_version. is_empty ( ) {
82
- log:: warn!( "Ignoring --browser-version (since --driver-version is also used)" ) ;
90
+ log:: warn!( "Ignoring --browser-version (since --driver-version is also used)" ) ;
83
91
}
84
92
85
93
if driver_version. is_empty ( ) {
86
- if browser_version. is_empty ( ) {
87
- match browser_manager. get_browser_version ( os) {
88
- Some ( version) => {
89
- browser_version = version;
90
- log:: debug!( "Detected browser: {} {}" , browser_name, browser_version) ;
91
- }
92
- None => {
93
- log:: warn!( "The version of {} cannot be detected. Trying with latest driver version" , browser_name) ;
94
- }
94
+ if browser_version. is_empty ( ) {
95
+ match browser_manager. get_browser_version ( os) {
96
+ Some ( version) => {
97
+ browser_version = version;
98
+ log:: debug!( "Detected browser: {} {}" , browser_name, browser_version) ;
99
+ }
100
+ None => {
101
+ log:: warn!( "The version of {} cannot be detected. Trying with latest driver version" , browser_name) ;
102
+ }
103
+ }
95
104
}
96
- }
97
- driver_version = browser_manager. get_driver_version ( & browser_version, os) ?;
98
- log:: debug!( "Required driver: {} {}" , browser_manager. get_driver_name( ) , driver_version) ;
105
+ driver_version = browser_manager. get_driver_version ( & browser_version, os) ?;
106
+ log:: debug!( "Required driver: {} {}" , browser_manager. get_driver_name( ) , driver_version) ;
99
107
}
100
108
101
109
let driver_path = browser_manager. get_driver_path_in_cache ( & driver_version, os, arch) ;
@@ -134,4 +142,4 @@ fn setup_logging(cli: &Cli) {
134
142
)
135
143
} )
136
144
. init ( ) ;
137
- }
145
+ }
0 commit comments