From 9ec641659e831df23937ae3b3657c8a24874efad Mon Sep 17 00:00:00 2001 From: Justin Rainbow Date: Sun, 8 Jan 2012 15:33:06 -0700 Subject: [PATCH] Validating package name input for init command --- src/Composer/Command/InitCommand.php | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/Composer/Command/InitCommand.php b/src/Composer/Command/InitCommand.php index e5cbaa34e..749e7ab00 100644 --- a/src/Composer/Command/InitCommand.php +++ b/src/Composer/Command/InitCommand.php @@ -141,13 +141,28 @@ EOT $name = basename($cwd); if (isset($git['github.user'])) { $name = $git['github.user'] . '/' . $name; + } else { + // package names must be in the format foo/bar + $name = $name . '/' . $name; } } - $name = $dialog->ask( + $name = $dialog->askAndValidate( $output, $dialog->getQuestion('Package name', $name), - $name + function ($value) use ($name) { + if (null === $value) { + return $name; + } + + if (!preg_match('{^[a-z0-9_.-]+/[a-z0-9_.-]+$}i', $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_.-]+' + ); + } + + return $value; + } ); $input->setOption('name', $name);