CLI

The fmsave command line: info, export and validate. Each block below is the real --help output of the command it follows.

fmsave

$ fmsave --help
usage: fmsave [-h] [--version] COMMAND ...

Read Football Manager 26 save files. fmsave never modifies a save.

positional arguments:
  COMMAND
    info      show the game, build and in-game date of a save
    export    write one table of a save as CSV, JSON or JSON Lines
    validate  report how each reader fares on a save, without any names or
              uids

options:
  -h, --help  show this help message and exit
  --version   show program's version number and exit

fmsave info

$ fmsave info --help
usage: fmsave info [-h] [--show-name] [--json] SAVE

Show save metadata.

positional arguments:
  SAVE         path to a .fm save file

options:
  -h, --help   show this help message and exit
  --show-name  include the save's name, and with --json the save summary
               texts, which hold names (hidden by default)
  --json       print JSON instead of text

fmsave export

$ fmsave export --help
usage: fmsave export [-h] (--club VALUE | --managed-club |
                     --competition VALUE | --nation VALUE | --all)
                     [--format {csv,json,jsonl}] [--columns NAMES]
                     [--competition-names PATH] [-o PATH] [--strict]
                     SAVE TABLE

Write one table of a save. Choose exactly one scope: --club, --managed-club,
--competition, --nation or --all.

positional arguments:
  SAVE                  path to a .fm save file
  TABLE                 the table to write: players, contracts, suspensions,
                        clubs, managed-clubs, stages, competitions, fixtures,
                        league-tables, transfer-windows, competition-rules,
                        player-match-stats, stadiums, finances, sponsorships,
                        facilities, affiliates, job-vacancies, staff, staff-
                        lists, injury-types, injuries, training, mentoring,
                        tactics, set-pieces; competition-rules (a rules
                        block's competition is read from the table stored
                        after it, so --competition returns only the blocks
                        that link to one); training (only the manager's own
                        club has these, so any other club returns no rows);
                        mentoring (only the manager's own club has these, so
                        any other club returns no rows); tactics (only the
                        manager's own club has these, so any other club
                        returns no rows); set-pieces (only the manager's own
                        club has these, so any other club returns no rows)

options:
  -h, --help            show this help message and exit
  --club VALUE          rows of one club, given as a club uid or a club name
                        or short name (any case)
  --managed-club        rows of the club the human manager runs
  --competition VALUE   rows of one competition, given as a competition id, or
                        as a name once --competition-names supplies one
  --nation VALUE        rows of one nation, by nation id
  --all                 every row
  --format {csv,json,jsonl}
                        output format (default: csv)
  --columns NAMES       comma-separated flat column names to write, in this
                        order
  --competition-names PATH
                        a UTF-8 CSV of database_id,name naming competitions,
                        which no save stores
  -o, --output PATH     write to this file instead of standard output
  --strict              stop rather than write when a reader's checks fail
                        (they warn by default)

fmsave validate

$ fmsave validate --help
usage: fmsave validate [-h] [--json] SAVE

Run every reader and report its checks, counts and coverage. The report holds
no names, uids or text from the save.

positional arguments:
  SAVE        path to a .fm save file

options:
  -h, --help  show this help message and exit
  --json      print JSON instead of text