I guess one solution would be to edit the files in library/zend/Tool/Project/Context/Zf which seem to provide the contents/structures used for the out-of-the-box project.
But that doesn't sound like the right solution. Further I have already found out in my ongoing research that the tool (zf.bat or sh) scans all directories on the php inculde_path for 'manifests' and 'providers' which in turn provide the functionality for the tool.
The article Zend_Tool for the Developer by one of the Zend Developers has just clarified some things.
Manifests
can be used to bundle and 'load' as many providers as you want.
Providers
Providers in turn are the actual containers for the CLI commands you want to use and the design is similar to the 'controller/action' design. You can call a method (action) of a specific class (controller) from the command prompt by calling:
zf <method-name> <class-name>
given that this class extends Zend_Tool_Project_Provider_Abstract
Subsequently I found out that the Manifest that gets the providers responsible for setting up the out-of-the-box layout is found in:
library\Zend\Tool\Project\Provider\Manifest.php
In this file the following Providers are returned to the tool:
public function getProviders()
{
return array(
new Zend_Tool_Project_Provider_Profile(),
new Zend_Tool_Project_Provider_Project(),
new Zend_Tool_Project_Provider_Controller(),
new Zend_Tool_Project_Provider_Action(),
new Zend_Tool_Project_Provider_View(),
new Zend_Tool_Project_Provider_Module(),
new Zend_Tool_Project_Provider_ProjectProvider()
);
}
These are obviously the available default CLI commands.
Furthermore it is also obvious that you can have a lot of influence on what is created by providing your own xml project profile which is by default created in library/Zend/Tool/Project/Provider/Project in the method _getDefaultProfile().
What I'm trying at the moment:
- overriding the default Providers and the default Manifest with my own stuff and in my own Project Provider override the _getDefaultProfile() and set some stuff to true instead of false.
I'm having some problems with the CLI not accepting my Providers.
I'll report back on the progress!