Project
=======
The project package uses a **YAML** file that contains information which defines the components of your project. **YAML** is a very simple file format to read and edit. If you are not familiar with Yaml, please introduce yourself `here `_. By default, **gspm** will look for a file called *project.yml* in the current directory, however you can override this using the ``--config`` option.
The file has a very simple structure which breaks up the project into several sections. For a more detailed look at the project definition file, see the :doc:`Schema Reference page `.
Project Section
---------------
The first section is used to give some basic information about the project like the name and description. In the example below, you can see that this project defaults to using **git** for assets.
.. code-block:: yaml
name: my-cool-game
description: My Very Cool Game
default_type: git
================ ==========================
Option Description
================ ==========================
name required - project identifier
description optional - project description
default_type optional - default asset pull type (git, copy, zip)
================ ==========================
Godot Section
-------------
This subsection specifies which Godot engine version to use and how to download it.
.. code-block:: yaml
godot:
version: 3.3
arch: 64
Assets Section
--------------
This section contains information about the different Assets to include in your project. Assets can be anything you want, but usually it is just some other source code or maybe another project folder on your computer, or perhaps it is something from the Godot Asset Library. The example below shows some examples of what you can include. The first is used to copy a folder from another project on your computer, the next is used to pull a zip file from the internet, and the last example will pull some code down from a git repository.
.. code-block:: yaml
assets:
some-local-asset:
location: file://some.path/on.my/desktop
type: copy
includes:
- dir: some/path
todir: another/path
some-zip-asset:
location: https://some.path/file.zip
type: zip
active: false
some-asset-on-github:
location: https://github.com/some/asset.git
includes:
- dir: addons
Export Section
--------------
This section contains information to assist you when exporting your project from the command line.
.. code-block:: yaml
exports:
windows:
name: win
path: ./build/win
file: test_game.exe
themac:
name: mac
path: ./build/mac
file: test_game.app
Replacement Tokens
------------------
The tool lets you put replacement tokens inside your `project.yml` file.
This is a convenient way to specify the values for options that might be different between developers. For example, you might not want to pull the godot engine down all the time and instead share a copy you have on your computer using the `local` parameter on the Godot option in your `project.yml` file.
However, one person might be using a Mac version of Godot, whereas another person might be using Windows. The replacement Tokens are specified in your `.gspm` settings file in your Home folder.
For more information on this file, read the documentation on :doc:`settings`.
A Token, is specified in the `tokens` section of your file, and are specified using a String value, surrounded by dollar signs. For example;
.. code-block:: yaml
name: my-cool-game
description: My Very Cool Game
default_type: git
godot:
local: $godot_306$
In your configuration file, you might have this;
.. code-block:: ini
[tokens]
$godot_306$=c:\godot-3.0.6\godot.exe
$godot_31a$=c:\godot-3.1a1\godot.exe
When the tool executes, it will search through all replacement Tokens in your configuration file, and will replace them in your project.yml file before it begins running the command you have requested.
In the example above, the project file will be changed to this before it executes.
.. code-block:: yaml
name: my-cool-game
description: My Very Cool Game
default_type: git
godot:
local: c:\godot-3.0.6\godot.exe