ckmamerc
—
config file for ckmame, dumpgame, and mkmamedb
The ckmamerc
config file sets global or local
configuration for running ckmame(1),
dumpgame(1), and
mkmamedb(1).
By default, the configuration is read from
~/.config/ckmame/ckmamerc and
.ckmamerc in the current directory if they exist, in
this order.
Many settings can also be specified on the command line.
Later settings override earlier ones.
The config file is in TOML format and consists of three types of sections. A
section header consists of the name of the section enclosed in square brackets
on its own line.
- [global]
- The “global” section contains settings that apply in
general.
- ["set name"]
- “set name” sections contain settings for a particular set
(see the
-
-set
command
line option).
- [profile."profile name"]
- Settings can be shared and referenced from multiple sets by defining them
in a profile and referencing this. Use sections whose name starts with
“profile.” for this. They can be referenced from other
sections by using the “profiles” keyword with
“profile name” (without the leading
“profile.”).
Most command line options can be used as configuration variables in the config
file. Take the name of the long option and use it without the leading dashes.
For boolean settings and those with a value, use the
variable = value
syntax. For example, ckmame(1)'s
-
-complete-games-only
will be
written in the config file as
complete-games-only =
true
Options that exist as
-
-foo
and
-
-no-foo
are mapped to a
single configuration value with values “true” and
“false”.
For full documentation of config file options with corresponding
command line options, see the manual page of the command.
Options can use the string “$set” which will be
replaced by the set name when used.
The following options are supported by all tools:
- rom-db
- String.
- profiles
- Array of strings. List of profile names (without the leading
“profile.”) whose configuration variables should be merged
into the current section.
- sets
- Array of strings. Each string is the name of a set.
- sets-file
- String. Points to a file that lists sets, one line per set.
- update-database
- Boolean.
- verbose
- Boolean.
The following options are supported only by
ckmame(1) and
mkmamedb(1):
- roms-zipped
- Boolean.
- use-central-cache-directory
- Boolean. Put the cache databases generated by
ckmame(1) and
mkmamedb(1) below
$HOME/.cache/ckmame/. This affects the location of
mkmamedb(1)'s
.mkmamedb.db
(
-
-directory-cache
) and
ckmame(1)'s
.ckmame.db files for extra-directories (but not
for the roms, saved, and
unknown directories).
The following options are supported only by
ckmame(1):
- complete-games-only
- Boolean.
- complete-list
- String.
- create-fixdat
- Boolean.
- delete-unknown-pattern
- String.
- extra-directories
- Either an array of strings, or a table where the keys are directories and
the values are a table of options. For the second case, the following
options are supported:
- move-from-extra
- Boolean.
- use-central-cache-directory
- Boolean.
- extra-directories-append
- Same as “extra-directories” but does not override the
previous value, but appends to it instead.
- fixdat-directory
- String.
- keep-old-duplicates
- Boolean.
- missing-list
- String.
- move-from-extra
- Boolean. Setting this to “false” is the same as using
-
-copy-from-extra
on the
command line.
- old-db
- String.
- report-changes
- Boolean.
- report-correct
- Boolean.
- report-detailed
- Boolean.
- report-fixable
- Boolean.
- report-missing
- Boolean.
- report-no-good-dump
- Boolean.
- report-summary
- Boolean.
- rom-directory
- String.
- saved-directory
- String.
- unknown-directory
- String.
- use-torrentzip
- Boolean.
The following variables are only supported by
mkmamedb(1):
- dats
- Array of strings, or table where the keys are strings and the values are
tables with options. Each string is the (internal) name of a dat. The
supported options in the second case are:
- game-name-suffix
- String. Suffix all game names in the dat with the given string
argument.
- use-description-as-name
- Boolean.
- dat-directories
- Either an array of strings, or a table where the keys are directories and
the values are a table of options. Each string is a directory containing
dats.
- use-central-cache-directory
- Boolean.
- use-temp-directory
- Boolean.
While TOML is a relatively simple and readable format, it has some unexpected
details:
Any key that contains characters other than letters, digits,
“-”, and “_” must be quoted using double
quotes.
Nested tables can be written in two forms:
Inline using “{” and “}”. However, the
complete inline table must be on one line (unlike inline arrays, which can
span multiple lines). See “extra-directories-append” in
“Big Set” in EXAMPLES below.
As sections with a “.” separating the outer and
inner names:
["outer table
name"."inner table name"]
Note that the “.” must be outside any quotation marks. All
settings in this section apply to the inner table. When using this for options
that allow tables as values (like “dats”), the keys in this
table are not configuration variables and need to be quoted if they contain
special characters. See “extra-directories” in “Unzipped
Set” in EXAMPLES below.
[global]
verbose = true
extra-directories = [ "incoming" ]
sets = [ "Set using standard settings only" ]
[profile.incomplete]
complete-only = true
report-missing = false
["Big Set"]
verbose = false
rom-directory = "Big Set ROMs"
extra-directories-append = { "another-location" = { move-from-extra = true } }
rom-db = "Big Set.db"
profiles = [ "incomplete" ]
["Unzipped Set"]
roms-unzipped = true
rom-directory = "Unzipped Set ROMs"
rom-db = "Unzipped Set.db"
["Unzipped Set".extra-directories]
"unzipped-incoming" = { use-central-cache-directory = true }
This configuration would by default report verbosely, but override
this for the "Big Set" set. It would also set the rom directories
and database files for both the "Big Set" and the "Unzipped
Set" and not use ZIP archives for the latter.
Example run:
ckmame --set Big Set