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}