Ideally, a project maintainer should be able to run mvn zanata:push, mvn zanata:pull (Maven) zanata push, zanata pull (Python) with no other arguments. Even though the push/pull command is generic, it must somehow provide options which are specific to project types (publican, gettext, Properties), whether from zanata.xml or from the command line. We should discuss the best way of handling this configuration. One possible solution: the generic push/pull commands have one option of their own: projectType. (With the value of projectType coming from zanata.xml, unless overridden on the command line.) Depending on the project type, push might be treated as an alias for publican-push, po-push, or props-push, each with its specific options. So if projectType=publican, the push command will automatically support --srcdir, --transdir and --import-po. And as we move some of those options into zanata.xml, they can be picked up as appropriate. This may or may not be practical. I think this can work in Maven, because all options come from system properties or from the generic plugin config (they're not checked against the current goal) Whether this will work in Python probably depends on the options-parsing and whether it can support dynamic aliasing.
VERIFIED with zanata maven client 1.4-SNAPSHOT
VERIFIED with zanata-python-client-1.3.3