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