Add a `--dry-run` param to install
Sometimes I run into issues with my dependencies having conflicting dependencies. When you have lots of dependencies, it can be difficult to debug exactly which dependencies conflict.
When you run curd install --dry-run it would print out the entire dependency tree that it has created internally, but doesn't actually install anything.
Alternatively, you could make this a separate command.
It would also be cool to have a validate command that verifies the dependency tree makes sense (or the --dry-run command could return an appropriate status code).
Sounds definitely good to have a --dry-run option. However, we can't actually verify the dependency tree before building all the requested packages. This is a restriction imposed by the setuptools interface, based on executing the setup.py file instead of just reading dependency information from a static file.
There's indeed support for using a static file instead of setup.py. It's the so called setup.cfg, created for allowing tools that interact with python packages to read this and other metadata info without executing any code. However, we can't bare on such feature because it's kinda rare to find packages that actually use it in PyPi.
So, the validate command wouldn't actually do anything but execute the whole Retrieve & Build process and bail out before starting the installer.
The error output produced by curdling when it faces a version conflict could also be improved to provide more valuable information about how to recover from that failure.
I do have ideas for improving the curdling internal server for actually saving this kind of metadata somewhere else after caching a requested package, so it would be available for all packages present in a curdling server; This would certainly speed up the whole process.
I'm planning to release a version of curdling in the next few days, but the --dry-run could definitely be part of the next iteration, that will include refactoring the index component.
Thanks for taking your time writing the issue.