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 our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
cli 2.0: Add commands management #7278
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I like very much this. A few comments and points for discussion, please check.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Some comments about the implementation, I think we can simplify it a little bit. Maybe a PR would have been easier 😅
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would say this is good as-is for merging, other improvements and fixes will follow when more commands are added, or with the new conan_api.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's merge and start building on top of this 🎉
* add management for commands 2.0 * refactor cli * fail on empty docs * rename _conan to _conan_api * minimum required version * add fixme for conan factory * add discuss * raise on not allowed formatter * refactor weird try, except, finally pattern * change output handling * remove weird pattern * minor changes * move exception handling * use formatters as dictonary * minor changes * do not allow empty remotee * add output argument only if there are formatters * move exit codes * change default formatter * add init
… user (#7390) * Only add User-Agent to headers dict if there was none provided by the user * [cpp_info] [refact] Do not assign to 'xxxx_paths' fields (#7276) * use get_configs instead of config * fixing tests * fix tests * fix tests * move pkg_config logic to cpp_info so everyone uses the same * 'name' from cpp_info needs the generator it is requested for * configs is a private dict now * revert change in init * add test for Conan v2 behavior * deps_cpp_info['deps'].name warns to use get_name instead * use cpp_info properly * compare as lists (convert possible iterables to lists) * set legit values in cpp_info * readonly fields expected to be iterable (not nessessaryly lists) * remove print statement from test * let any iterable type in * revert test changes * use property 'configs' to retrieve the different configs * check type for cpp_info/deps_cpp_info objects * just a list * Do not fail with 'conan remove -r remote -p' if there are no packages in the remote (#7338) * remove only if there are packages to remove * working on v1 too * no need to scape an r-string * v1 -> no revs * if not conaninfo, search doesn't work * propagate 404 only if there are packages for the reference * Update conans/client/rest/rest_client_v1.py Co-authored-by: James <james@conan.io> * when it is not none * package_ids is always a list. Capture unrelated errors Co-authored-by: James <james@conan.io> * [cpp_info] [refact] Rewrite text generator parser (#7277) * use get_configs instead of config * fixing tests * fix tests * fix tests * move pkg_config logic to cpp_info so everyone uses the same * 'name' from cpp_info needs the generator it is requested for * configs is a private dict now * revert change in init * add test for Conan v2 behavior * deps_cpp_info['deps'].name warns to use get_name instead * some attributes doesn't make sense at the base level * rewrite txt parser * revert test changes * use property 'configs' to retrieve the different configs * Avoid usage of '__len__' hook * fixing test: never root * read names from txt serialization * the only information that is serialized in the 'txt' generated file is the name for the txt generator * use ordereddict to retrieve deps in order * add test for next Conan v2 * remove commented lines * remove unused method * wrong behavior in py2 for it scope * fix tests in windows * revert single change * relax msbuild generator to not fail in Linux (#7361) * relax msbuild generator to not fail in Linux * fix test * cli 2.0: Add commands management (#7278) * add management for commands 2.0 * refactor cli * fail on empty docs * rename _conan to _conan_api * minimum required version * add fixme for conan factory * add discuss * raise on not allowed formatter * refactor weird try, except, finally pattern * change output handling * remove weird pattern * minor changes * move exception handling * use formatters as dictonary * minor changes * do not allow empty remotee * add output argument only if there are formatters * move exit codes * change default formatter * add init * conditional generators test with configure() (#7359) * conditional generators test with configure() * fixing test * fixing test * adding generators in the command line * #7328 Add 'outdated' column in search table (#7364) * #7328 Add 'outdated' column in search table Signed-off-by: Uilian Ries <uilianries@gmail.com> * #7328 do not remove more than requested Signed-off-by: Uilian Ries <uilianries@gmail.com> * #7328 Separate functional test Signed-off-by: Uilian Ries <uilianries@gmail.com> * #7328 Update other test to support outdated column Signed-off-by: Uilian Ries <uilianries@gmail.com> * #7364 No need for an additional test (#7373) * implementing __contains__ for option in self.info.options (#7303) * implementing __contains__ for option in self.info.options * add test * more tests * clarified test * changed self.info.options.whatever to raise * improve tests * fix tests * Update conans/test/functional/package_id/package_id_test.py Co-authored-by: Javier G. Sogo <jgsogo@gmail.com> * Update conans/test/functional/package_id/package_id_test.py Co-authored-by: Javier G. Sogo <jgsogo@gmail.com> * fixed test Co-authored-by: Javier G. Sogo <jgsogo@gmail.com> * minor pep8 in conan_api.py * contribute test Co-authored-by: Javier G. Sogo <jgsogo@gmail.com> Co-authored-by: James <james@conan.io> Co-authored-by: Carlos Zoido <mrgalleta@gmail.com> Co-authored-by: Uilian Ries <uilianries@gmail.com>
Changelog: Feature: Add commands management for cli 2.0.
Docs: omit
First PR to introduce the changes of #7170
Now the commands are in separate python files, and have decorators to add the group and formatters. The formatters can go in the same python file that the command. To define a new command the python file should be added to the cli/commands folder and be defined similar to this:
The command always return a
info
that will be used by the formatter to show the final output of the commands depending on the--output
argument (that argument hascli
value by default)To test this the
CONAN_V2_CLI
environment variable must be defined.develop
branch, documenting this one.Note: By default this PR will skip the slower tests and will use a limited set of python versions. Check here how to increase the testing level by writing some tags in the current PR body text.