75 lines
2.2 KiB
Rust
75 lines
2.2 KiB
Rust
mod config;
|
|
mod state;
|
|
|
|
use std::fmt;
|
|
|
|
pub use config::*;
|
|
pub use state::*;
|
|
|
|
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
|
|
pub enum Channel {
|
|
/// The official/first-party stable release.
|
|
Stable,
|
|
/// The official/first-party feature preview release.
|
|
Preview,
|
|
|
|
/// The internal-only nightly build.
|
|
Dev,
|
|
/// The internal-only HEAD build.
|
|
Local,
|
|
|
|
/// The open-source build of Warp.
|
|
Oss,
|
|
|
|
/// The integration test build.
|
|
Integration,
|
|
}
|
|
|
|
impl Channel {
|
|
/// Whether or not this channel is for internal use only
|
|
pub fn is_dogfood(&self) -> bool {
|
|
match self {
|
|
Channel::Dev | Channel::Local => true,
|
|
Channel::Stable | Channel::Preview | Channel::Integration | Channel::Oss => false,
|
|
}
|
|
}
|
|
|
|
/// Whether this channel honors the `--server-root-url` / `--ws-server-url` /
|
|
/// `--session-sharing-server-url` flags (and their `WARP_*` env-var equivalents).
|
|
///
|
|
/// Release channels (`Stable`, `Preview`, `Oss`) ignore these overrides so shipped
|
|
/// builds can't be redirected away from their baked-in server URLs. Internal-only channels
|
|
/// (`Dev`, `Local`, `Integration`) continue to honor them for local development and testing.
|
|
pub fn allows_server_url_overrides(&self) -> bool {
|
|
match self {
|
|
Channel::Dev | Channel::Local | Channel::Integration => true,
|
|
Channel::Stable | Channel::Preview | Channel::Oss => false,
|
|
}
|
|
}
|
|
|
|
/// Returns the CLI command name corresponding to this channel.
|
|
pub fn cli_command_name(&self) -> &'static str {
|
|
match self {
|
|
Channel::Stable => "oz",
|
|
Channel::Dev => "oz-dev",
|
|
Channel::Preview => "oz-preview",
|
|
Channel::Local => "oz-local",
|
|
Channel::Integration => "oz-integration",
|
|
Channel::Oss => "warp-oss",
|
|
}
|
|
}
|
|
}
|
|
|
|
impl fmt::Display for Channel {
|
|
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
|
f.write_str(match self {
|
|
Channel::Stable => "stable",
|
|
Channel::Preview => "preview",
|
|
Channel::Dev => "dev",
|
|
Channel::Integration => "integration",
|
|
Channel::Local => "local",
|
|
Channel::Oss => "warp-oss",
|
|
})
|
|
}
|
|
}
|