Skip to main content

browser_paths/
browser_name.rs

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