channel.rs

 1use std::env;
 2
 3use lazy_static::lazy_static;
 4
 5lazy_static! {
 6    pub static ref RELEASE_CHANNEL_NAME: String = if cfg!(debug_assertions) {
 7        env::var("ZED_RELEASE_CHANNEL")
 8            .unwrap_or_else(|_| include_str!("../../zed/RELEASE_CHANNEL").to_string())
 9    } else {
10        include_str!("../../zed/RELEASE_CHANNEL").to_string()
11    };
12    pub static ref RELEASE_CHANNEL: ReleaseChannel = match RELEASE_CHANNEL_NAME.as_str() {
13        "dev" => ReleaseChannel::Dev,
14        "preview" => ReleaseChannel::Preview,
15        "stable" => ReleaseChannel::Stable,
16        _ => panic!("invalid release channel {}", *RELEASE_CHANNEL_NAME),
17    };
18}
19
20#[derive(Copy, Clone, PartialEq, Eq, Default)]
21pub enum ReleaseChannel {
22    #[default]
23    Dev,
24    Preview,
25    Stable,
26}
27
28impl ReleaseChannel {
29    pub fn display_name(&self) -> &'static str {
30        match self {
31            ReleaseChannel::Dev => "Zed Dev",
32            ReleaseChannel::Preview => "Zed Preview",
33            ReleaseChannel::Stable => "Zed",
34        }
35    }
36
37    pub fn dev_name(&self) -> &'static str {
38        match self {
39            ReleaseChannel::Dev => "dev",
40            ReleaseChannel::Preview => "preview",
41            ReleaseChannel::Stable => "stable",
42        }
43    }
44}