chore: pull more strings from the product.json (#166769)
Fixes the bulk of https://github.com/microsoft/vscode-cli/issues/560
This commit is contained in:
Родитель
384ba2454f
Коммит
796ee2bf3c
|
@ -44,7 +44,9 @@ const setLauncherEnvironmentVars = () => {
|
|||
['VSCODE_CLI_QUALITY', product.quality],
|
||||
['VSCODE_CLI_NAME_SHORT', product.nameShort],
|
||||
['VSCODE_CLI_NAME_LONG', product.nameLong],
|
||||
['VSCODE_CLI_QUALITYLESS_PRODUCT_NAME', product.nameLong.replace(/ - [a-z]+$/i, '')],
|
||||
['VSCODE_CLI_APPLICATION_NAME', product.applicationName],
|
||||
['VSCODE_CLI_EDITOR_WEB_URL', product.editorWebUrl],
|
||||
['VSCODE_CLI_COMMIT', commit],
|
||||
[
|
||||
'VSCODE_CLI_WIN32_APP_IDS',
|
||||
|
@ -52,6 +54,18 @@ const setLauncherEnvironmentVars = () => {
|
|||
.filter(([key]) => /^win32.*AppId$/.test(key))
|
||||
.map(([, value]) => String(value).replace(/[{}]/g, '')))),
|
||||
],
|
||||
[
|
||||
'VSCODE_CLI_NAME_LONG_MAP',
|
||||
!isOSS && JSON.stringify(makeQualityMap(json => json.nameLong)),
|
||||
],
|
||||
[
|
||||
'VSCODE_CLI_APPLICATION_NAME_MAP',
|
||||
!isOSS && JSON.stringify(makeQualityMap(json => json.applicationName)),
|
||||
],
|
||||
[
|
||||
'VSCODE_CLI_SERVER_NAME_MAP',
|
||||
!isOSS && JSON.stringify(makeQualityMap(json => json.serverApplicationName)),
|
||||
],
|
||||
[
|
||||
'VSCODE_CLI_QUALITY_DOWNLOAD_URIS',
|
||||
!isOSS && JSON.stringify(makeQualityMap(json => json.downloadUrl)),
|
||||
|
@ -67,4 +81,4 @@ const setLauncherEnvironmentVars = () => {
|
|||
if (require.main === module) {
|
||||
setLauncherEnvironmentVars();
|
||||
}
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlcGFyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInByZXBhcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Z0dBR2dHOztBQUVoRyxxREFBa0Q7QUFDbEQseUJBQXlCO0FBQ3pCLDZCQUE2QjtBQUM3QixxREFBcUQ7QUFFckQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pFLE1BQU0sUUFBUSxHQUFHLENBQUMsSUFBWSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFFN0UsSUFBSSxlQUF1QixDQUFDO0FBQzVCLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxLQUFLLEtBQUssSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDO0FBQ2xGLElBQUksS0FBSyxFQUFFO0lBQ1YsZUFBZSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0NBQ2xEO0tBQU07SUFDTixlQUFlLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBZSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0NBQzFGO0FBR0QsT0FBTyxDQUFDLEdBQUcsQ0FBQywyQkFBMkIsRUFBRSxlQUFlLENBQUMsQ0FBQztBQUMxRCxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDMUMsTUFBTSx1QkFBdUIsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxD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
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlcGFyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInByZXBhcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Z0dBR2dHOztBQUVoRyxxREFBa0Q7QUFDbEQseUJBQXlCO0FBQ3pCLDZCQUE2QjtBQUM3QixxREFBcUQ7QUFFckQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pFLE1BQU0sUUFBUSxHQUFHLENBQUMsSUFBWSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFFN0UsSUFBSSxlQUF1QixDQUFDO0FBQzVCLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxLQUFLLEtBQUssSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDO0FBQ2xGLElBQUksS0FBSyxFQUFFO0lBQ1YsZUFBZSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0NBQ2xEO0tBQU07SUFDTixlQUFlLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBZSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0NBQzFGO0FBR0QsT0FBTyxDQUFDLEdBQUcsQ0FBQywyQkFBMkIsRUFBRSxlQUFlLENBQUMsQ0FBQztBQUMxRCxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDMUMsTUFBTSx1QkFBdUIsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxD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
|
|
@ -48,7 +48,9 @@ const setLauncherEnvironmentVars = () => {
|
|||
['VSCODE_CLI_QUALITY', product.quality],
|
||||
['VSCODE_CLI_NAME_SHORT', product.nameShort],
|
||||
['VSCODE_CLI_NAME_LONG', product.nameLong],
|
||||
['VSCODE_CLI_QUALITYLESS_PRODUCT_NAME', product.nameLong.replace(/ - [a-z]+$/i, '')],
|
||||
['VSCODE_CLI_APPLICATION_NAME', product.applicationName],
|
||||
['VSCODE_CLI_EDITOR_WEB_URL', product.editorWebUrl],
|
||||
['VSCODE_CLI_COMMIT', commit],
|
||||
[
|
||||
'VSCODE_CLI_WIN32_APP_IDS',
|
||||
|
@ -58,13 +60,25 @@ const setLauncherEnvironmentVars = () => {
|
|||
.map(([, value]) => String(value).replace(/[{}]/g, ''))),
|
||||
),
|
||||
],
|
||||
[
|
||||
'VSCODE_CLI_NAME_LONG_MAP',
|
||||
!isOSS && JSON.stringify(makeQualityMap(json => json.nameLong)),
|
||||
],
|
||||
[
|
||||
'VSCODE_CLI_APPLICATION_NAME_MAP',
|
||||
!isOSS && JSON.stringify(makeQualityMap(json => json.applicationName)),
|
||||
],
|
||||
[
|
||||
'VSCODE_CLI_SERVER_NAME_MAP',
|
||||
!isOSS && JSON.stringify(makeQualityMap(json => json.serverApplicationName)),
|
||||
],
|
||||
[
|
||||
'VSCODE_CLI_QUALITY_DOWNLOAD_URIS',
|
||||
!isOSS && JSON.stringify(makeQualityMap(json => json.downloadUrl)),
|
||||
],
|
||||
]);
|
||||
|
||||
console.log(JSON.stringify([...vars].reduce((obj, kv) => ({...obj, [kv[0]]: kv[1]}), {})));
|
||||
console.log(JSON.stringify([...vars].reduce((obj, kv) => ({ ...obj, [kv[0]]: kv[1] }), {})));
|
||||
|
||||
for (const [key, value] of vars) {
|
||||
if (value) {
|
||||
|
|
|
@ -232,6 +232,7 @@ dependencies = [
|
|||
"chrono",
|
||||
"clap",
|
||||
"clap_lex",
|
||||
"const_format",
|
||||
"dialoguer",
|
||||
"dirs 4.0.0",
|
||||
"flate2",
|
||||
|
@ -300,6 +301,26 @@ dependencies = [
|
|||
"winapi",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "const_format"
|
||||
version = "0.2.30"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7309d9b4d3d2c0641e018d449232f2e28f1b22933c137f157d3dbc14228b8c0e"
|
||||
dependencies = [
|
||||
"const_format_proc_macros",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "const_format_proc_macros"
|
||||
version = "0.2.29"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d897f47bf7270cf70d370f8f98c1abb6d2d4cf60a6845d30e05bfb90c6568650"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"unicode-xid",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "core-foundation"
|
||||
version = "0.9.3"
|
||||
|
|
|
@ -46,6 +46,7 @@ clap_lex = "0.2"
|
|||
url = "2.3"
|
||||
async-trait = "0.1"
|
||||
log = "0.4"
|
||||
const_format = "0.2"
|
||||
|
||||
[target.'cfg(windows)'.dependencies]
|
||||
windows-service = "0.5"
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
use crate::{
|
||||
constants::get_default_user_agent,
|
||||
constants::{get_default_user_agent, PRODUCT_NAME_LONG},
|
||||
info, log,
|
||||
state::{LauncherPaths, PersistedState},
|
||||
trace,
|
||||
|
@ -500,7 +500,7 @@ impl Auth {
|
|||
}
|
||||
|
||||
let provider = prompt_options(
|
||||
"How would you like to log in to VS Code?",
|
||||
format!("How would you like to log in to {}?", PRODUCT_NAME_LONG),
|
||||
&[AuthProvider::Microsoft, AuthProvider::Github],
|
||||
)?;
|
||||
|
||||
|
|
|
@ -157,12 +157,7 @@ async fn start_code(context: CommandContext, args: Vec<String>) -> Result<i32, A
|
|||
.args(args)
|
||||
.status()
|
||||
.map(|s| s.code().unwrap_or(1))
|
||||
.map_err(|e| {
|
||||
wrap(
|
||||
e,
|
||||
format!("error running VS Code from {}", binary.display()),
|
||||
)
|
||||
})?;
|
||||
.map_err(|e| wrap(e, format!("error running editor from {}", binary.display())))?;
|
||||
|
||||
Ok(code)
|
||||
}
|
||||
|
|
|
@ -7,21 +7,29 @@ use std::{fmt, path::PathBuf};
|
|||
|
||||
use crate::{constants, log, options, tunnels::code_server::CodeServerArgs};
|
||||
use clap::{ArgEnum, Args, Parser, Subcommand};
|
||||
use const_format::concatcp;
|
||||
|
||||
const TEMPLATE: &str = "
|
||||
Visual Studio Code CLI - {version}
|
||||
const CLI_NAME: &str = concatcp!(constants::PRODUCT_NAME_LONG, " CLI");
|
||||
const TEMPLATE: &str = concatcp!(
|
||||
CLI_NAME,
|
||||
" - {version}
|
||||
|
||||
Usage: code-insiders.exe [options][paths...]
|
||||
Usage: ",
|
||||
constants::APPLICATION_NAME,
|
||||
" [options][paths...]
|
||||
|
||||
To read output from another program, append '-' (e.g. 'echo Hello World | code-insiders.exe -')
|
||||
To read output from another program, append '-' (e.g. 'echo Hello World | ",
|
||||
constants::APPLICATION_NAME,
|
||||
" -')
|
||||
|
||||
{all-args}";
|
||||
{all-args}"
|
||||
);
|
||||
|
||||
#[derive(Parser, Debug, Default)]
|
||||
#[clap(
|
||||
help_template = TEMPLATE,
|
||||
long_about = None,
|
||||
name = "Visual Studio Code CLI",
|
||||
name = CLI_NAME,
|
||||
version = match constants::VSCODE_CLI_VERSION { Some(v) => v, None => "dev" },
|
||||
)]
|
||||
pub struct IntegratedCli {
|
||||
|
@ -53,7 +61,7 @@ pub struct CliCore {
|
|||
#[clap(
|
||||
help_template = TEMPLATE,
|
||||
long_about = None,
|
||||
name = "Visual Studio Code CLI",
|
||||
name = CLI_NAME,
|
||||
version = match constants::VSCODE_CLI_VERSION { Some(v) => v, None => "dev" },
|
||||
)]
|
||||
pub struct StandaloneCli {
|
||||
|
@ -115,7 +123,7 @@ impl<'a> From<&'a CliCore> for CodeServerArgs {
|
|||
|
||||
#[derive(Subcommand, Debug, Clone)]
|
||||
pub enum StandaloneCommands {
|
||||
/// Updates the VS Code CLI.
|
||||
/// Updates the CLI.
|
||||
Update(StandaloneUpdateArgs),
|
||||
}
|
||||
|
||||
|
@ -133,14 +141,14 @@ pub enum Commands {
|
|||
/// Run `code tunnel --help` for more usage info.
|
||||
Tunnel(TunnelArgs),
|
||||
|
||||
/// Manage VS Code extensions.
|
||||
/// Manage editor extensions.
|
||||
#[clap(name = "ext")]
|
||||
Extension(ExtensionArgs),
|
||||
|
||||
/// Print process usage and diagnostics information.
|
||||
Status,
|
||||
|
||||
/// Changes the version of VS Code you're using.
|
||||
/// Changes the version of the editor you're using.
|
||||
Version(VersionArgs),
|
||||
}
|
||||
|
||||
|
@ -251,16 +259,16 @@ pub struct VersionArgs {
|
|||
|
||||
#[derive(Subcommand, Debug, Clone)]
|
||||
pub enum VersionSubcommand {
|
||||
/// Switches the instance of VS Code in use.
|
||||
/// Switches the version of the editor in use.
|
||||
Use(UseVersionArgs),
|
||||
|
||||
/// Shows the currently configured VS Code version.
|
||||
/// Shows the currently configured editor version.
|
||||
Show,
|
||||
}
|
||||
|
||||
#[derive(Args, Debug, Clone)]
|
||||
pub struct UseVersionArgs {
|
||||
/// The version of VS Code you want to use. Can be "stable", "insiders",
|
||||
/// The version of the editor you want to use. Can be "stable", "insiders",
|
||||
/// a version number, or an absolute path to an existing install.
|
||||
#[clap(value_name = "stable | insiders | x.y.z | path")]
|
||||
pub name: String,
|
||||
|
@ -346,7 +354,7 @@ impl EditorOptions {
|
|||
}
|
||||
}
|
||||
|
||||
/// Arguments applicable whenever VS Code desktop is launched
|
||||
/// Arguments applicable whenever the desktop editor is launched
|
||||
#[derive(Args, Debug, Default, Clone)]
|
||||
pub struct DesktopCodeOptions {
|
||||
/// Set the root path for extensions.
|
||||
|
@ -354,11 +362,11 @@ pub struct DesktopCodeOptions {
|
|||
pub extensions_dir: Option<String>,
|
||||
|
||||
/// Specifies the directory that user data is kept in. Can be used to
|
||||
/// open multiple distinct instances of Code.
|
||||
/// open multiple distinct instances of the editor.
|
||||
#[clap(long, value_name = "dir")]
|
||||
pub user_data_dir: Option<String>,
|
||||
|
||||
/// Sets the VS Code version to use for this command. The preferred version
|
||||
/// Sets the editor version to use for this command. The preferred version
|
||||
/// can be persisted with `code version use <version>`. Can be "stable",
|
||||
/// "insiders", a version number, or an absolute path to an existing install.
|
||||
#[clap(long, value_name = "stable | insiders | x.y.z | path")]
|
||||
|
@ -386,7 +394,7 @@ impl DesktopCodeOptions {
|
|||
|
||||
#[derive(Args, Debug, Default, Clone)]
|
||||
pub struct GlobalOptions {
|
||||
/// Directory where CLI metadata, such as VS Code installations, should be stored.
|
||||
/// Directory where CLI metadata should be stored.
|
||||
#[clap(long, env = "VSCODE_CLI_DATA_DIR", global = true)]
|
||||
pub cli_data_dir: Option<String>,
|
||||
|
||||
|
@ -464,7 +472,7 @@ pub struct EditorTroubleshooting {
|
|||
#[clap(long, value_name = "memory")]
|
||||
pub max_memory: Option<usize>,
|
||||
|
||||
/// Shows all telemetry events which VS code collects.
|
||||
/// Shows all telemetry events which the editor collects.
|
||||
#[clap(long)]
|
||||
pub telemetry: bool,
|
||||
}
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
use indicatif::ProgressBar;
|
||||
|
||||
use crate::{
|
||||
constants::PRODUCT_NAME_LONG,
|
||||
self_update::SelfUpdate,
|
||||
update_service::UpdateService,
|
||||
util::{errors::AnyError, http::ReqwestSimpleHttp, input::ProgressBarReporter},
|
||||
|
@ -23,8 +24,8 @@ pub async fn update(ctx: CommandContext, args: StandaloneUpdateArgs) -> Result<i
|
|||
let current_version = update_service.get_current_release().await?;
|
||||
if update_service.is_up_to_date_with(¤t_version) {
|
||||
ctx.log.result(format!(
|
||||
"VS Code is already to to date ({})",
|
||||
current_version.commit
|
||||
"{} is already to to date ({})",
|
||||
PRODUCT_NAME_LONG, current_version.commit
|
||||
));
|
||||
return Ok(1);
|
||||
}
|
||||
|
|
|
@ -58,9 +58,5 @@ pub async fn show(ctx: CommandContext) -> Result<i32, AnyError> {
|
|||
}
|
||||
|
||||
fn print_now_using(log: &log::Logger, version: &RequestedVersion, path: &Path) {
|
||||
log.result(&format!(
|
||||
"Now using VS Code {} from {}",
|
||||
version,
|
||||
path.display()
|
||||
));
|
||||
log.result(&format!("Now using {} from {}", version, path.display()));
|
||||
}
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
|
||||
use std::collections::HashMap;
|
||||
|
||||
use const_format::concatcp;
|
||||
use lazy_static::lazy_static;
|
||||
|
||||
use crate::options::Quality;
|
||||
|
@ -28,13 +29,30 @@ pub const VSCODE_CLI_UPDATE_ENDPOINT: Option<&'static str> =
|
|||
|
||||
pub const TUNNEL_SERVICE_USER_AGENT_ENV_VAR: &str = "TUNNEL_SERVICE_USER_AGENT";
|
||||
|
||||
const MAYBE_APPLICATION_NAME: Option<&'static str> = option_env!("VSCODE_CLI_APPLICATION_NAME");
|
||||
const MAYBE_PRODUCT_NAME_LONG: Option<&'static str> = option_env!("VSCODE_CLI_NAME_LONG");
|
||||
// JSON map of quality names to arrays of app IDs used for them, for example, `{"stable":["ABC123"]}`
|
||||
const MAYBE_CLI_WIN32_APP_IDS: Option<&'static str> = option_env!("VSCODE_CLI_WIN32_APP_IDS");
|
||||
// JSON map of quality names to download URIs
|
||||
const MAYBE_CLI_QUALITY_DOWNLOAD_URIS: Option<&'static str> =
|
||||
option_env!("VSCODE_CLI_QUALITY_DOWNLOAD_URIS");
|
||||
/// Application name as it appears on the CLI.
|
||||
pub const APPLICATION_NAME: &str = match option_env!("VSCODE_CLI_APPLICATION_NAME") {
|
||||
Some(n) => n,
|
||||
None => "code",
|
||||
};
|
||||
|
||||
/// Full name of the product with its version.
|
||||
pub const PRODUCT_NAME_LONG: &str = match option_env!("VSCODE_CLI_NAME_LONG") {
|
||||
Some(n) => n,
|
||||
None => "Code - OSS",
|
||||
};
|
||||
|
||||
/// Name of the application without quality information.
|
||||
pub const QUALITYLESS_PRODUCT_NAME: &str =
|
||||
match option_env!("VSCODE_CLI_QUALITYLESS_PRODUCT_NAME") {
|
||||
Some(n) => n,
|
||||
None => "Code",
|
||||
};
|
||||
|
||||
/// Name of the application without quality information.
|
||||
pub const QUALITYLESS_SERVER_NAME: &str = concatcp!(QUALITYLESS_PRODUCT_NAME, " Server");
|
||||
|
||||
/// Web URL the editor is hosted at. For VS Code, this is vscode.dev.
|
||||
pub const EDITOR_WEB_URL: Option<&'static str> = option_env!("VSCODE_CLI_EDITOR_WEB_URL");
|
||||
|
||||
pub fn get_default_user_agent() -> String {
|
||||
format!(
|
||||
|
@ -49,11 +67,24 @@ lazy_static! {
|
|||
Ok(ua) if !ua.is_empty() => format!("{} {}", ua, get_default_user_agent()),
|
||||
_ => get_default_user_agent(),
|
||||
};
|
||||
|
||||
/// Map of quality names to arrays of app IDs used for them, for example, `{"stable":["ABC123"]}`
|
||||
pub static ref WIN32_APP_IDS: Option<HashMap<Quality, Vec<String>>> =
|
||||
MAYBE_CLI_WIN32_APP_IDS.and_then(|s| serde_json::from_str(s).unwrap());
|
||||
option_env!("VSCODE_CLI_WIN32_APP_IDS").and_then(|s| serde_json::from_str(s).unwrap());
|
||||
|
||||
/// Map of quality names to desktop download URIs
|
||||
pub static ref QUALITY_DOWNLOAD_URIS: Option<HashMap<Quality, String>> =
|
||||
MAYBE_CLI_QUALITY_DOWNLOAD_URIS.and_then(|s| serde_json::from_str(s).unwrap());
|
||||
pub static ref PRODUCT_NAME_LONG: &'static str =
|
||||
MAYBE_PRODUCT_NAME_LONG.unwrap_or("Code - OSS");
|
||||
pub static ref APPLICATION_NAME: &'static str = MAYBE_APPLICATION_NAME.unwrap_or("code");
|
||||
option_env!("VSCODE_CLI_QUALITY_DOWNLOAD_URIS").and_then(|s| serde_json::from_str(s).unwrap());
|
||||
|
||||
/// Map of qualities to the long name of the app in that quality
|
||||
pub static ref PRODUCT_NAME_LONG_MAP: Option<HashMap<Quality, String>> =
|
||||
option_env!("VSCODE_CLI_NAME_LONG_MAP").and_then(|s| serde_json::from_str(s).unwrap());
|
||||
|
||||
/// Map of qualities to the application name
|
||||
pub static ref APPLICATION_NAME_MAP: Option<HashMap<Quality, String>> =
|
||||
option_env!("VSCODE_CLI_APPLICATION_NAME_MAP").and_then(|s| serde_json::from_str(s).unwrap());
|
||||
|
||||
/// Map of qualities to the server name
|
||||
pub static ref SERVER_NAME_MAP: Option<HashMap<Quality, String>> =
|
||||
option_env!("VSCODE_CLI_SERVER_NAME_MAP").and_then(|s| serde_json::from_str(s).unwrap());
|
||||
}
|
||||
|
|
|
@ -14,7 +14,7 @@ use regex::Regex;
|
|||
use serde::{Deserialize, Serialize};
|
||||
|
||||
use crate::{
|
||||
constants::QUALITY_DOWNLOAD_URIS,
|
||||
constants::{QUALITYLESS_PRODUCT_NAME, QUALITY_DOWNLOAD_URIS},
|
||||
log,
|
||||
options::{self, Quality},
|
||||
state::{LauncherPaths, PersistedState},
|
||||
|
@ -249,7 +249,10 @@ impl CodeVersionManager {
|
|||
/// Shows a nice UI prompt to users asking them if they want to install the
|
||||
/// requested version.
|
||||
pub fn prompt_to_install(version: &RequestedVersion) {
|
||||
println!("No installation of VS Code {} was found.", version);
|
||||
println!(
|
||||
"No installation of {} {} was found.",
|
||||
QUALITYLESS_PRODUCT_NAME, version
|
||||
);
|
||||
|
||||
if let RequestedVersion::Quality(quality) = version {
|
||||
if let Some(uri) = QUALITY_DOWNLOAD_URIS.as_ref().and_then(|m| m.get(quality)) {
|
||||
|
@ -265,14 +268,14 @@ pub fn prompt_to_install(version: &RequestedVersion) {
|
|||
}
|
||||
|
||||
println!();
|
||||
println!("If you already installed VS Code and we didn't detect it, run `{} --install-dir /path/to/installation`", version.get_command());
|
||||
println!("If you already installed {} and we didn't detect it, run `{} --install-dir /path/to/installation`", QUALITYLESS_PRODUCT_NAME, version.get_command());
|
||||
}
|
||||
|
||||
#[cfg(target_os = "macos")]
|
||||
fn detect_installed_program(log: &log::Logger, quality: Quality) -> io::Result<Vec<PathBuf>> {
|
||||
// easy, fast detection for where apps are usually installed
|
||||
let mut probable = PathBuf::from("/Applications");
|
||||
let app_name = quality.get_macos_app_name();
|
||||
let app_name = quality.get_long_name();
|
||||
probable.push(format!("{}.app", app_name));
|
||||
if probable.exists() {
|
||||
probable.extend(["Contents/Resources", "app", "bin", "code"]);
|
||||
|
@ -378,11 +381,7 @@ fn detect_installed_program(_log: &log::Logger, quality: Quality) -> io::Result<
|
|||
[
|
||||
location.as_str(),
|
||||
"bin",
|
||||
match quality {
|
||||
Quality::Exploration => "code-exploration.cmd",
|
||||
Quality::Insiders => "code-insiders.cmd",
|
||||
Quality::Stable => "code.cmd",
|
||||
},
|
||||
&format!("{}.cmd", quality.get_application_name()),
|
||||
]
|
||||
.iter()
|
||||
.collect(),
|
||||
|
@ -407,7 +406,7 @@ fn detect_installed_program(log: &log::Logger, quality: Quality) -> io::Result<V
|
|||
}
|
||||
};
|
||||
|
||||
let name = quality.get_commandline_name();
|
||||
let name = quality.get_application_name();
|
||||
let current_exe = std::env::current_exe().expect("expected to read current exe");
|
||||
let mut output = vec![];
|
||||
for dir in path.split(':') {
|
||||
|
|
|
@ -12,8 +12,8 @@ pub mod log;
|
|||
pub mod commands;
|
||||
pub mod desktop;
|
||||
pub mod options;
|
||||
pub mod self_update;
|
||||
pub mod state;
|
||||
pub mod tunnels;
|
||||
pub mod self_update;
|
||||
pub mod update_service;
|
||||
pub mod util;
|
||||
|
|
|
@ -7,6 +7,8 @@ use std::fmt;
|
|||
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
use crate::constants::{APPLICATION_NAME_MAP, PRODUCT_NAME_LONG_MAP, SERVER_NAME_MAP};
|
||||
|
||||
#[derive(clap::ArgEnum, Copy, Clone, Debug, Hash, PartialEq, Eq, Serialize, Deserialize)]
|
||||
pub enum Quality {
|
||||
#[serde(rename = "stable")]
|
||||
|
@ -18,7 +20,7 @@ pub enum Quality {
|
|||
}
|
||||
|
||||
impl Quality {
|
||||
/// Lowercased name in paths and protocol
|
||||
/// Lowercased quality name in paths and protocol
|
||||
pub fn get_machine_name(&self) -> &'static str {
|
||||
match self {
|
||||
Quality::Insiders => "insiders",
|
||||
|
@ -27,7 +29,7 @@ impl Quality {
|
|||
}
|
||||
}
|
||||
|
||||
/// Uppercased display name for humans
|
||||
/// Uppercased quality display name for humans
|
||||
pub fn get_capitalized_name(&self) -> &'static str {
|
||||
match self {
|
||||
Quality::Insiders => "Insiders",
|
||||
|
@ -36,37 +38,38 @@ impl Quality {
|
|||
}
|
||||
}
|
||||
|
||||
pub fn get_macos_app_name(&self) -> &'static str {
|
||||
match self {
|
||||
Quality::Insiders => "Visual Studio Code - Insiders",
|
||||
Quality::Exploration => "Visual Studio Code - Exploration",
|
||||
Quality::Stable => "Visual Studio Code",
|
||||
}
|
||||
/// Product long name
|
||||
pub fn get_long_name(&self) -> &'static str {
|
||||
PRODUCT_NAME_LONG_MAP
|
||||
.as_ref()
|
||||
.and_then(|m| m.get(self))
|
||||
.map(|s| s.as_str())
|
||||
.unwrap_or("Code - OSS")
|
||||
}
|
||||
|
||||
pub fn get_commandline_name(&self) -> &'static str {
|
||||
match self {
|
||||
Quality::Insiders => "code-insiders",
|
||||
Quality::Exploration => "code-exploration",
|
||||
Quality::Stable => "code",
|
||||
}
|
||||
/// Product application name
|
||||
pub fn get_application_name(&self) -> &'static str {
|
||||
APPLICATION_NAME_MAP
|
||||
.as_ref()
|
||||
.and_then(|m| m.get(self))
|
||||
.map(|s| s.as_str())
|
||||
.unwrap_or("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",
|
||||
/// Server application name
|
||||
pub fn server_entrypoint(&self) -> String {
|
||||
let mut server_name = SERVER_NAME_MAP
|
||||
.as_ref()
|
||||
.and_then(|m| m.get(self))
|
||||
.map(|s| s.as_str())
|
||||
.unwrap_or("code-server-oss")
|
||||
.to_string();
|
||||
|
||||
if cfg!(windows) {
|
||||
server_name.push_str(".cmd");
|
||||
}
|
||||
|
||||
server_name
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -8,7 +8,6 @@ pub mod dev_tunnels;
|
|||
pub mod legal;
|
||||
pub mod paths;
|
||||
|
||||
mod socket_signal;
|
||||
mod control_server;
|
||||
mod name_generator;
|
||||
mod port_forwarder;
|
||||
|
@ -19,10 +18,11 @@ mod server_bridge;
|
|||
mod service;
|
||||
#[cfg(target_os = "linux")]
|
||||
mod service_linux;
|
||||
#[cfg(target_os = "windows")]
|
||||
mod service_windows;
|
||||
#[cfg(target_os = "macos")]
|
||||
mod service_macos;
|
||||
#[cfg(target_os = "windows")]
|
||||
mod service_windows;
|
||||
mod socket_signal;
|
||||
|
||||
pub use control_server::serve;
|
||||
pub use service::{
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
use super::paths::{InstalledServer, LastUsedServers, ServerPaths};
|
||||
use crate::constants::{APPLICATION_NAME, QUALITYLESS_PRODUCT_NAME, QUALITYLESS_SERVER_NAME};
|
||||
use crate::options::{Quality, TelemetryLevel};
|
||||
use crate::state::LauncherPaths;
|
||||
use crate::update_service::{
|
||||
|
@ -334,7 +335,8 @@ async fn download_server(
|
|||
|
||||
info!(
|
||||
log,
|
||||
"Downloading VS Code server -> {}",
|
||||
"Downloading {} server -> {}",
|
||||
QUALITYLESS_PRODUCT_NAME,
|
||||
save_path.display()
|
||||
);
|
||||
|
||||
|
@ -445,7 +447,7 @@ impl<'a, Http: SimpleHttp + Send + Sync + Clone + 'static> ServerBuilder<'a, Htt
|
|||
};
|
||||
info!(self.logger, "Found running server (pid={})", pid);
|
||||
if !Path::new(&self.server_paths.logfile).exists() {
|
||||
warning!(self.logger, "VS Code Server is running but its logfile is missing. Don't delete the VS Code Server manually, run the command 'code-server prune'.");
|
||||
warning!(self.logger, "{} Server is running but its logfile is missing. Don't delete the {} Server manually, run the command '{} prune'.", QUALITYLESS_PRODUCT_NAME, QUALITYLESS_PRODUCT_NAME, APPLICATION_NAME);
|
||||
return Ok(None);
|
||||
}
|
||||
|
||||
|
@ -479,7 +481,10 @@ impl<'a, Http: SimpleHttp + Send + Sync + Clone + 'static> ServerBuilder<'a, Htt
|
|||
|
||||
/// Ensures the server is set up in the configured directory.
|
||||
pub async fn setup(&self) -> Result<(), AnyError> {
|
||||
debug!(self.logger, "Installing and setting up VS Code Server...");
|
||||
debug!(
|
||||
self.logger,
|
||||
"Installing and setting up {}...", QUALITYLESS_SERVER_NAME
|
||||
);
|
||||
check_and_create_dir(&self.server_paths.server_dir).await?;
|
||||
install_server_if_needed(
|
||||
self.logger,
|
||||
|
|
|
@ -3,7 +3,9 @@
|
|||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
use crate::commands::tunnels::ShutdownSignal;
|
||||
use crate::constants::{CONTROL_PORT, PROTOCOL_VERSION, VSCODE_CLI_VERSION};
|
||||
use crate::constants::{
|
||||
CONTROL_PORT, EDITOR_WEB_URL, PROTOCOL_VERSION, QUALITYLESS_SERVER_NAME, VSCODE_CLI_VERSION,
|
||||
};
|
||||
use crate::log;
|
||||
use crate::self_update::SelfUpdate;
|
||||
use crate::state::LauncherPaths;
|
||||
|
@ -131,7 +133,10 @@ pub struct ServerTermination {
|
|||
}
|
||||
|
||||
fn print_listening(log: &log::Logger, tunnel_name: &str) {
|
||||
debug!(log, "VS Code Server is listening for incoming connections");
|
||||
debug!(
|
||||
log,
|
||||
"{} is listening for incoming connections", QUALITYLESS_SERVER_NAME
|
||||
);
|
||||
|
||||
let home_dir = dirs::home_dir().unwrap_or_else(|| PathBuf::from(""));
|
||||
let current_dir = env::current_dir().unwrap_or_else(|_| PathBuf::from(""));
|
||||
|
@ -142,7 +147,12 @@ fn print_listening(log: &log::Logger, tunnel_name: &str) {
|
|||
current_dir
|
||||
};
|
||||
|
||||
let mut addr = url::Url::parse("https://insiders.vscode.dev").unwrap();
|
||||
let base_web_url = match EDITOR_WEB_URL {
|
||||
Some(u) => u,
|
||||
None => return,
|
||||
};
|
||||
|
||||
let mut addr = url::Url::parse(base_web_url).unwrap();
|
||||
{
|
||||
let mut ps = addr.path_segments_mut().unwrap();
|
||||
ps.push("tunnel");
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
use crate::constants::PRODUCT_NAME_LONG;
|
||||
use crate::state::{LauncherPaths, PersistedState};
|
||||
use crate::util::errors::{AnyError, MissingLegalConsent};
|
||||
use crate::util::input::prompt_yn;
|
||||
|
@ -46,10 +47,10 @@ pub fn require_consent(
|
|||
load.consented = Some(true);
|
||||
}
|
||||
Ok(false) => {
|
||||
return Err(AnyError::from(MissingLegalConsent(
|
||||
"Sorry you cannot use VS Code Server CLI without accepting the terms."
|
||||
.to_string(),
|
||||
)))
|
||||
return Err(AnyError::from(MissingLegalConsent(format!(
|
||||
"Sorry you cannot use {} CLI without accepting the terms.",
|
||||
PRODUCT_NAME_LONG
|
||||
))))
|
||||
}
|
||||
Err(e) => return Err(AnyError::from(MissingLegalConsent(e.to_string()))),
|
||||
}
|
||||
|
|
|
@ -64,7 +64,7 @@ impl SystemdService {
|
|||
}
|
||||
|
||||
fn service_name_string() -> String {
|
||||
format!("{}-tunnel.service", &*APPLICATION_NAME)
|
||||
format!("{}-tunnel.service", APPLICATION_NAME)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -186,7 +186,7 @@ fn write_systemd_service_file(
|
|||
[Install]\n\
|
||||
WantedBy=multi-user.target\n\
|
||||
",
|
||||
&*PRODUCT_NAME_LONG,
|
||||
PRODUCT_NAME_LONG,
|
||||
exe.into_os_string().to_string_lossy(),
|
||||
args.join("\" \"")
|
||||
)?;
|
||||
|
|
|
@ -23,7 +23,7 @@ use crate::{
|
|||
},
|
||||
};
|
||||
|
||||
use super::{ServiceManager, service::tail_log_file};
|
||||
use super::{service::tail_log_file, ServiceManager};
|
||||
|
||||
pub struct LaunchdService {
|
||||
log: log::Logger,
|
||||
|
@ -115,7 +115,7 @@ impl ServiceManager for LaunchdService {
|
|||
}
|
||||
|
||||
fn get_service_label() -> String {
|
||||
format!("com.visualstudio.{}.tunnel", &*APPLICATION_NAME)
|
||||
format!("com.visualstudio.{}.tunnel", APPLICATION_NAME)
|
||||
}
|
||||
|
||||
fn get_service_file_path() -> Result<PathBuf, MissingHomeDirectory> {
|
||||
|
|
|
@ -21,6 +21,7 @@ use windows_service::{
|
|||
|
||||
use crate::{
|
||||
commands::tunnels::ShutdownSignal,
|
||||
constants::QUALITYLESS_PRODUCT_NAME,
|
||||
util::errors::{wrap, wrapdbg, AnyError, WindowsNeedsElevation},
|
||||
};
|
||||
use crate::{
|
||||
|
@ -64,7 +65,7 @@ impl CliServiceManager for WindowsService {
|
|||
|
||||
let mut service_info = ServiceInfo {
|
||||
name: OsString::from(SERVICE_NAME),
|
||||
display_name: OsString::from("VS Code Tunnel"),
|
||||
display_name: OsString::from(format!("{} Tunnel", QUALITYLESS_PRODUCT_NAME)),
|
||||
service_type: SERVICE_TYPE,
|
||||
start_type: ServiceStartType::AutoStart,
|
||||
error_control: ServiceErrorControl::Normal,
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
use super::errors::{wrap, AnyError, CommandFailed, WrappedError};
|
||||
use std::{ffi::OsStr, process::Stdio, borrow::Cow};
|
||||
use std::{borrow::Cow, ffi::OsStr, process::Stdio};
|
||||
use tokio::process::Command;
|
||||
|
||||
pub async fn capture_command_and_check_status(
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
*--------------------------------------------------------------------------------------------*/
|
||||
use std::fmt::Display;
|
||||
|
||||
use crate::constants::CONTROL_PORT;
|
||||
use crate::constants::{APPLICATION_NAME, CONTROL_PORT, QUALITYLESS_PRODUCT_NAME};
|
||||
|
||||
// Wraps another error with additional info.
|
||||
#[derive(Debug, Clone)]
|
||||
|
@ -282,8 +282,11 @@ impl std::fmt::Display for NoInstallInUserProvidedPath {
|
|||
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
|
||||
write!(
|
||||
f,
|
||||
"No VS Code installation could be found in {}. You can run `code --use-quality=stable` to switch to the latest stable version of VS Code.",
|
||||
self.0
|
||||
"No {} installation could be found in {}. You can run `{} --use-quality=stable` to switch to the latest stable version of {}.",
|
||||
QUALITYLESS_PRODUCT_NAME,
|
||||
self.0,
|
||||
APPLICATION_NAME,
|
||||
QUALITYLESS_PRODUCT_NAME
|
||||
)
|
||||
}
|
||||
}
|
||||
|
@ -378,7 +381,11 @@ pub struct CorruptDownload(pub String);
|
|||
|
||||
impl std::fmt::Display for CorruptDownload {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
|
||||
write!(f, "Error updating the VS Code CLI: {}", self.0)
|
||||
write!(
|
||||
f,
|
||||
"Error updating the {} CLI: {}",
|
||||
QUALITYLESS_PRODUCT_NAME, self.0
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -46,7 +46,7 @@ pub fn prompt_yn(text: &str) -> Result<bool, WrappedError> {
|
|||
.map_err(|e| wrap(e, "Failed to read confirm input"))
|
||||
}
|
||||
|
||||
pub fn prompt_options<T>(text: &str, options: &[T]) -> Result<T, WrappedError>
|
||||
pub fn prompt_options<T>(text: impl Into<String>, options: &[T]) -> Result<T, WrappedError>
|
||||
where
|
||||
T: Display + Copy,
|
||||
{
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
use std::cmp::Ordering;
|
||||
|
||||
use super::command::capture_command;
|
||||
use crate::constants::QUALITYLESS_SERVER_NAME;
|
||||
use crate::update_service::Platform;
|
||||
use crate::util::errors::SetupError;
|
||||
use lazy_static::lazy_static;
|
||||
|
@ -41,8 +42,13 @@ impl PreReqChecker {
|
|||
|
||||
#[cfg(not(target_os = "linux"))]
|
||||
pub async fn verify(&self) -> Result<Platform, AnyError> {
|
||||
use crate::constants::QUALITYLESS_PRODUCT_NAME;
|
||||
Platform::env_default().ok_or_else(|| {
|
||||
SetupError("VS Code is not supported on this platform".to_owned()).into()
|
||||
SetupError(format!(
|
||||
"{} is not supported on this platform",
|
||||
QUALITYLESS_PRODUCT_NAME
|
||||
))
|
||||
.into()
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -91,8 +97,8 @@ impl PreReqChecker {
|
|||
.join("\n");
|
||||
|
||||
Err(AnyError::from(SetupError(format!(
|
||||
"This machine not meet VS Code Server's prerequisites, expected either...\n{}",
|
||||
bullets,
|
||||
"This machine not meet {}'s prerequisites, expected either...\n{}",
|
||||
QUALITYLESS_SERVER_NAME, bullets,
|
||||
))))
|
||||
}
|
||||
}
|
||||
|
@ -107,8 +113,8 @@ async fn check_musl_interpreter() -> Result<(), String> {
|
|||
|
||||
if fs::metadata(MUSL_PATH).await.is_err() {
|
||||
return Err(format!(
|
||||
"find {}, which is required to run the VS Code Server in musl environments",
|
||||
MUSL_PATH
|
||||
"find {}, which is required to run the {} in musl environments",
|
||||
MUSL_PATH, QUALITYLESS_SERVER_NAME
|
||||
));
|
||||
}
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "code-oss-dev",
|
||||
"version": "1.74.0",
|
||||
"distro": "540bfe34933334669527ef1900a9e112965fbdde",
|
||||
"distro": "22b60ce5f0f5a4db5d17091721f4d84891aec3b8",
|
||||
"author": {
|
||||
"name": "Microsoft Corporation"
|
||||
},
|
||||
|
|
Загрузка…
Ссылка в новой задаче