DevAssistant consists of several parts:
Internally, each assistant is represented by instance of devassistant.yaml_assistant.YamlAssistant. Instances are constructed by DevAssistant in runtime from parsed yaml files. Each assistant can have zero or more subassistants. This effectively forms a tree-like structure. For example:
MainAssistant
/ \
/ \
Python Ruby
/ \ / \
/ \ / \
Django Flask Rails Sinatra
This structure is defined by filesystem hierarchy as explained in Assistants Loading Mechanism
Each assistant can optionally define arguments that it accepts (either on commandline, or from GUI). For example, you can run the leftmost path with:
$ da crt python [python assistant arguments] django [django assistant arguments]
The crt in the above example means, that we’re running an assistant that creates a project.
There are three assistant roles:
The main purpose of having roles is separating different types of tasks. It would be confusing to have e.g. python django assistant (that creates new project) side-by-side with eclipse assistant (that registers existing project into Eclipse).
If an assistant has any subassistants, one of them must be used. E.g. in the example above, you can’t use just Python assistant, you have to choose between Django and Flask. If Django would get a subassistant, it wouldn’t be usable on its own any more, etc.
If you want to contribute (bug reporting, new assistants, patches for core, improving documentation, ...), please use our Github repo:
Unless you actually have DevAssistant installed, you can checkout the sources like this (just copy&paste this to get the job done):
git clone https://github.com/bkabrda/devassistant
# get the official set of assistants
cd devassistant
git submodule init
git submodule update
You can find list of core Python dependencies in file requirements.txt. On top of that, you’ll need pygobject if you want to play around with GUI. DevAssistant also assumes that git is installed on your system.
In next version, we will include a prep assistant, that will be able to actually do this for you... Sweet, ain’t it?