mg-cli 1.0.25

dotnet tool install --global mg-cli --version 1.0.25
                    
This package contains a .NET tool you can call from the shell/command line.
dotnet new tool-manifest
                    
if you are setting up this repo
dotnet tool install --local mg-cli --version 1.0.25
                    
This package contains a .NET tool you can call from the shell/command line.
#tool dotnet:?package=mg-cli&version=1.0.25
                    
nuke :add-package mg-cli --version 1.0.25
                    

MG-CLI

NuGet

A .NET 10.0 global tool for managing CI/CD pipelines for Godot game projects — building export presets, versioning, deploying to Steam/itch.io/DigitalOcean, and posting Discord notifications.

Installation

dotnet tool install --global mg-cli

Commands

Godot commands are grouped under godot, Steam commands under steam, and itch.io commands under itchio.

Command Description
godot install Install Godot engine and export templates
godot import Run the Godot import process
godot build Build a Godot project for one or more export presets
godot version Get or bump the version in project.godot
csproj-versioning Bump the version in a .csproj file
commit Commit and tag the current build
discord-hook Send a Discord webhook with build info and changelog
steam setup Install SteamCMD from the Steamworks SDK
steam deploy Deploy a build to Steam
itchio setup Install Butler (itch.io CLI)
itchio deploy Deploy a build to itch.io
digitalocean Deploy a build to a DigitalOcean droplet

Godot Install

Install the Godot engine and export templates for a specific version. Supports Windows, Linux, and macOS.

mg-cli godot install <version>
Argument Required Description
version Yes Godot version to install (e.g. 4.4.1)

Downloads the engine and export templates from the official Godot GitHub releases, extracts them to the standard platform location, and sets executable permissions. On Linux, a desktop entry is created at ~/.local/share/applications/godot.desktop.


Godot Import

Run the Godot headless import process for a project.

mg-cli godot import <project-path> <godot-version>
Argument Required Description
project-path Yes Path to the Godot project directory
godot-version Yes Godot version to use

Godot Build

Build a Godot project for one or more export presets. Supports both interactive selection and explicit preset names.

# Release build
mg-cli godot build -p <project-path> -v <godot-version> -r <preset-name>

# Debug build
mg-cli godot build -p <project-path> -v <godot-version> -d <preset-name>

# Interactive mode — select presets from a list
mg-cli godot build -p <project-path> -v <godot-version> -i
Option Alias Required Description
--projectPath -p Yes Path to the Godot project
--godotVersion -v Yes Godot version
--export-release -r No Export preset name (release)
--export-debug -d No Export preset name (debug)
--interactive -i No Select presets interactively

Before building, the command runs dotnet build to catch C# compilation errors and ensures the .godot directory exists (running import if needed). Build logs are written to builds/Logs/<preset>.log. On macOS, the resulting .app bundle is automatically unsigned and de-quarantined.


Godot Version

Get or bump the version in a Godot project.godot file. Uses a YYYY.MM.BUILD scheme — year and month are set automatically, and the build number is incremented. Also preserves any config/version_suffix. Run from the Godot project directory.

# Print the current version
mg-cli godot version

# Bump the version
mg-cli godot version --bump
Option Alias Required Description
--bump -b No Bump the version number instead of printing it

Csproj Versioning

Bump the patch version in a .csproj file. Increments the third segment of a MAJOR.MINOR.PATCH version string.

mg-cli csproj-versioning <path-to-csproj> [property-name]
Argument Required Default Description
path Yes Path to the .csproj file
propertyName No AssemblyVersion The XML element to update

Commit

Stage all changes, commit with the current build version, create a git tag, and push to origin/main.

mg-cli commit <project-path>
Argument Required Description
project-path No Path to the Godot project (defaults to current directory)

Commit message format: _Build Version: <version> Tag format: v<version>


Discord Hook

Send a Discord webhook embed with the latest build version and a changelog generated from git commits since the previous tag.

mg-cli discord-hook -p <project-path> -h <webhook-url> -s <steam-url> -l <logo-url>
Option Alias Required Description
--projectPath -p Yes Path to the Godot project
--hookUrl -h Yes Discord webhook URL
--steamUrl -s Yes Steam store page URL
--logoUrl -l Yes URL to a logo/thumbnail image
--noChangeLog No Skip the changelog in the embed

Steam Setup

Download and install SteamCMD from the Steamworks SDK.

mg-cli steam setup

Installs the content builder to ~/steamcmd. No arguments required.


Steam Deploy

Deploy a build to Steam using SteamCMD and a VDF build configuration file.

mg-cli steam deploy -p <project-path> --vdf <path-to-vdf> -u <username> -pw <password>
Option Alias Required Description
--projectPath -p Yes Path to the Godot project
--vdf Yes Path to the .vdf build config
--username -u Yes Steamworks username
--password -pw Yes Steamworks password
--preview -pv No Mark the build as a preview

The VDF file's Desc field is automatically set to the current version.


Itch.io Butler Setup

Download and install Butler, the itch.io command-line deployment tool.

# Install Butler
mg-cli itchio setup

# Check installed version
mg-cli itchio setup -v
Option Alias Required Description
--version -v No Print the installed Butler version instead of installing

After installation you will be prompted to log in interactively.


Itch.io Deploy

Push a build to itch.io using Butler.

mg-cli itchio deploy <build-path> <company/game:platform> -p <project-path>
Argument Required Description
build-path Yes Path to the build directory
company/game:platform Yes itch.io target (e.g. my-studio/my-game:windows)
Option Alias Required Description
--projectPath -p Yes Path to the Godot project

DigitalOcean Deploy

Deploy a build to a DigitalOcean droplet over SSH. Copies a systemd service file, an optional nginx config, and build files to the server, then restarts the service.

mg-cli digitalocean <ip-address> <service-file-path> <build-path> [-n <nginx-config>]
Argument Required Description
ip-address Yes IP address of the DigitalOcean droplet
service-file-path Yes Path to the systemd .service file to deploy
build-path Yes Path to the local build directory to copy to the server
Option Alias Required Description
--nginx-config -n No Path to an nginx .conf file to deploy

The command reads WorkingDirectory and ExecStart from the service file to determine where to deploy and what to make executable. It stops the existing service, cleans the remote directory, copies all files via scp, and restarts the service with systemctl.


CI/CD

The repository includes a GitHub Actions workflow that runs on every push to main (skipped when commit message contains [skip ci]):

  1. Bumps the package version via csproj-versioning
  2. Commits the version change and creates a git tag
  3. Builds, packs, and publishes to NuGet

To set up publishing, add a NUGET_API_KEY secret to your repository (Settings → Secrets and variables → Actions).

License

MIT

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

This package has no dependencies.

Version Downloads Last Updated
1.0.25 37 4/4/2026
1.0.24 40 4/3/2026
1.0.23 47 4/3/2026
1.0.22 101 3/24/2026
1.0.21 85 3/23/2026
1.0.20 78 3/23/2026
1.0.19 74 3/23/2026
1.0.18 79 3/23/2026