Skip to content

buildid ​

Tool tools/triage/buildid.py (program, Triage). Pin down which build of a game this is: everything a copy says about its own version.

Run it with ./gameframe run buildid ARGS or python3 tools/triage/buildid.py. Source on GitHub.

Its own help ​

This is the help text in the tool itself, as ./gameframe tool buildid prints it.

text
Pin down which build of a game this is: everything a copy says about its own version.

Usage: buildid.py SOURCE [--name LABEL] [--write docs/versions.md] [--json]

  SOURCE   a folder (an install, an extracted disc), a disc image (.cue, .bin, .iso) read in
           place, or one executable
  --name   what to call this copy in the table (default: the folder or file name)
  --write  put the result into that file, between `<!-- buildid LABEL -->` and
           `<!-- /buildid LABEL -->`, replacing an earlier result for the same label, or under a
           "## Build identity" heading at the end when there is none yet
  --json   everything as JSON

What it reads:

- the disc's volume descriptor, for a disc image: label, the date it was mastered (created) and
  last modified, publisher, data preparer and mastering application;
- each executable and DLL: the PE link date, and the VERSIONINFO resource (product name,
  product and file version, company, description);
- version strings inside each executable ("Version 2.8", "v1.0", "Ver 1.02"), from its ASCII and
  UTF-16 text;
- version lines in the copy's own text files, such as readme files, `setup.ini`, `autorun.inf`,
  `*.nfo` and `*.txt` near the top: lines that name a version, a patch or an update, or give a
  date.

It prints Markdown for the "Build identity" section of the project's `docs/versions.md`. Then
compare it with the official releases you find (re-inventory, "Every edition, and the
reference"): is this the latest official build, and if not, which is?

It reads only the copy, and prints short identifying lines from it, not its content. Version
lines from a readme are quoted, at most a line each, so the table stays publishable. Needs
pefile (.venv) for VERSIONINFO; the rest uses the standard library.

Named by ​

Skills: re-inventory, re-start.

Code: Apache 2.0. Content: CC0 1.0. No game material: bring your own copy.