systemg

Search docs

/
Install

Commands

migrate

Convert a legacy singular-project: manifest into the canonical projects: map. migrate reads a manifest and prints the converted YAML to stdout — it never touches the source file unless you ask it to.

$ sysg migrate systemg.yaml

Given an old-shape manifest:

version: "1"
project:
  id: shop
  name: Shop
services:
  api:
    command: "sleep 3000"
    restart_policy: always
  worker:
    command: "sleep 3000"
    restart_policy: always

it emits the equivalent projects: form, bumped to the current schema version:

version: "2"
projects:
  shop:
    name: Shop
    services:
      api:
        command: "sleep 3000"
        restart_policy: always
      worker:
        command: "sleep 3000"
        restart_policy: always

Info

migrate converts the shape and bumps the schema version to the current one (2): the project: block becomes a projects: entry keyed by its id, and the services and settings are otherwise unchanged. A manifest already in projects: form at the current version passes through unchanged.

Options

ShortLongDescription
-<config>Path to the manifest to convert (positional, required)
---in-placeRewrite the file in place, keeping a .bak copy, instead of printing to stdout
-v--verbosePrint operation progress
---sysOpt into privileged system mode. Requires running as root
---drop-privilegesAccepted globally but ignored; migrate does not spawn services
---plainDisable terminal decoration for automation
---log-levelSet logging verbosity for this invocation

Usage

The default prints to stdout, so you can review the diff before committing to it:

$ sysg migrate systemg.yaml > systemg.new.yaml
$ diff systemg.yaml systemg.new.yaml

Or convert the file in place once you're happy — the original is preserved as systemg.yaml.bak:

$ sysg migrate systemg.yaml --in-place

Note

The singular project: block still parses (with a deprecation warning), so migrating is not urgent for the manifest to keep working. It is, however, the clean path off the deprecated shape before it is eventually removed.

See also

validatemigrate-state