Skip to content

Bash completion#56

Merged
Taywee merged 9 commits intomasterfrom
unknown repository
Dec 26, 2017
Merged

Bash completion#56
Taywee merged 9 commits intomasterfrom
unknown repository

Conversation

@ghost
Copy link
Copy Markdown

@ghost ghost commented Dec 23, 2017

Adds bash completion function. Example:

args::ArgumentParser parser("parser");

// ...

args::CompletionFlag complete(parser, {"complete"});

try
{
    parser.ParseCLI(args, args);
    // ....
}
catch (args::Completion &e)
{
    std::cout << e.what();
    return 0;
}

Under the hood, bash script calls program --complete bash NUMBER_OF_CURRENT_ARGUMENT ARGS. I wanted to avoid rewriting args in bash.

To test this you can build examples with cmake and add bash completion for examples/completion.cxx:

. examples/bash_completion.sh

I broke HelpChoices API (std::string -> std::vector<std::string>). It wasn't released so I guess it's ok. Choices strings are also used by completion.

In theory adding zsh and fish should be relatively easy. I added first argument to --complete which could be used for shell specific code.

@coveralls
Copy link
Copy Markdown

Coverage Status

Coverage decreased (-1.6%) to 93.353% when pulling 32a103d on pavel-belikov:bash-completion into c5a6098 on Taywee:master.

@coveralls
Copy link
Copy Markdown

Coverage Status

Coverage decreased (-0.1%) to 94.818% when pulling 016304b on pavel-belikov:bash-completion into c5a6098 on Taywee:master.

@coveralls
Copy link
Copy Markdown

Coverage Status

Coverage increased (+0.06%) to 95.01% when pulling b8fc68a on pavel-belikov:bash-completion into c5a6098 on Taywee:master.

@Taywee Taywee merged commit 365c0ca into Taywee:master Dec 26, 2017
@Taywee
Copy link
Copy Markdown
Owner

Taywee commented Dec 26, 2017

Yeah, I'm happy with breaking backwards compatibility between minor releases. If it's warranted enough, I'm happy breaking backwards compatibility after a realease, with major version bump.

@ghost ghost deleted the bash-completion branch December 26, 2017 06:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants