diff --git a/src/branch/drop.rs b/src/branch/drop.rs index adb96cbc1..9b8416b50 100644 --- a/src/branch/drop.rs +++ b/src/branch/drop.rs @@ -1,5 +1,6 @@ use crate::branch::context::Context; use crate::branch::option::Drop; +use crate::branding::BRANDING_CLI_CMD; use crate::commands::ExitCode; use crate::connect::Connection; use crate::portable::exit_codes; @@ -15,7 +16,7 @@ pub async fn main( if current_branch == options.target_branch { anyhow::bail!( "Dropping the currently active branch is not supported, please switch to a \ - different branch to drop this one with `edgedb branch switch `" + different branch to drop this one with `{BRANDING_CLI_CMD} branch switch `" ); } diff --git a/src/cli/directory_check.rs b/src/cli/directory_check.rs index c5019245b..94837a8bb 100644 --- a/src/cli/directory_check.rs +++ b/src/cli/directory_check.rs @@ -13,9 +13,9 @@ pub fn check_and_warn() { Ok(None) => {} Ok(Some(dir)) => { log::warn!( - "Edgedb CLI no longer uses '{}' to store data \ + "{BRANDING_CLI} no longer uses '{}' to store data \ and now uses standard locations of your OS. \ - Run `edgedb cli migrate` to update the directory layout.", + Run `{BRANDING_CLI_CMD} cli migrate` to update the directory layout.", dir.display() ); } diff --git a/src/cli/install.rs b/src/cli/install.rs index c6a81c065..7e1b08f2a 100644 --- a/src/cli/install.rs +++ b/src/cli/install.rs @@ -102,58 +102,80 @@ pub struct Settings { fn print_long_description(settings: &Settings) { println!(); - print_markdown!("\ - # Welcome to EdgeDB!\n\ + + print_markdown!( + "\ + # Welcome to ${branding}!\n\ \n\ - This will install the official EdgeDB command-line tools.\n\ + This will install the official ${branding} command-line tools.\n\ \n\ - The `edgedb` binary will be placed in the ${dir_kind} bin directory \ + The `${cmd}` binary will be placed in the ${dir_kind} bin directory \ located at:\n\ ```\n\ ${installation_path}\n\ ```\n\ - \n\ - ${update_win\n\ - This path will then be added to your `PATH` environment variable by \ - modifying the `HKEY_CURRENT_USER/Environment/PATH` registry key.\n\ - \n\ - }\n\ - ${update_files\n\ - This path will then be added to your `PATH` environment variable by \ - modifying the profile file${s} located at:\n\ - ```\n\ - ${rc_files}\n\ - ```\n\ - \n\ - }\n\ - ${modify_path - Path ${installation_path} should be added to the `PATH` manually \ - after installation.\n\ - \n\ - }\n\ - ${no_modified\n\ - This path is already in your `PATH` environment variable, so no \ - profile will be modified.\n\ - }\n\ ", - dir_kind=if settings.system { "system" } else { "user" }, - installation_path=settings.installation_path.display(), - update_win: if cfg!(windows) && settings.modify_path, - update_files: if !cfg!(windows) && settings.modify_path => { - rc_files=settings.rc_files.iter() - .map(|p| p.display().to_string()) - .collect::>() - .join("\n"), - s=if settings.rc_files.len() > 1 { "s" } else { "" }, - }, - modify_path: if !cfg!(windows) && !settings.modify_path && - no_dir_in_path(&settings.installation_path) - => { - installation_path=settings.installation_path.display() - }, - no_modified: if !cfg!(windows) && !settings.modify_path && - !no_dir_in_path(&settings.installation_path), + branding = BRANDING, + cmd = BRANDING_CLI_CMD, + dir_kind = if settings.system { "system" } else { "user" }, + installation_path = settings.installation_path.display(), ); + + if cfg!(windows) && settings.modify_path { + println!(); + print_markdown!( + "\ + This path will then be added to your `PATH` environment variable by \ + modifying the `HKEY_CURRENT_USER/Environment/PATH` registry key.\n\ + \n\ + " + ); + } + + if !cfg!(windows) && settings.modify_path { + let rc_files = settings + .rc_files + .iter() + .map(|p| p.display().to_string()) + .collect::>() + .join("\n"); + let s = if settings.rc_files.len() > 1 { "s" } else { "" }; + println!(); + print_markdown!( + "\ + This path will then be added to your `PATH` environment variable by \ + modifying the profile file${s} located at:\n\ + ```\n\ + ${rc_files}\n\ + ```\n\ + \n\ + ", + s = s, + rc_files = rc_files, + ); + } + + if !cfg!(windows) && !settings.modify_path && no_dir_in_path(&settings.installation_path) { + println!(); + print_markdown!( + "\ + Path `${installation_path}` should be added to the `PATH` manually \ + after installation.\n\ + \n\ + ", + installation_path = settings.installation_path.display() + ); + } + + if !cfg!(windows) && !settings.modify_path && !no_dir_in_path(&settings.installation_path) { + println!(); + print_markdown!( + "\ + This path is already in your `PATH` environment variable, so no \ + profile will be modified.\n\ + " + ); + } } pub fn no_dir_in_path(dir: &Path) -> bool { @@ -219,18 +241,20 @@ fn print_post_install_message(settings: &Settings, init_result: anyhow::Result { print_markdown!( "\n\ - `edgedb` without parameters will automatically\n\ + `${cmd}` without parameters will automatically\n\ connect to the initialized project.\n\ - " + ", + cmd = BRANDING_CLI_CMD ); } Ok(InitResult::Refused | InitResult::NonInteractive) => { @@ -561,7 +588,7 @@ fn _main(options: &CliInstall) -> anyhow::Result<()> { ); let q = question::Confirm::new(format!( "\ - Do you want to run `edgedb cli migrate` now to update \ + Do you want to run `{BRANDING_CLI_CMD} cli migrate` now to update \ the directory layout?\ " )); @@ -658,12 +685,12 @@ pub fn check_executables() { if exe_path.file_name().unwrap() == BRANDING_CLI_CMD_ALT_FILE { if new_executable.exists() { - log::warn!("{exe_path:?} is the old name for the {BRANDING_CLI_CMD_FILE} executable. \ - Please update your scripts (and muscle memory) to use the new executable at {new_executable:?}."); + log::warn!("`{exe_path:?}` is the old name for the `{BRANDING_CLI_CMD_FILE}` executable. \ + Please update your scripts (and muscle memory) to use the new executable at `{new_executable:?}`."); } else { log::warn!( - "{exe_path:?} is the old name for the {BRANDING_CLI_CMD_FILE} executable, but \ - {BRANDING_CLI_CMD_FILE} does not exist. You may need to reinstall {BRANDING} to fix this." + "`{exe_path:?}` is the old name for the `{BRANDING_CLI_CMD_FILE}` executable, but \ + `{BRANDING_CLI_CMD_FILE}` does not exist. You may need to reinstall `{BRANDING}` to fix this." ); } } @@ -684,8 +711,8 @@ pub fn check_executables() { match (length_old, length_new) { (Some(length_old), Some(length_new)) if length_old != length_new => { log::warn!( - "{old_executable:?} and {new_executable:?} have different sizes. \ - You mean need to reinstall {BRANDING}." + "`{old_executable:?}` and `{new_executable:?}` have different sizes. \ + You may need to reinstall `{BRANDING}`." ); } _ => {} diff --git a/src/cli/upgrade.rs b/src/cli/upgrade.rs index 49d1f9586..d3db6885e 100644 --- a/src/cli/upgrade.rs +++ b/src/cli/upgrade.rs @@ -7,7 +7,7 @@ use fn_error_context::context; use fs_err as fs; use indicatif::{ProgressBar, ProgressStyle}; -use crate::platform::{binary_path, current_exe, home_dir, tmp_file_path}; +use crate::platform::{binary_path, current_exe, old_binary_path, tmp_file_path}; use crate::portable::platform; use crate::portable::repository::{self, download, Channel}; use crate::portable::ver; @@ -54,18 +54,18 @@ pub fn can_upgrade() -> bool { }) } -pub fn old_binary_path() -> anyhow::Result { - let bin_name = if cfg!(windows) { - "edgedb.exe" - } else { - "edgedb" - }; - Ok(home_dir()?.join(".edgedb").join("bin").join(bin_name)) -} - fn _can_upgrade(path: &Path) -> anyhow::Result { let exe_path = current_exe()?; - Ok(exe_path == path || matches!(old_binary_path(), Ok(old) if exe_path == old)) + if exe_path == path { + return Ok(true); + } + let Some(current_bin_path) = exe_path.parent() else { + return Ok(false); + }; + let Ok(old_binary_path) = old_binary_path() else { + return Ok(false); + }; + Ok(current_bin_path == old_binary_path) } #[context("error unpacking {:?} -> {:?}", src, tgt)] diff --git a/src/commands/ui.rs b/src/commands/ui.rs index 989a8387c..be0b00aca 100644 --- a/src/commands/ui.rs +++ b/src/commands/ui.rs @@ -2,7 +2,7 @@ use std::io::{stdout, Write}; use anyhow::Context; -use crate::branding::BRANDING; +use crate::branding::{BRANDING, BRANDING_CLI_CMD}; use crate::cloud; use crate::commands::ExitCode; use crate::options::{Options, UI}; @@ -123,7 +123,7 @@ fn _get_local_ui_url(cmd: &UI, cfg: &edgedb_tokio::Config) -> anyhow::Result` to see details." + Try `{BRANDING_CLI_CMD} instance logs -I ` to see details." ); return Err(ExitCode::new(3).into()); } diff --git a/src/migrations/edit.rs b/src/migrations/edit.rs index 3dd68b69f..3270fae2e 100644 --- a/src/migrations/edit.rs +++ b/src/migrations/edit.rs @@ -4,6 +4,7 @@ use dissimilar::{diff, Chunk}; use tokio::fs; use tokio::task::spawn_blocking as unblock; +use crate::branding::BRANDING_CLI_CMD; use crate::commands::Options; use crate::connect::Connection; use crate::error_display::print_query_error; @@ -81,10 +82,7 @@ pub async fn edit_no_check( .filter_map(|p| file_num(&p).map(|n| (n, p))) .max_by(|(an, _), (bn, _)| an.cmp(bn)) .ok_or_else(|| { - anyhow::anyhow!( - "no migration exists. \ - Run `edgedb migration create`" - ) + anyhow::anyhow!("no migration exists. Run `{BRANDING_CLI_CMD} migration create`") })?; if !options.non_interactive { @@ -151,10 +149,7 @@ async fn _edit( .filter_map(|p| file_num(&p).map(|n| (n, p))) .max_by(|(an, _), (bn, _)| an.cmp(bn)) .ok_or_else(|| { - anyhow::anyhow!( - "no migration exists. \ - Run `edgedb migration create`" - ) + anyhow::anyhow!("no migration exists. Run `{BRANDING_CLI_CMD} migration create`") })?; if options.non_interactive { diff --git a/src/migrations/migrate.rs b/src/migrations/migrate.rs index 16c3885d2..b4a2e18eb 100644 --- a/src/migrations/migrate.rs +++ b/src/migrations/migrate.rs @@ -11,6 +11,7 @@ use indicatif::ProgressBar; use tokio::fs; use crate::async_try; +use crate::branding::BRANDING_CLI_CMD; use crate::bug; use crate::commands::ExitCode; use crate::commands::Options; @@ -171,9 +172,9 @@ async fn _migrate( ) .with_hint(|| { format!( - "You might have a wrong or outdated source checkout. \ - If you don't, consider running `edgedb migration extract` \ - to bring the history in {0:?} in sync with the database.", + "You might have an incorrect or outdated source checkout. \ + If you don't, consider running `{BRANDING_CLI_CMD} migration extract` \ + to bring the history in {:?} in sync with the database.", ctx.schema_dir.join("migrations") ) }))?; @@ -222,16 +223,14 @@ async fn fixup( .map(|kv| kv.1) .context("database migration history is empty")?; let last_db_mname = &last_db_migration.name; + let hint = migration_error_hint(ctx, last_db_migration); let Some(path) = find_path(migrations, &fixups, last_db_mname, target)? else { match last_db_migration.generated_by { Some(MigrationGeneratedBy::DevMode) => { return Err(anyhow::anyhow!( - "database contains Dev mode / `edgedb watch` migrations." + "database contains Dev mode / `{BRANDING_CLI_CMD} watch` migrations." ) - .hint( - "Use `edgedb migration create` followed by \ - `edgedb migrate --dev-mode`, or resume `edgedb watch`", - ))?; + .with_hint(hint))?; } Some(MigrationGeneratedBy::DDLStatement) | None => { let last_fs_rev = migrations @@ -252,25 +251,7 @@ async fn fixup( diff.len(), if diff.len() != 1 { "s" } else { "" }, ) - .with_hint(|| { - if matches!( - last_db_migration.generated_by, - Some(MigrationGeneratedBy::DDLStatement) - ) { - format!( - "Last recorded database migration is the result of \ - a direct DDL statement. \ - Consider running `edgedb migration extract` \ - to bring the history in {migrations_dir:?} in sync with the database." - ) - } else { - format!( - "You might have a wrong or outdated source checkout. \ - If you don't, consider running `edgedb migration extract` \ - to bring the history in {migrations_dir:?} in sync with the database." - ) - } - }))?; + .with_hint(hint))?; } let mut last_common_rev: Option<&str> = None; @@ -290,25 +271,7 @@ async fn fixup( migrations_dir, last_common_rev, ) - .with_hint(|| { - if matches!( - last_db_migration.generated_by, - Some(MigrationGeneratedBy::DDLStatement) - ) { - format!( - "Last recorded database migration is the result of \ - a direct DDL statement. \ - Consider running `edgedb migration extract` \ - to bring the history in {migrations_dir:?} in sync with the database." - ) - } else { - format!( - "You might have a wrong or outdated source checkout. \ - If you don't, consider running `edgedb migration extract` \ - to bring the history in {migrations_dir:?} in sync with the database." - ) - } - }))?; + .with_hint(hint))?; } // No revisions in common @@ -317,13 +280,7 @@ async fn fixup( unrelated to migration history in {:?}", migrations_dir, ) - .with_hint(|| { - format!( - "You might have a wrong or outdated source checkout. \ - If you don't, consider running `edgedb migration extract` \ - to bring the history in {migrations_dir:?} in sync with the database.", - ) - }))?; + .with_hint(hint))?; } } }; @@ -361,6 +318,38 @@ async fn fixup( Ok(()) } +fn migration_error_hint<'a: 'b, 'b: 'a>( + ctx: &'a Context, + last_db_migration: &'b DBMigration, +) -> impl Fn() -> String + 'a + 'b { + move || { + let migrations_dir = ctx.schema_dir.join("migrations"); + match last_db_migration.generated_by { + Some(MigrationGeneratedBy::DevMode) => { + format!( + "Use `{BRANDING_CLI_CMD} migration create` followed by \ + `{BRANDING_CLI_CMD} migrate --dev-mode`, or resume `{BRANDING_CLI_CMD} watch`" + ) + } + Some(MigrationGeneratedBy::DDLStatement) => { + format!( + "Last recorded database migration is the result of \ + a direct DDL statement. \ + Consider running `{BRANDING_CLI_CMD} migration extract` \ + to bring the history in {migrations_dir:?} in sync with the database." + ) + } + _ => { + format!( + "You might have an incorrect or outdated source checkout. \ + If you don't, consider running `{BRANDING_CLI_CMD} migration extract` \ + to bring the history in {migrations_dir:?} in sync with the database." + ) + } + } + } +} + fn find_path<'a>( migrations: &'a IndexMap, fixups: &'a [MigrationFile], diff --git a/src/non_interactive.rs b/src/non_interactive.rs index ed1055431..3fce33ba6 100644 --- a/src/non_interactive.rs +++ b/src/non_interactive.rs @@ -15,6 +15,7 @@ use edgedb_protocol::value::Value; use edgeql_parser::preparser; use tokio_stream::StreamExt; +use crate::branding::BRANDING_CLI_CMD; use crate::classify; use crate::commands::ExitCode; use crate::connect::Connection; @@ -65,7 +66,7 @@ pub async fn noninteractive_main(q: &Query, options: &Options) -> Result<(), any if classify::is_analyze(query) { anyhow::bail!( "Analyze queries are not allowed. \ - Use the dedicated `edgedb analyze` command." + Use the dedicated `{BRANDING_CLI_CMD} analyze` command." ); } run_query(&mut conn, query, options, fmt, lang).await?; @@ -113,7 +114,7 @@ where if classify::is_analyze(stmt) { anyhow::bail!( "Analyze queries are not allowed. \ - Use the dedicated `edgedb analyze` command." + Use the dedicated `{BRANDING_CLI_CMD} analyze` command." ); } run_query(&mut conn, stmt, options, fmt, lang).await?; diff --git a/src/platform.rs b/src/platform.rs index 3a8706a0d..bde4bfe03 100644 --- a/src/platform.rs +++ b/src/platform.rs @@ -5,6 +5,7 @@ use std::path::{Path, PathBuf}; use anyhow::Context; use fn_error_context::context; +use crate::branding::BRANDING_CLI_CMD_FILE; use crate::cli::env::Env; #[cfg(windows)] @@ -116,6 +117,11 @@ pub fn symlink_dir(original: impl AsRef, path: impl AsRef) -> anyhow Ok(()) } +/// The legacy binary path. +pub fn old_binary_path() -> anyhow::Result { + Ok(home_dir()?.join(".edgedb").join("bin")) +} + pub fn binary_path() -> anyhow::Result { let dir = match dirs::executable_dir() { Some(dir) => dir, @@ -125,12 +131,7 @@ pub fn binary_path() -> anyhow::Result { .join("edgedb") .join("bin"), }; - let path = if cfg!(windows) { - dir.join("edgedb.exe") - } else { - dir.join("edgedb") - }; - Ok(path) + Ok(dir.join(BRANDING_CLI_CMD_FILE)) } pub fn data_dir() -> anyhow::Result { diff --git a/src/portable/control.rs b/src/portable/control.rs index 4b2523864..b19c0c413 100644 --- a/src/portable/control.rs +++ b/src/portable/control.rs @@ -5,7 +5,7 @@ use std::path::{Path, PathBuf}; use anyhow::Context; use fn_error_context::context; -use crate::branding::{BRANDING, BRANDING_CLOUD}; +use crate::branding::{BRANDING, BRANDING_CLI_CMD, BRANDING_CLOUD}; use crate::bug; use crate::commands::ExitCode; use crate::credentials; @@ -56,7 +56,7 @@ pub fn do_start(inst: &InstanceInfo) -> anyhow::Result<()> { if !cred_path.exists() { log::warn!( "No corresponding credentials file {:?} exists. \ - Use `edgedb instance reset-password -I {}` to create one.", + Use `{BRANDING_CLI_CMD} instance reset-password -I {}` to create one.", cred_path, inst.name ); diff --git a/src/portable/create.rs b/src/portable/create.rs index ea478a4bd..cd880cb25 100644 --- a/src/portable/create.rs +++ b/src/portable/create.rs @@ -75,7 +75,7 @@ pub fn create(cmd: &Create, opts: &crate::options::Options) -> anyhow::Result<() if cmd.start_conf.is_some() { print::warn!( "The option `--start-conf` is deprecated. \ - Use `edgedb instance start/stop` to control \ + Use `{BRANDING_CLI_CMD} instance start/stop` to control \ the instance." ); } diff --git a/src/portable/install.rs b/src/portable/install.rs index 0a69213cb..646e5ad9f 100644 --- a/src/portable/install.rs +++ b/src/portable/install.rs @@ -10,6 +10,7 @@ use fn_error_context::context; use indicatif::{ProgressBar, ProgressStyle}; use once_cell::sync::Lazy; +use crate::branding::BRANDING_CLI_CMD; use crate::commands::ExitCode; use crate::platform; use crate::portable::exit_codes; @@ -152,7 +153,7 @@ fn unlink_cache(cache_file: &Path) { pub fn install(options: &Install) -> anyhow::Result<()> { if optional_docker_check()? { - print::error!("`edgedb server install` not supported in Docker containers."); + print::error!("`{BRANDING_CLI_CMD} server install` not supported in Docker containers."); Err(ExitCode::new(exit_codes::DOCKER_CONTAINER))?; } let (query, _) = Query::from_options( diff --git a/src/portable/link.rs b/src/portable/link.rs index 5e3e702a5..7985eec90 100644 --- a/src/portable/link.rs +++ b/src/portable/link.rs @@ -355,10 +355,14 @@ async fn prompt_conn_params( let config = match builder.build_env().await { Ok(config) => config, Err(e) if e.is::() => { - return Err(anyhow::anyhow!("no connection options are specified")).hint( - "Remove `--non-interactive` option or specify \ + return Err(anyhow::anyhow!("no connection options are specified")).with_hint( + || { + format!( + "Remove `--non-interactive` option or specify \ `--host=localhost` and/or `--port=5656`. \ - See `edgedb --help-connect` for details", + See `{BRANDING_CLI_CMD} --help-connect` for details", + ) + }, )?; } Err(e) => return Err(e)?, @@ -431,14 +435,18 @@ pub fn unlink(options: &Unlink) -> anyhow::Result<()> { inst_name )) .with_hint(|| { - format!("use `edgedb instance destroy -I {inst_name}` to remove the instance") + format!("use `{BRANDING_CLI_CMD} instance destroy -I {inst_name}` to remove the instance") })?; } }; let inst = InstanceInfo::try_read(name)?; if inst.is_some() { return Err(anyhow::anyhow!("cannot unlink local instance {:?}.", name) - .with_hint(|| format!("use `edgedb instance destroy -I {name}` to remove the instance")) + .with_hint(|| { + format!( + "use `{BRANDING_CLI_CMD} instance destroy -I {name}` to remove the instance" + ) + }) .into()); } with_projects(name, options.force, print_warning, || { diff --git a/src/portable/project.rs b/src/portable/project.rs index b1451fd64..5cfa03d74 100644 --- a/src/portable/project.rs +++ b/src/portable/project.rs @@ -284,7 +284,7 @@ pub fn init(options: &Init, opts: &crate::options::Options) -> anyhow::Result<() if options.server_start_conf.is_some() { print::warn!( "The option `--server-start-conf` is deprecated. \ - Use `edgedb instance start/stop` to control \ + Use `{BRANDING_CLI_CMD} instance start/stop` to control \ the instance." ); } @@ -717,7 +717,7 @@ pub fn init_existing( let pkg = repository::get_server_package(&ver_query)?.with_context(|| { format!( "cannot find package matching {}. \ - (Use `edgedb server list-versions` to see all available)", + (Use `{BRANDING_CLI_CMD} server list-versions` to see all available)", ver_query.display() ) })?; @@ -943,7 +943,7 @@ pub fn init_new( anyhow::bail!( "{CONFIG_FILE_DISPLAY_NAME} deleted after \ project initialization. \ - Please run `edgedb project unlink -D` to \ + Please run `{BRANDING_CLI_CMD} project unlink -D` to \ clean up old database instance." ); } @@ -1730,7 +1730,7 @@ pub fn info(options: &Info) -> anyhow::Result<()> { let stash_dir = get_stash_path(&root)?; if !stash_dir.exists() { msg!( - "{} {} Run `edgedb project init`.", + "{} {} Run `{BRANDING_CLI_CMD} project init`.", print::err_marker(), "Project is not initialized.".emphasize() ); @@ -1890,7 +1890,7 @@ pub fn update_toml( let pkg = repository::get_server_package(&query)?.with_context(|| { format!( "cannot find package matching {} \ - (Use `edgedb server list-versions` to see all available)", + (Use `{BRANDING_CLI_CMD} server list-versions` to see all available)", query.display() ) })?; @@ -2063,7 +2063,7 @@ fn upgrade_local( let pkg = repository::get_server_package(to_version)?.with_context(|| { format!( "cannot find package matching {} \ - (Use `edgedb server list-versions` to see all available)", + (Use `{BRANDING_CLI_CMD} server list-versions` to see all available)", to_version.display() ) })?; diff --git a/src/portable/repository.rs b/src/portable/repository.rs index 02162c6df..a17d5ad34 100644 --- a/src/portable/repository.rs +++ b/src/portable/repository.rs @@ -16,14 +16,13 @@ use tokio::io::AsyncWriteExt; use url::Url; use crate::async_util::timeout; -use crate::branding::BRANDING; +use crate::branding::{BRANDING, BRANDING_CLI}; use crate::cli::env::Env; -use crate::portable::platform; -use crate::portable::ver; use crate::portable::windows; +use crate::portable::{platform, ver}; use crate::process::IntoArg; -pub const USER_AGENT: &str = "edgedb"; +pub const USER_AGENT: &str = BRANDING_CLI; pub const DEFAULT_TIMEOUT: Duration = Duration::new(60, 0); static PKG_ROOT: OnceCell = OnceCell::new(); diff --git a/src/portable/windows.rs b/src/portable/windows.rs index c89a6b28f..a75192cdc 100644 --- a/src/portable/windows.rs +++ b/src/portable/windows.rs @@ -600,7 +600,7 @@ fn try_get_wsl() -> anyhow::Result<&'static Wsl> { Ok(v) => Ok(v), Err(e) if e.is::() => Err(e).hint( "WSL is initialized automatically on \ - `edgedb project init` or `edgedb instance create`", + `{BRANDING_CLI_CMD} project init` or `{BRANDING_CLI_CMD} instance create`", )?, Err(e) => Err(e), }