json_schema: {
      "$schema": "http://json-schema.org/draft-04/schema#",
      "type": "object",
      "additionalProperties": false,
      "required": [
          "name",
          "type"
      ],
      "properties": {
          "name": {
              "type": "string",
              "description": "Package name using 'org/package' format."
          },
          "type": {
              "type": "string",
              "description": "Either 'library' for static and shared libraries or 'project' for executable projects."
          },
          "version": {
              "type": "string",
              "description": "Version of the package, used only for development purposes (eq. local repository)."
          },
          "include": {
              "type": "string",
              "description": "Path to the directory containing header files (.h and .hpp). The default is 'include'."
          },
          "source": {
              "type": "string",
              "description": "Path to the directory containing source files (.c and .cpp). The default is 'src'."
          },
          "compilers": {
              "type": "object",
              "description": "List of supported compilers. By default one of the locally supported compilers is used.",
              "additionalProperties": {
                  "type": "string",
                  "description": "The compiler name (key) and version constraint (value)."
              }
          },
          "platform": {
              "oneOf": [
                  {
                      "type": "string",
                      "description": "Supported platform. If no platform is specified then it's assumed that all platforms are supported."
                  },
                  {
                      "type": "array",
                      "description": "List of supported platforms. If no platforms are specified then it's assumed that all platforms are supported.",
                      "items": {
                          "type": "string"
                      }
                  }
              ]
          },
          "arch": {
              "oneOf": [
                  {
                      "type": "string",
                      "description": "Supported architecture. The defaults are 'x86' and 'x64'."
                  },
                  {
                      "type": "array",
                      "description": "List of supported architectures. The defaults are 'x86' and 'x64'.",
                      "items": {
                          "type": "string"
                      }
                  }
              ]
          },
          "linking": {
              "oneOf": [
                  {
                      "type": "string",
                      "description": "Support only one linking type. By default supports both, the static and dynamic linking."
                  },
                  {
                      "type": "array",
                      "description": "List of supported linking types. The defaults are 'static' and 'dynamic'.",
                      "items": {
                          "type": "string"
                      }
                  }
              ]
          },
          "dependencies": {
              "type": "object",
              "description": "List of required dependencies.",
              "items": {
                  "type": "string",
                  "description": "Each item contains the package name and version constraint, additionally the linking type constraint (eq. '\"org/package\": \"^5.3:static\"')."
              }
          },
          "dev-dependencies": {
              "type": "object",
              "description": "List of required dependencies while developing (i.e. package is the root one).",
              "items": {
                  "type": "string",
                  "description": "Each item contains the package name and version constraint, additionally the linking type constraint (eq. '\"org/package\": \"^5.3:static\"')."
              }
          },
          "define": {
              "type": "object",
              "description": "List of preprocessor macros.",
              "additionalProperties": false,
              "properties": {
                  "debug": {
                      "type": "object"
                  },
                  "release": {
                      "type": "object"
                  }
              }
          },
          "scripts": {
              "type": "object",
              "description": "List of user and system callbacks scripts.",
              "patternProperties": {
                  ".*": {
                      "oneOf": [
                          {
                              "type": "string",
                              "description": "Each item contains the script name with constraints and command (eq. '\"clear-cache:linux\": \"rm -r ./cache\"')."
                          },
                          {
                              "type": "array",
                              "description": "Each item contains the script name with constraints and commands (eq. '\"clear-cache:linux\": \"rm -r ./cache\"').",
                              "items": {
                                  "type": "string",
                                  "description": "The list of commands executed one by one. Commands are executed as long as previous command exits with status code 0."
                              }
                          }
                      ]
                  }
              }
          },
          "repositories": {
              "type": "array",
              "description": "List of repositories to search for packages before looking up to the official one.",
              "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                      "type": {
                          "type": "string",
                          "description": "Type of the repository, eq. local, git, register etc."
                      },
                      "src": {
                          "type": "string",
                          "description": "Repository source, eq. directory path for local repository etc."
                      }
                  }
              }
          },
          "config": {
              "type": "object",
              "additionalProperties": true
          }
      }
  }