aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/src/command
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-08-22 17:53:13 +0900
committernsfisis <nsfisis@gmail.com>2026-08-22 17:53:13 +0900
commitec5f3292ac324789298c3a12972f8f78b688ca24 (patch)
tree44580ee521df4b0416fcafa9089695c5bc550270 /crates/shirabe/src/command
parent7286ee29637dbc694f769b618259eb9f75bab0fa (diff)
downloadphp-shirabe-ec5f3292ac324789298c3a12972f8f78b688ca24.tar.gz
php-shirabe-ec5f3292ac324789298c3a12972f8f78b688ca24.tar.zst
php-shirabe-ec5f3292ac324789298c3a12972f8f78b688ca24.zip
feat(cli): tell the user to run `shirabe`, not `composer`
Messages that instruct the user to run a command named the Composer binary. Shirabe ships as its own binary, so the hints now name it. File names (composer.json, composer.lock), the "composer" repository type and prose about Composer itself are untouched. The installer and functional integration fixtures live in the Composer submodule and cannot be edited, so their expected output is normalized on load.
Diffstat (limited to 'crates/shirabe/src/command')
-rw-r--r--crates/shirabe/src/command/base_dependency_command.rs6
-rw-r--r--crates/shirabe/src/command/bump_command.rs2
-rw-r--r--crates/shirabe/src/command/config_command.rs2
-rw-r--r--crates/shirabe/src/command/create_project_command.rs2
-rw-r--r--crates/shirabe/src/command/diagnose_command.rs8
-rw-r--r--crates/shirabe/src/command/dump_autoload_command.rs2
-rw-r--r--crates/shirabe/src/command/init_command.rs2
-rw-r--r--crates/shirabe/src/command/install_command.rs6
-rw-r--r--crates/shirabe/src/command/outdated_command.rs2
-rw-r--r--crates/shirabe/src/command/package_discovery_trait.rs2
-rw-r--r--crates/shirabe/src/command/remove_command.rs4
-rw-r--r--crates/shirabe/src/command/repository_command.rs34
-rw-r--r--crates/shirabe/src/command/require_command.rs6
-rw-r--r--crates/shirabe/src/command/show_command.rs2
-rw-r--r--crates/shirabe/src/command/update_command.rs2
-rw-r--r--crates/shirabe/src/command/validate_command.rs2
16 files changed, 42 insertions, 42 deletions
diff --git a/crates/shirabe/src/command/base_dependency_command.rs b/crates/shirabe/src/command/base_dependency_command.rs
index 6dc049ff..4cb60308 100644
--- a/crates/shirabe/src/command/base_dependency_command.rs
+++ b/crates/shirabe/src/command/base_dependency_command.rs
@@ -89,7 +89,7 @@ pub trait BaseDependencyCommand: BaseCommand {
&& (!root_pkg.get_requires().is_empty() || !root_pkg.get_dev_requires().is_empty())
{
output.borrow().writeln(
- &["<warning>No dependencies installed. Try running composer install or update, or use --locked.</warning>".to_string()],
+ &["<warning>No dependencies installed. Try running shirabe install or update, or use --locked.</warning>".to_string()],
shirabe_symfony_console::output::OUTPUT_NORMAL,
);
@@ -214,7 +214,7 @@ pub trait BaseDependencyCommand: BaseCommand {
}
Some(matched) if inverted => {
self.get_io().write(&format!(
- "<comment>Package \"{}\" {} is already installed! To find out why, run `composer why {}`</comment>",
+ "<comment>Package \"{}\" {} is already installed! To find out why, run `shirabe why {}`</comment>",
needle,
matched.get_pretty_version(),
needle
@@ -320,7 +320,7 @@ pub trait BaseDependencyCommand: BaseCommand {
}
self.get_io().write_error(&format!(
- "Not finding what you were looking for? Try calling `composer {} \"{}:{}\" --dry-run` to get another view on the problem.",
+ "Not finding what you were looking for? Try calling `shirabe {} \"{}:{}\" --dry-run` to get another view on the problem.",
composer_command, needle, text_constraint
));
}
diff --git a/crates/shirabe/src/command/bump_command.rs b/crates/shirabe/src/command/bump_command.rs
index 71ee2ffe..e10f7b15 100644
--- a/crates/shirabe/src/command/bump_command.rs
+++ b/crates/shirabe/src/command/bump_command.rs
@@ -149,7 +149,7 @@ impl BumpCommand {
.is_some_and(|m| m.contains_key("type"))
{
io.write_error3(
- "<warning>If your package is not a library, you can explicitly specify the \"type\" by using \"composer config type project\".</warning>",
+ "<warning>If your package is not a library, you can explicitly specify the \"type\" by using \"shirabe config type project\".</warning>",
true,
io_interface::NORMAL,
);
diff --git a/crates/shirabe/src/command/config_command.rs b/crates/shirabe/src/command/config_command.rs
index 90f2d7c0..53e1fe7c 100644
--- a/crates/shirabe/src/command/config_command.rs
+++ b/crates/shirabe/src/command/config_command.rs
@@ -995,7 +995,7 @@ impl Command for ConfigCommand {
|| multi_props.contains_key(&setting_key)
|| strpos(&setting_key, "extra.") == Some(0))
{
- return Err(InvalidArgumentException::new(format!("The {} property can not be set in the global config.json file. Use `composer global config` to apply changes to the global composer.json", setting_key))
+ return Err(InvalidArgumentException::new(format!("The {} property can not be set in the global config.json file. Use `shirabe global config` to apply changes to the global composer.json", setting_key))
.into());
}
if input.borrow().get_option("unset")?.as_bool() == Some(true)
diff --git a/crates/shirabe/src/command/create_project_command.rs b/crates/shirabe/src/command/create_project_command.rs
index e2161aa3..a2b44713 100644
--- a/crates/shirabe/src/command/create_project_command.rs
+++ b/crates/shirabe/src/command/create_project_command.rs
@@ -315,7 +315,7 @@ impl CreateProjectCommand {
if e.is_instanceof::<PluginBlockedException>() {
io.write_error("<error>Hint: To allow running the config command recommended below before dependencies are installed, run create-project with --no-install.</error>");
io.write_error(&format!(
- "<error>You can then cd into {}, configure allow-plugins, and finally run a composer install to complete the process.</error>",
+ "<error>You can then cd into {}, configure allow-plugins, and finally run a shirabe install to complete the process.</error>",
getcwd().unwrap_or_default()
));
}
diff --git a/crates/shirabe/src/command/diagnose_command.rs b/crates/shirabe/src/command/diagnose_command.rs
index 0390cefb..d0448507 100644
--- a/crates/shirabe/src/command/diagnose_command.rs
+++ b/crates/shirabe/src/command/diagnose_command.rs
@@ -434,7 +434,7 @@ impl DiagnoseCommand {
&& te.get_code() == 401
{
return Ok(CheckResult::Message(format!(
- "<comment>The oauth token for {} seems invalid, run \"composer config --global --unset github-oauth.{}\" to remove it</comment>",
+ "<comment>The oauth token for {} seems invalid, run \"shirabe config --global --unset github-oauth.{}\" to remove it</comment>",
domain, domain
)));
}
@@ -559,7 +559,7 @@ impl DiagnoseCommand {
if !errors.is_empty() {
errors.push(
- "<error>Run composer self-update --update-keys to set them up</error>".to_string(),
+ "<error>Run shirabe self-update --update-keys to set them up</error>".to_string(),
);
}
@@ -610,7 +610,7 @@ impl DiagnoseCommand {
.to_string();
if composer::VERSION != latest_version && composer::VERSION != "@package_version@" {
return Ok(CheckResult::Message(format!(
- "<comment>You are not running the latest {} version, run `composer self-update` to update ({} => {})</comment>",
+ "<comment>You are not running the latest {} version, run `shirabe self-update` to update ({} => {})</comment>",
versions_util.get_channel()?,
composer::VERSION,
latest_version
@@ -1489,7 +1489,7 @@ impl Command for DiagnoseCommand {
Err(e) => {
if let Some(te) = e.catch::<TransportException>() {
if te.get_code() == 401 {
- self.output_result(CheckResult::Message("<comment>The oauth token for github.com seems invalid, run \"composer config --global --unset github-oauth.github.com\" to remove it</comment>".to_string()));
+ self.output_result(CheckResult::Message("<comment>The oauth token for github.com seems invalid, run \"shirabe config --global --unset github-oauth.github.com\" to remove it</comment>".to_string()));
} else {
self.output_result(CheckResult::Message(format!(
"<error>[{}] {}</error>",
diff --git a/crates/shirabe/src/command/dump_autoload_command.rs b/crates/shirabe/src/command/dump_autoload_command.rs
index 87acd74f..2e2b6289 100644
--- a/crates/shirabe/src/command/dump_autoload_command.rs
+++ b/crates/shirabe/src/command/dump_autoload_command.rs
@@ -98,7 +98,7 @@ impl Command for DumpAutoloadCommand {
.get_install_path(local_pkg);
if install_path.as_deref().is_some_and(|p| !file_exists(p)) {
missing_dependencies = true;
- self.get_io().write("<warning>Not all dependencies are installed. Make sure to run a \"composer install\" to install missing dependencies</warning>");
+ self.get_io().write("<warning>Not all dependencies are installed. Make sure to run a \"shirabe install\" to install missing dependencies</warning>");
break;
}
}
diff --git a/crates/shirabe/src/command/init_command.rs b/crates/shirabe/src/command/init_command.rs
index 9399c2a7..8d892bd3 100644
--- a/crates/shirabe/src/command/init_command.rs
+++ b/crates/shirabe/src/command/init_command.rs
@@ -275,7 +275,7 @@ impl InitCommand {
if result.is_err() {
self.get_io().borrow().write_error(
- "Could not update dependencies. Run `composer update` to see more information.",
+ "Could not update dependencies. Run `shirabe update` to see more information.",
);
}
}
diff --git a/crates/shirabe/src/command/install_command.rs b/crates/shirabe/src/command/install_command.rs
index 1431fb57..7c8ce7af 100644
--- a/crates/shirabe/src/command/install_command.rs
+++ b/crates/shirabe/src/command/install_command.rs
@@ -71,7 +71,7 @@ impl Command for InstallCommand {
InputOption::new("apcu-autoloader-prefix", None, Some(InputOption::VALUE_REQUIRED), "Use a custom prefix for the APCu autoloader cache. Implicitly enables --apcu-autoloader", None).unwrap().into(),
InputOption::new("ignore-platform-req", None, Some(InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY), "Ignore a specific platform requirement (php & ext- packages).", None).unwrap().into(),
InputOption::new("ignore-platform-reqs", None, Some(InputOption::VALUE_NONE), "Ignore all platform requirements (php & ext- packages).", None).unwrap().into(),
- InputArgument::new("packages", Some(InputArgument::IS_ARRAY | InputArgument::OPTIONAL), "Should not be provided, use composer require instead to add a given package to composer.json.", None).unwrap().into(),
+ InputArgument::new("packages", Some(InputArgument::IS_ARRAY | InputArgument::OPTIONAL), "Should not be provided, use shirabe require instead to add a given package to composer.json.", None).unwrap().into(),
]);
self.set_help(
"The <info>install</info> command reads the composer.lock file from\n\
@@ -107,7 +107,7 @@ impl Command for InstallCommand {
let args_vec: Vec<String> = args.as_array().map(<[String]>::to_vec).unwrap_or_default();
if !args_vec.is_empty() {
io.write_error(&format!(
- "<error>Invalid argument {}. Use \"composer require {}\" instead to add packages to your composer.json.</error>",
+ "<error>Invalid argument {}. Use \"shirabe require {}\" instead to add packages to your composer.json.</error>",
args_vec.join(" "),
args_vec.join(" ")
));
@@ -120,7 +120,7 @@ impl Command for InstallCommand {
.as_bool()
.unwrap_or(false)
{
- io.write_error("<error>Invalid option \"--no-install\". Use \"composer update --no-install\" instead if you are trying to update the composer.lock file.</error>");
+ io.write_error("<error>Invalid option \"--no-install\". Use \"shirabe update --no-install\" instead if you are trying to update the composer.lock file.</error>");
return Ok(1);
}
diff --git a/crates/shirabe/src/command/outdated_command.rs b/crates/shirabe/src/command/outdated_command.rs
index b32fccdf..ee910d5a 100644
--- a/crates/shirabe/src/command/outdated_command.rs
+++ b/crates/shirabe/src/command/outdated_command.rs
@@ -63,7 +63,7 @@ impl Command for OutdatedCommand {
InputOption::new("ignore-platform-reqs", None, Some(InputOption::VALUE_NONE), "Ignore all platform requirements (php & ext- packages). Use with the --outdated option", None).unwrap().into(),
]);
self.set_help(
- "The outdated command is just a proxy for `composer show -l`\n\n\
+ "The outdated command is just a proxy for `shirabe show -l`\n\n\
The color coding (or signage if you have ANSI colors disabled) for dependency versions is as such:\n\n\
- <info>green</info> (=): Dependency is in the latest version and is up to date.\n\
- <comment>yellow</comment> (~): Dependency has a new version available that includes backwards\n \
diff --git a/crates/shirabe/src/command/package_discovery_trait.rs b/crates/shirabe/src/command/package_discovery_trait.rs
index b743b5c1..4a915fbe 100644
--- a/crates/shirabe/src/command/package_discovery_trait.rs
+++ b/crates/shirabe/src/command/package_discovery_trait.rs
@@ -784,7 +784,7 @@ pub trait PackageDiscoveryTrait: BaseCommand {
None => {
if platform_repo.is_platform_package_disabled(link.get_target()) {
details.push(format!(
- "{} {} requires {} {} but it is disabled by your platform config. Enable it again with \"composer config platform.{} --unset\".",
+ "{} {} requires {} {} but it is disabled by your platform config. Enable it again with \"shirabe config platform.{} --unset\".",
candidate.get_pretty_name(),
candidate.get_pretty_version(),
link.get_target(),
diff --git a/crates/shirabe/src/command/remove_command.rs b/crates/shirabe/src/command/remove_command.rs
index e50999bb..1f6f25d0 100644
--- a/crates/shirabe/src/command/remove_command.rs
+++ b/crates/shirabe/src/command/remove_command.rs
@@ -637,7 +637,7 @@ impl Command for RemoveCommand {
}
io.write_error(&format!(
- "<info>Running composer update {}{}</info>",
+ "<info>Running shirabe update {}{}</info>",
packages.join(" "),
flags
));
@@ -695,7 +695,7 @@ impl Command for RemoveCommand {
.is_empty()
{
io.write_error(&format!(
- "<error>Removal failed, {} is still present, it may be required by another package. See `composer why {}`.</error>",
+ "<error>Removal failed, {} is still present, it may be required by another package. See `shirabe why {}`.</error>",
package, package
));
return Ok(2);
diff --git a/crates/shirabe/src/command/repository_command.rs b/crates/shirabe/src/command/repository_command.rs
index 4cf0c981..8c92b05d 100644
--- a/crates/shirabe/src/command/repository_command.rs
+++ b/crates/shirabe/src/command/repository_command.rs
@@ -295,17 +295,17 @@ impl Command for RepositoryCommand {
self.set_help(
"This command lets you manage repositories in your composer.json.\n\n\
Examples:\n \
- composer repo list\n \
- composer repo add foo vcs https://github.com/acme/foo\n \
- composer repo add bar composer https://repo.packagist.com/bar\n \
- composer repo add zips '{\"type\":\"artifact\",\"url\":\"/path/to/dir/with/zips\"}'\n \
- composer repo add baz vcs https://example.org --before foo\n \
- composer repo add qux vcs https://example.org --after bar\n \
- composer repo remove foo\n \
- composer repo set-url foo https://git.example.org/acme/foo\n \
- composer repo get-url foo\n \
- composer repo disable packagist.org\n \
- composer repo enable packagist.org\n\n\
+ shirabe repo list\n \
+ shirabe repo add foo vcs https://github.com/acme/foo\n \
+ shirabe repo add bar composer https://repo.packagist.com/bar\n \
+ shirabe repo add zips '{\"type\":\"artifact\",\"url\":\"/path/to/dir/with/zips\"}'\n \
+ shirabe repo add baz vcs https://example.org --before foo\n \
+ shirabe repo add qux vcs https://example.org --after bar\n \
+ shirabe repo remove foo\n \
+ shirabe repo set-url foo https://git.example.org/acme/foo\n \
+ shirabe repo get-url foo\n \
+ shirabe repo disable packagist.org\n \
+ shirabe repo enable packagist.org\n\n\
Use --global/-g to alter the global config.json instead.\n\
Use --file to alter a specific file.",
);
@@ -360,7 +360,7 @@ impl Command for RepositoryCommand {
}
"add" => {
if name.is_none() {
- return Err(RuntimeException::new("You must pass a repository name. Example: composer repo add foo vcs https://example.org".to_string()).into());
+ return Err(RuntimeException::new("You must pass a repository name. Example: shirabe repo add foo vcs https://example.org".to_string()).into());
}
if arg1.is_none() {
return Err(RuntimeException::new(
@@ -373,7 +373,7 @@ impl Command for RepositoryCommand {
JsonFile::parse_json(Some(arg1_str), None)?
} else {
if arg2.is_none() {
- return Err(RuntimeException::new("You must pass the type and a url. Example: composer repo add foo vcs https://example.org".to_string()).into());
+ return Err(RuntimeException::new("You must pass the type and a url. Example: shirabe repo add foo vcs https://example.org".to_string()).into());
}
let mut m = IndexMap::new();
m.insert("type".to_string(), PhpMixed::String(arg1_str.to_string()));
@@ -458,7 +458,7 @@ impl Command for RepositoryCommand {
"set-url" | "seturl" => {
if name.is_none() || arg1.is_none() {
return Err(RuntimeException::new(
- "Usage: composer repo set-url <name> <new-url>".to_string(),
+ "Usage: shirabe repo set-url <name> <new-url>".to_string(),
)
.into());
}
@@ -472,7 +472,7 @@ impl Command for RepositoryCommand {
"get-url" | "geturl" => {
if name.is_none() {
return Err(RuntimeException::new(
- "Usage: composer repo get-url <name>".to_string(),
+ "Usage: shirabe repo get-url <name>".to_string(),
)
.into());
}
@@ -517,7 +517,7 @@ impl Command for RepositoryCommand {
"disable" => {
if name.is_none() {
return Err(RuntimeException::new(
- "Usage: composer repo disable packagist.org".to_string(),
+ "Usage: shirabe repo disable packagist.org".to_string(),
)
.into());
}
@@ -540,7 +540,7 @@ impl Command for RepositoryCommand {
"enable" => {
if name.is_none() {
return Err(RuntimeException::new(
- "Usage: composer repo enable packagist.org".to_string(),
+ "Usage: shirabe repo enable packagist.org".to_string(),
)
.into());
}
diff --git a/crates/shirabe/src/command/require_command.rs b/crates/shirabe/src/command/require_command.rs
index 197adfd6..4f90a532 100644
--- a/crates/shirabe/src/command/require_command.rs
+++ b/crates/shirabe/src/command/require_command.rs
@@ -337,7 +337,7 @@ impl RequireCommand {
io.write_error3(
&format!(
- "<info>Running composer update {}{}</info>",
+ "<info>Running shirabe update {}{}</info>",
implode(
" ",
&array_keys(requirements)
@@ -453,7 +453,7 @@ impl RequireCommand {
)? {
if !req.contains_key("version") {
io.write_error3(&format!(
- "You can also try re-running composer require with an explicit version constraint, e.g. \"composer require {}:*\" to figure out if any version is installable, or \"composer require {}:^2.1\" if you know which you need.",
+ "You can also try re-running shirabe require with an explicit version constraint, e.g. \"shirabe require {}:*\" to figure out if any version is installable, or \"shirabe require {}:^2.1\" if you know which you need.",
req.get("name").cloned().unwrap_or_default(),
req.get("name").cloned().unwrap_or_default(),
), true, io_interface::NORMAL);
@@ -891,7 +891,7 @@ impl Command for RequireCommand {
self.get_io().write_error3("<error>The \"--fixed\" option is only allowed for packages with a \"project\" type or for dev dependencies to prevent possible misuses.</error>", true, io_interface::NORMAL);
if config.get("type").is_none() {
- self.get_io().write_error3("<error>If your package is not a library, you can explicitly specify the \"type\" by using \"composer config type project\".</error>", true, io_interface::NORMAL);
+ self.get_io().write_error3("<error>If your package is not a library, you can explicitly specify the \"type\" by using \"shirabe config type project\".</error>", true, io_interface::NORMAL);
}
return Ok(1);
diff --git a/crates/shirabe/src/command/show_command.rs b/crates/shirabe/src/command/show_command.rs
index 090678eb..f1123e14 100644
--- a/crates/shirabe/src/command/show_command.rs
+++ b/crates/shirabe/src/command/show_command.rs
@@ -1830,7 +1830,7 @@ impl Command for ShowCommand {
{
// Borrow is local; release composer_local borrow first.
let _ = root_pkg;
- self.get_io().write_error("<warning>No dependencies installed. Try running composer install or update.</warning>");
+ self.get_io().write_error("<warning>No dependencies installed. Try running shirabe install or update.</warning>");
}
}
}
diff --git a/crates/shirabe/src/command/update_command.rs b/crates/shirabe/src/command/update_command.rs
index 09809eb2..1ae7cb67 100644
--- a/crates/shirabe/src/command/update_command.rs
+++ b/crates/shirabe/src/command/update_command.rs
@@ -423,7 +423,7 @@ impl Command for UpdateCommand {
io_interface::NORMAL,
);
io.write(&format!(
- "<info>Run `composer require {}` or `composer require {}:{}` instead to replace the constraint</info>",
+ "<info>Run `shirabe require {}` or `shirabe require {}:{}` instead to replace the constraint</info>",
package, package, constraint,
));
diff --git a/crates/shirabe/src/command/validate_command.rs b/crates/shirabe/src/command/validate_command.rs
index d460ea6c..16d3b4d0 100644
--- a/crates/shirabe/src/command/validate_command.rs
+++ b/crates/shirabe/src/command/validate_command.rs
@@ -306,7 +306,7 @@ impl Command for ValidateCommand {
let locker = composer.get_locker().clone();
let mut locker = locker.borrow_mut();
if locker.is_locked() && !locker.is_fresh()? {
- lock_errors.push("- The lock file is not up to date with the latest changes in composer.json, it is recommended that you run `composer update` or `composer update <package name>`.".to_string());
+ lock_errors.push("- The lock file is not up to date with the latest changes in composer.json, it is recommended that you run `shirabe update` or `shirabe update <package name>`.".to_string());
}
if locker.is_locked() {