Having in mind further extensions and code readibility Valder introduces a common structure holding all data necessary to build an application with some gap left for custom extensions.
This structure, called later Recipe, consists of several essential elements describing whole build project:
Section covers some basic project information like name, version, etc
Set of source code files both for library and runtime compiled binary
Consists of all dependend libraries
A substructure with set of configuration entries for each of instantiated plugin.
In usual situations recipe structure is used internally by Valder and Valder plugins to fill project information in as much as possible automatic manner. Just before running build phase Valder scans current working directory for a configuration file.
Whole recipe is deserialized from recipe file - recipe.bob. This is just a simple JSON file with very meaningful structure.
Work in progress
{
"project": {
"name": "Test project",
"shortName": "test",
"version": "0.0.1",
"": {
"library": [
"./src/library/vala/Test.vala"
],
"runtime": [
"./src/main/vala/TestMain.vala"
]
},
"dependencies" : [
{
"dependency" : "glib",
"" : "2.0"
},
{
"dependency" : "gobject",
"version" : "2.0",
"" : ""
},
{
"dependency" : "gee",
"version" : "0.8",
"scope" : "library"
},
{
"dependency" : "gtk+",
"version" : "3.0",
"scope" : "runtime"
}
]
},
"plugins": {
"collect-sources": {
"verbose": true
},
"build": {
"verbose": false
}
}
}