Skip to main content

browser_paths/
browser_name.rs

1/// A unified platform
2#[derive(Clone, Copy, Debug, Eq, PartialEq)]
3pub enum Platform {
4    Linux,
5    MacOS,
6    Windows,
7}
8
9/// A unified browser kind
10#[derive(Clone, Copy, Debug, Eq, PartialEq)]
11pub enum BrowserKind {
12    Chrome,
13    Edge,
14}
15
16/// A unified browser release channel
17#[derive(Clone, Copy, Debug, Eq, PartialEq)]
18pub enum BrowserChannel {
19    Stable,
20    Dev,
21    Beta,
22    Canary,
23}
24
25#[derive(Clone, Copy, Debug)]
26pub struct BrowserName(pub Platform, pub BrowserKind, pub BrowserChannel);
27
28impl BrowserName {
29    pub fn to_str(&self) -> &'static str {
30        match (self.0, self.1, self.2) {
31            (Platform::Linux, BrowserKind::Chrome, BrowserChannel::Beta) => "google-chrome-beta",
32            (Platform::Linux, BrowserKind::Chrome, BrowserChannel::Stable) => {
33                "google-chrome-stable"
34            }
35            (Platform::Linux, BrowserKind::Chrome, BrowserChannel::Dev) => "google-chrome-unstable",
36            (Platform::Linux, BrowserKind::Chrome, BrowserChannel::Canary) => {
37                "google-chrome-canary"
38            }
39            (Platform::MacOS, BrowserKind::Chrome, BrowserChannel::Beta) => "Google Chrome Beta",
40            (Platform::MacOS, BrowserKind::Chrome, BrowserChannel::Stable) => "Google Chrome",
41            (Platform::MacOS, BrowserKind::Chrome, BrowserChannel::Dev) => "Google Chrome Dev",
42            (Platform::MacOS, BrowserKind::Chrome, BrowserChannel::Canary) => {
43                "Google Chrome Canary"
44            }
45            (Platform::Windows, BrowserKind::Chrome, BrowserChannel::Beta) => "Chrome Beta",
46            (Platform::Windows, BrowserKind::Chrome, BrowserChannel::Stable) => "Chrome",
47            (Platform::Windows, BrowserKind::Chrome, BrowserChannel::Dev) => "Chrome Dev",
48            (Platform::Windows, BrowserKind::Chrome, BrowserChannel::Canary) => "Chrome Canary",
49            (Platform::Linux, BrowserKind::Edge, BrowserChannel::Beta) => "microsoft-edge-beta",
50            (Platform::Linux, BrowserKind::Edge, BrowserChannel::Stable) => "microsoft-edge-stable",
51            (Platform::Linux, BrowserKind::Edge, BrowserChannel::Dev) => "microsoft-edge-dev",
52            (Platform::Linux, BrowserKind::Edge, BrowserChannel::Canary) => "microsoft-edge-canary",
53            (Platform::MacOS, BrowserKind::Edge, BrowserChannel::Beta) => "Microsoft Edge Beta",
54            (Platform::MacOS, BrowserKind::Edge, BrowserChannel::Stable) => "Microsoft Edge",
55            (Platform::MacOS, BrowserKind::Edge, BrowserChannel::Dev) => "Microsoft Edge Dev",
56            (Platform::MacOS, BrowserKind::Edge, BrowserChannel::Canary) => "Microsoft Edge Canary",
57            (Platform::Windows, BrowserKind::Edge, BrowserChannel::Beta) => "Edge Beta",
58            (Platform::Windows, BrowserKind::Edge, BrowserChannel::Stable) => "Edge",
59            (Platform::Windows, BrowserKind::Edge, BrowserChannel::Dev) => "Edge Dev",
60            (Platform::Windows, BrowserKind::Edge, BrowserChannel::Canary) => "Edge Canary",
61        }
62    }
63}