On 9/3/10 18:21 , Tres Seaver wrote:
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
Wichert Akkerman wrote:
I have noticed that now that we are almost exclusively using eggs to distribute our software using "bin/instance run" has become difficult: often the script you want to run is located inside an egg which makes to path to it hard to predict. This is not the most user friendly command:
bin/instance run eggs/my.package-*/my/package/script.py
If a user is using a shared egg directory from zc.buildout or something else the egg can be anywhere on the filesystem, making it next to impossible to explain to users.
I am considering to modify bin/instance run to check if its first argument is a filesystem path, and if not consider the argument to be a dotted name of a callable which should be invoke. That way backwards compatibility remains, but you can now also do this:
bin/instance run my.package.script.main
What about using something like the EntryPoint syntax:
$ bin/instance run my.package.script:main
We could even add a new entry point class for it, and allow:
$ bin/instance run egg:my.package#some_name
I've opted for a third alternative: use an entry point to define the extra commands. If you do this in setup.py: entry_points=""" [zopectl.command] mycommand = mypackage.commands:func """ you can do: $ bin/instance mycommand [<args>] The advantage of this approach is that it makes for more user friendly commands that do not needlessly expose implementation details to the commandline. Wichert.