mirror of
https://github.com/microsoft/vscode.git
synced 2026-04-22 01:29:04 +01:00
move cli to top level
This commit is contained in:
104
cli/src/options.rs
Normal file
104
cli/src/options.rs
Normal file
@@ -0,0 +1,104 @@
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
use std::fmt;
|
||||
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
#[derive(clap::ArgEnum, Copy, Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
||||
pub enum Quality {
|
||||
#[serde(rename = "stable")]
|
||||
Stable,
|
||||
#[serde(rename = "exploration")]
|
||||
Exploration,
|
||||
#[serde(other)]
|
||||
Insiders,
|
||||
}
|
||||
|
||||
impl Quality {
|
||||
/// Lowercased name in paths and protocol
|
||||
pub fn get_machine_name(&self) -> &'static str {
|
||||
match self {
|
||||
Quality::Insiders => "insiders",
|
||||
Quality::Exploration => "exploration",
|
||||
Quality::Stable => "stable",
|
||||
}
|
||||
}
|
||||
|
||||
/// Uppercased display name for humans
|
||||
pub fn get_capitalized_name(&self) -> &'static str {
|
||||
match self {
|
||||
Quality::Insiders => "Insiders",
|
||||
Quality::Exploration => "Exploration",
|
||||
Quality::Stable => "Stable",
|
||||
}
|
||||
}
|
||||
|
||||
pub fn get_app_name(&self) -> &'static str {
|
||||
match self {
|
||||
Quality::Insiders => "Visual Studio Code Insiders",
|
||||
Quality::Exploration => "Visual Studio Code Exploration",
|
||||
Quality::Stable => "Visual Studio Code",
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(target_os = "windows")]
|
||||
pub fn server_entrypoint(&self) -> &'static str {
|
||||
match self {
|
||||
Quality::Insiders => "code-server-insiders.cmd",
|
||||
Quality::Exploration => "code-server-exploration.cmd",
|
||||
Quality::Stable => "code-server.cmd",
|
||||
}
|
||||
}
|
||||
#[cfg(not(target_os = "windows"))]
|
||||
pub fn server_entrypoint(&self) -> &'static str {
|
||||
match self {
|
||||
Quality::Insiders => "code-server-insiders",
|
||||
Quality::Exploration => "code-server-exploration",
|
||||
Quality::Stable => "code-server",
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl fmt::Display for Quality {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
write!(f, "{}", self.get_capitalized_name())
|
||||
}
|
||||
}
|
||||
|
||||
impl TryFrom<&str> for Quality {
|
||||
type Error = String;
|
||||
|
||||
fn try_from(s: &str) -> Result<Self, Self::Error> {
|
||||
match s {
|
||||
"stable" => Ok(Quality::Stable),
|
||||
"insiders" => Ok(Quality::Insiders),
|
||||
"exploration" => Ok(Quality::Exploration),
|
||||
_ => Err(format!(
|
||||
"Unknown quality: {}. Must be one of stable, insiders, or exploration.",
|
||||
s
|
||||
)),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(clap::ArgEnum, Copy, Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
||||
pub enum TelemetryLevel {
|
||||
Off,
|
||||
Crash,
|
||||
Error,
|
||||
All,
|
||||
}
|
||||
|
||||
impl fmt::Display for TelemetryLevel {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
match self {
|
||||
TelemetryLevel::Off => write!(f, "off"),
|
||||
TelemetryLevel::Crash => write!(f, "crash"),
|
||||
TelemetryLevel::Error => write!(f, "error"),
|
||||
TelemetryLevel::All => write!(f, "all"),
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user