Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

[Console][DX] Fixed ambiguous error message when using a duplicate option shortcut#18864

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Closed
peterrehm wants to merge2 commits intosymfony:masterfrompeterrehm:console-command
Closed

Conversation

@peterrehm
Copy link
Contributor

@peterrehmpeterrehm commentedMay 25, 2016
edited
Loading

QA
Branch?2.3
Bug fix?yes
New feature?no
BC breaks?no
Deprecations?no
Tests pass?yes
Fixed tickets#18856
LicenseMIT
Doc PR-

I assume this should be merged into 2.3 as per@stof's comment.

There is a race condition when you run a command which has a duplicate option shortcut. Simply changing the order so that Options are merged before the Arguments solves that race condition.

$this->setName('my:super:command')->setAliases(['my:super:commandalias'])->setDescription('Performs some irrelevant work.')->addOption('survey','e', InputOption::VALUE_REQUIRED,'My option with a shortcut.')

Gives the error message:

  [Symfony\Component\Console\Exception\LogicException]  An argument with name "command" already exists.

This happens as the first time the definition is merged happens here:

https://github.com/symfony/symfony/blob/master/src/Symfony/Component/Console/Application.php#L820

As this throws an error here:

https://github.com/symfony/symfony/blob/master/src/Symfony/Component/Console/Command/Command.php#L309

The commans are merged but not the options.

Merging it then again when the command is run

https://github.com/symfony/symfony/blob/master/src/Symfony/Component/Console/Command/Command.php#L217

throws an error due to the duplicate argument as the arguments already have been merged. This time the error message is not surpressed and will confuse the user.

Changing the order should fix the issue for duplicate arguments as well as for duplicate options.

@carsonbotcarsonbot added Status: Needs Review Console DXDX = Developer eXperience (anything that improves the experience of using Symfony) Bug labelsMay 25, 2016
@stof
Copy link
Member

Please add a test covering this to prevent regressions

@stof
Copy link
Member

btw, it may even go into 2.3 (if it is merged in the next few days)

@peterrehm
Copy link
ContributorAuthor

@stof Test just has been added.

$input =newArrayInput(array('command' =>'foo'));
$output =newNullOutput();

$application->run($input,$output);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

Please remove the trailing spaces here.

Copy link
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

Updated.

@xabbuh
Copy link
Member

👍 apart from my minor comment

Status: Reviewed

@fabpot
Copy link
Member

Thank you@peterrehm.

fabpot added a commit that referenced this pull requestMay 26, 2016
…uplicate option shortcut (peterrehm)This PR was submitted for the master branch but it was merged into the 2.3 branch instead (closes#18864).Discussion----------[Console][DX] Fixed ambiguous error message when using a duplicate option shortcut| Q             | A| ------------- | ---| Branch?       | 2.3| Bug fix?      | yes| New feature?  | no| BC breaks?    | no| Deprecations? | no| Tests pass?   | yes| Fixed tickets |#18856| License       | MIT| Doc PR        | -I assume this should be merged into 2.3 as per@stof's comment.There is a race condition when you run a command which has a duplicate option shortcut. Simply changing the order so that Options are merged before the Arguments solves that race condition.````php$this->setName('my:super:command')->setAliases(['my:super:commandalias'])->setDescription('Performs some irrelevant work.')->addOption('survey', 'e', InputOption::VALUE_REQUIRED, 'My option with a shortcut.')````Gives the error message:```  [Symfony\Component\Console\Exception\LogicException]  An argument with name "command" already exists.```This happens as the first time the definition is merged happens here:https://github.com/symfony/symfony/blob/master/src/Symfony/Component/Console/Application.php#L820As this throws an error here:https://github.com/symfony/symfony/blob/master/src/Symfony/Component/Console/Command/Command.php#L309The commans are merged but not the options.Merging it then again when the command is runhttps://github.com/symfony/symfony/blob/master/src/Symfony/Component/Console/Command/Command.php#L217throws an error due to the duplicate argument as the arguments already have been merged. This time the error message is not surpressed and will confuse the user.Changing the order should fix the issue for duplicate arguments as well as for duplicate options.Commits-------7cb7655 [Console][DX] Fixed ambiguous error message when using a duplicate option shortcut
@fabpotfabpot closed thisMay 26, 2016
@fabpotfabpot mentioned this pull requestMay 26, 2016
@peterrehmpeterrehm deleted the console-command branchMay 26, 2016 18:08
@fabpotfabpot mentioned this pull requestMay 30, 2016
This was referencedJun 6, 2016
Sign up for freeto join this conversation on GitHub. Already have an account?Sign in to comment

Reviewers

No reviews

Assignees

No one assigned

Labels

BugConsoleDXDX = Developer eXperience (anything that improves the experience of using Symfony)Status: Reviewed

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

5 participants

@peterrehm@stof@xabbuh@fabpot@carsonbot

[8]ページ先頭

©2009-2025 Movatter.jp