diff --git a/src/Composer/Command/InitCommand.php b/src/Composer/Command/InitCommand.php index 4c5871034..f21be1937 100644 --- a/src/Composer/Command/InitCommand.php +++ b/src/Composer/Command/InitCommand.php @@ -159,6 +159,8 @@ EOT if (!$name = $input->getOption('name')) { $name = basename($cwd); + $name = preg_replace('{(?:([a-z])([A-Z])|([A-Z])([A-Z][a-z]))}', '\\1\\3-\\2\\4', $name); + $name = strtolower($name); if (isset($git['github.user'])) { $name = $git['github.user'] . '/' . $name; } elseif (!empty($_SERVER['USERNAME'])) { @@ -169,6 +171,12 @@ EOT // package names must be in the format foo/bar $name = $name . '/' . $name; } + } else { + if (!preg_match('{^[a-z0-9_.-]+/[a-z0-9_.-]+$}', $name)) { + throw new \InvalidArgumentException( + 'The package name '.$name.' is invalid, it should be lowercase and have a vendor name, a forward slash, and a package name, matching: [a-z0-9_.-]+/[a-z0-9_.-]+' + ); + } } $name = $dialog->askAndValidate( @@ -179,9 +187,9 @@ EOT return $name; } - if (!preg_match('{^[a-z0-9_.-]+/[a-z0-9_.-]+$}i', $value)) { + if (!preg_match('{^[a-z0-9_.-]+/[a-z0-9_.-]+$}', $value)) { throw new \InvalidArgumentException( - 'The package name '.$value.' is invalid, it should have a vendor name, a forward slash, and a package name, matching: [a-z0-9_.-]+/[a-z0-9_.-]+' + 'The package name '.$value.' is invalid, it should be lowercase and have a vendor name, a forward slash, and a package name, matching: [a-z0-9_.-]+/[a-z0-9_.-]+' ); }