-
Notifications
You must be signed in to change notification settings - Fork 97
Design_document
** This is under construction **
If you want to contribute or use progen via its classes, this is the place to start.
This class is an abstraction on top of projects.
from project_generator.generate import Generator
# projects.yaml is a main record file
generator = Generator('projects.yaml')
# get a project named project_name
project = next(Generator(projects_yaml).generate('project_name'))
The most important class is the project
# create a new project
project_settings = ProjectSettings()
project = Project('name', project_dict, project_settings)
Project_dict can be either yaml files or python dictionaries. If YAML files are passed, then they are parsed and project_dict are formed.
The project dictionaries are defined via ProjectTemplate classes. For a user, there's ProjectTemplate. To get a project template:
from project_generator.project import ProjectTemplate
# create project data
project_data = {'common': {}}
project_data['common'] = ProjectTemplate.get_project_template()
# we can now fill in our project details
project_data['common']['name'] = my_name
project_data['common']['sources'] = source_files
It contains the progen settings. It's required to be passed for main progen classes, as it defines the user settings.
from project_generator.settings import ProjectSettings
project_settings = ProjectSettings()
The main tool classes are Tool and Exporter, any tool class should inherit from these, and implement their methods. The Tool defines API for tools (toolchain, tool name). The Exporter defines API for generating projects.
from .tool import Tool, Exporter
class MyNewTool(Tool, Exporter):
pass
** Project generator wiki, 0xc0170 **