Skip to content

starriver/gobbo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

81 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Gobbo

Gobbo is a CLI toolchain for Godot 4.x.

This is heavily WIP.

Current gobbo.toml schema

godot is the only required key. Defaults are listed here.

godot = "4.3"
src = "src"

[export]
only = []
dist = "dist"
zip = false
volumes = []
mount_secrets = false
scripts.pre = ""
scripts.post = ""

[export.variant]
only = []
volumes = []
scripts.pre = ""
scripts.post = ""
elective = false
  • godot is the Godot version to use. Pre-release versions can be accessed with a suffix, eg. -beta1. Currently only official builds are supported, build-from-source is planned.
  • src is the path of the Godot project root (ie. containing project.godot).

Export table

This configures the Gobbo exporter. You should still set up your export presets (in src/export_presets.cfg) as normal.

  • only filters the presets to export.
  • dist is the path of the finished exports. When exporting, it will be created if it doesn't exist.
  • zip automatically zips all exports if true. Otherwise, exports will be in dist subdirectories.
  • volumes allows for short-form Docker volumes to be mounted for all build containers. Currently, only the z, Z and ro flags are supported.
  • mount_secrets will mount configured secrets (from your editor & export configs) into the build containers. This is necessary for Android exports to work: your keystores will be mounted, and their usernames & passwords will be configured. Currently, this doesn't affect any other platform.
  • scripts.* specifies Bash script hooks to be executed before (pre) and after (post) the Godot export has executed.

Variants

Export variants can be specified, which will enable a two-dimensional build matrix (presets vs. variants). Variants are named after their tables.

For each variant's table:

  • only and volumes are merged with their respective values in [export].
  • scripts.* will override their respective values in [export].
  • elective, if true, disables the variant unless it's explicitly specified in the gobbo export command.

For example, to produce a matrix of builds for Itch and Steam:

[export.itch]
# Simply having this table here is enough to add a row to the matrix for Itch
# builds. In this example, they're simply the unaltered Godot exports.

[export.steam]
only = ["windows", "macos", "linux"]
volumes = ["./steam:/opt/steam:ro"]
scripts = {
	pre = "/opt/steam/prepare.sh"
	post = "/opt/steam/finalise.sh"
}
elective = true

License

ISC