Drux is now a full project
Someone asked if this could be released as a full project, so I did.
While it is fine to use this from github, as a drush extension, the drupal.org project allows to include it in a site / project as a regular module. Do whatever works best for your work flow!

Drux has moved to also on github!
https://github.com/donquixote/drupal-drux

Status: Before this becomes a real project, some of you guys has to suggest a different name! "Drux" is just too meaningless.
-> Drux has been sitting in the sandbox for ages, and noone came up with a different name. So, now it just keeps the name.

-------------------

Additional drush commands for dealing with module dependencies in a code-driven development workflow.

drush dep
(drux-enable-dependencies)
Download and enable dependencies of all enabled modules.

drush obs [module 1] [module 2] [module 3]
(drux-find-obsolete)
Find all modules that could be safely disabled without disabling any of the modules specified as arguments.

Use case: The PULL situation

You pull code (modules and features) that a fellow developer has worked on. These modules could contain new dependencies. You run "drush updb" and "drush cc all", but the dependencies are still not enabled.

Solution:
Now in addition you run "drush dep", and everything is fine.

Use case: The PUSH situation

You worked on some modules (incl features), and want to push them upstream. Your fellow developers need to know which other modules they need to enable, so you add those as dependencies. But, how can you be sure you did not forget a dependency?

Solution:
You have one or more "seed" modules, with all the dependencies. You agree in your team that these should always be enabled.
You might also have a "personal seed module", which contains the dependencies you do not want to share with the team.

Whenever you enable a new module, and you want everyone in your team to also enable it, you add it as a dependency somewhere, so it becomes a direct or indirect dependency of the seed module(s).

You can then run "drush obs seed1 seed2 seed_personal" to identify all the modules you forgot to add as dependency. You should either disable these modules, or add them as dependencies somewhere.

Project information

Releases