1#[derive(Clone, Copy, Debug, Eq, PartialEq)]
3pub enum Platform {
4 Linux,
5 MacOS,
6 Windows,
7}
8
9#[derive(Clone, Copy, Debug, Eq, PartialEq)]
11pub enum BrowserKind {
12 Chrome,
13 Edge,
14}
15
16#[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}