Repository navigation
CLI Reference
Every command of wowlab, with its arguments and options, as the code declares them. Run each as uv run wowlab … from the checkout; wowlab <group> <command> --help prints the same help. This page is generated from the code and is not edited by hand; Command Reference is the overview.
A command marked Asks before changing files has -y, --yes: without it, the command shows its plan and waits for an answer. What it changes differs by command, and its help says which: an install, through the write gate, or the Lab's own snapshot store. --json output names the model the command's --json output validates against.
Local-only toolchain over a World of Warcraft install.
| Option | Type | Default | Help |
|---|---|---|---|
--version |
flag | off | Print the version and exit. |
Usage: wowlab doctor [OPTIONS]
Install, flavors, versions, whether the client runs, store health. JSON: DoctorReport.
On a first run (the snapshot store holds no snapshot of this install) it also says what wowlab will and will not do, shows what a first snapshot would hold (size, an estimated time, links, sync folders), offers one (asking when input is a terminal; --yes accepts; --json never asks), takes it into wowlab's own store, never into the install, verifies the store, and ends with how to undo.
With --redact (or --redact-name) the first run is skipped: no intro, no scan, no question, no snapshot, and first_run is null; --yes and --flavor are refused with it (M13-09).
Asks before changing files. It shows what it will change and asks first; -y, --yes answers yes. The help above says which files.
--json output: DoctorReport.
| Option | Type | Default | Help |
|---|---|---|---|
--root |
path | none | The install folder, the one that holds .build.info. Default: $WOWLAB_WOW_ROOT, then the usual install locations. |
--offline |
flag | off | Do not ask wago.tools whether each version is listed. |
--yes, -y
|
flag | off | On a first run, take the offered first snapshot without asking (with several flavors, name one with --flavor). |
--flavor |
text | none | On a first run, the flavor folder to snapshot. Implied when the install has only one. |
--json |
flag | off | Print JSON instead of text. |
--redact |
flag | off | Output to paste into an issue: character, realm and account names, BattleTags, GUIDs, email addresses, your login and computer names, your home folder and journal labels become placeholders. |
--redact-name |
text, repeatable | none | Another name to replace, such as your guild's (repeatable). Implies --redact. |
Usage: wowlab explain [OPTIONS] {path}
What a path in the install is, who writes it, whether wowlab may edit it. JSON: ExplainReport.
--json output: ExplainReport.
| Argument | Type | Default | Help |
|---|---|---|---|
path |
text | required | Absolute; or relative to the current folder when it exists there; else relative to the install folder; else to the flavor folder. |
| Option | Type | Default | Help |
|---|---|---|---|
--root |
path | none | The install folder, the one that holds .build.info. Default: $WOWLAB_WOW_ROOT, then the usual install locations. |
--flavor |
text | none | The flavor folder to use, as wowlab install show lists it. Implied when the install has only one. |
--json |
flag | off | Print JSON instead of text. |
Usage: wowlab tree [OPTIONS] [path]
Inventory of a flavor folder: WTF files, SavedVariables, addons, overrides, areas (counted, not listed). JSON: TreeReport.
--json output: TreeReport.
| Argument | Type | Default | Help |
|---|---|---|---|
path |
text | none | Only this path under the flavor folder. |
| Option | Type | Default | Help |
|---|---|---|---|
--explain |
flag | off | Add each path's file-map entry. |
--root |
path | none | The install folder, the one that holds .build.info. Default: $WOWLAB_WOW_ROOT, then the usual install locations. |
--flavor |
text | none | The flavor folder to use, as wowlab install show lists it. Implied when the install has only one. |
--json |
flag | off | Print JSON instead of text. |
Usage: wowlab undo [OPTIONS]
Undo the most recent change made through the write gate (a restore, or an earlier undo), from the snapshot taken before it. JSON: UndoReport.
The journal is read again after you answer, and the undo is refused if its most recent record changed meanwhile. The gate compares again under its store lock (guard.undo(expected_id=...)), so a change journaled after that re-read is refused too: only the record shown is undone.
Asks before changing files. It shows what it will change and asks first; -y, --yes answers yes. The help above says which files.
--json output: UndoReport.
| Option | Type | Default | Help |
|---|---|---|---|
--yes, -y
|
flag | off | Do not ask before changing files. |
--json |
flag | off | Print JSON instead of text. |
Install or remove the lab-addon (Interface/AddOns/WowLab/) through the write gate. Its SavedVariables (WowLab.lua) are never touched.
Usage: wowlab addon install [OPTIONS] {NAME}
Copy the lab-addon into the flavor's Interface/AddOns/WowLab/, through the write gate: the client must be closed, a pre-write snapshot is taken first, and wowlab undo reverses it.
The sources are lab/addon/WowLab/ in the wowlab checkout wowlab runs from, else the copy bundled in the installed wowlab package (wowlab_core/_addon/WowLab/), and nothing else; the plan names the folder it read.
The TOC's ## Interface: is filled from the flavor's discovered version by the patch-number rule; after a client update that changes the first three parts of the version, run this again. Only WowLab.toc and the .lua files it lists are copied. Over an existing copy only changed files are written, and files not in the sources are deleted. JSON: AddonInstallReport.
Asks before changing files. It shows what it will change and asks first; -y, --yes answers yes. The help above says which files.
--json output: AddonInstallReport.
| Argument | Type | Default | Help |
|---|---|---|---|
NAME |
text | required | The addon: lab (the lab-addon) is the only one. |
| Option | Type | Default | Help |
|---|---|---|---|
--dry-run |
flag | off | Print the plan and change nothing. |
--yes, -y
|
flag | off | Do not ask before changing files. |
--root |
path | none | The install folder, the one that holds .build.info. Default: $WOWLAB_WOW_ROOT, then the usual install locations. |
--flavor |
text | none | The flavor folder to use, as wowlab install show lists it. Implied when the install has only one. |
--json |
flag | off | Print JSON instead of text. |
Usage: wowlab addon remove [OPTIONS] {NAME}
Delete the lab-addon's files from the flavor's Interface/AddOns/WowLab/, through the write gate: the client must be closed, a pre-write snapshot is taken first, and wowlab undo puts them back. A file the gate will not delete refuses the whole removal (exit 3).
Its SavedVariables (WowLab.lua and WowLab.lua.bak under WTF/, holding WowLabDB and each character's WowLabCharDB) are never touched: they are the captures. The folder stays; the gate deletes files, not folders. JSON: AddonRemoveReport.
Asks before changing files. It shows what it will change and asks first; -y, --yes answers yes. The help above says which files.
--json output: AddonRemoveReport.
| Argument | Type | Default | Help |
|---|---|---|---|
NAME |
text | required | The addon: lab (the lab-addon) is the only one. |
| Option | Type | Default | Help |
|---|---|---|---|
--dry-run |
flag | off | Print the plan and change nothing. |
--yes, -y
|
flag | off | Do not ask before changing files. |
--root |
path | none | The install folder, the one that holds .build.info. Default: $WOWLAB_WOW_ROOT, then the usual install locations. |
--flavor |
text | none | The flavor folder to use, as wowlab install show lists it. Implied when the install has only one. |
--json |
flag | off | Print JSON instead of text. |
Folders under Interface/AddOns/.
Usage: wowlab addons list [OPTIONS]
Every folder under Interface/AddOns/ with its TOC files. JSON: AddonsReport.
--json output: AddonsReport.
| Option | Type | Default | Help |
|---|---|---|---|
--root |
path | none | The install folder, the one that holds .build.info. Default: $WOWLAB_WOW_ROOT, then the usual install locations. |
--flavor |
text | none | The flavor folder to use, as wowlab install show lists it. Implied when the install has only one. |
--json |
flag | off | Print JSON instead of text. |
Key bindings in bindings-cache.wtf.
Usage: wowlab binds list [OPTIONS]
Key bindings of the account, or of one character with --character. JSON: BindsReport.
--json output: BindsReport.
| Option | Type | Default | Help |
|---|---|---|---|
--account |
text | none | Account folder under WTF/Account/. Implied when there is one. |
--character |
text | none | Character folder, as <Character> or <Realm folder>/<Character> when the name alone is ambiguous. |
--root |
path | none | The install folder, the one that holds .build.info. Default: $WOWLAB_WOW_ROOT, then the usual install locations. |
--flavor |
text | none | The flavor folder to use, as wowlab install show lists it. Implied when the install has only one. |
--json |
flag | off | Print JSON instead of text. |
Characters as the lab-addon recorded them in WowLab.lua (read only).
Usage: wowlab char list [OPTIONS]
Every character folder with a WowLab.lua, in every account unless --account names one: when the file was last written, and its schema, the client that saved it and the spec, or why it could not be read. A file or place wowlab could not read or look inside is named on stderr and the command then exits 1; the others are still listed. JSON: CharListReport.
--json output: CharListReport.
| Option | Type | Default | Help |
|---|---|---|---|
--account |
text | none | Only this account folder under WTF/Account/. |
--root |
path | none | The install folder, the one that holds .build.info. Default: $WOWLAB_WOW_ROOT, then the usual install locations. |
--flavor |
text | none | The flavor folder to use, as wowlab install show lists it. Implied when the install has only one. |
--json |
flag | off | Print JSON instead of text. |
Usage: wowlab char show [OPTIONS]
What the lab-addon recorded for one character, from its WowLab.lua. Without --character, the character whose WowLab.lua was written last. JSON: CharShowReport.
--json output: CharShowReport.
| Option | Type | Default | Help |
|---|---|---|---|
--character |
text | none | Character folder, as <Character> or <Realm folder>/<Character> when the name alone is ambiguous. |
--account |
text | none | Account folder under WTF/Account/. Implied when there is one. |
--root |
path | none | The install folder, the one that holds .build.info. Default: $WOWLAB_WOW_ROOT, then the usual install locations. |
--flavor |
text | none | The flavor folder to use, as wowlab install show lists it. Implied when the install has only one. |
--json |
flag | off | Print JSON instead of text. |
CVars in Config.wtf and config-cache.wtf.
Usage: wowlab cvar get [OPTIONS] {name}
One CVar's value in one config file. JSON: CVarGetReport.
--json output: CVarGetReport.
| Argument | Type | Default | Help |
|---|---|---|---|
name |
text | required | CVar name; compared without case. |
| Option | Type | Default | Help |
|---|---|---|---|
--scope |
one of global, account, character
|
global |
global: WTF/Config.wtf (machine-wide); account or character: that folder's config-cache.wtf. |
--account |
text | none | Account folder under WTF/Account/. Implied when there is one. |
--character |
text | none | Character folder, as <Character> or <Realm folder>/<Character> when the name alone is ambiguous. |
--root |
path | none | The install folder, the one that holds .build.info. Default: $WOWLAB_WOW_ROOT, then the usual install locations. |
--flavor |
text | none | The flavor folder to use, as wowlab install show lists it. Implied when the install has only one. |
--json |
flag | off | Print JSON instead of text. |
Usage: wowlab cvar list [OPTIONS]
Every SET line of one config file. JSON: CVarListReport.
--json output: CVarListReport.
| Option | Type | Default | Help |
|---|---|---|---|
--scope |
one of global, account, character
|
global |
global: WTF/Config.wtf (machine-wide); account or character: that folder's config-cache.wtf. |
--account |
text | none | Account folder under WTF/Account/. Implied when there is one. |
--character |
text | none | Character folder, as <Character> or <Realm folder>/<Character> when the name alone is ambiguous. |
--root |
path | none | The install folder, the one that holds .build.info. Default: $WOWLAB_WOW_ROOT, then the usual install locations. |
--flavor |
text | none | The flavor folder to use, as wowlab install show lists it. Implied when the install has only one. |
--json |
flag | off | Print JSON instead of text. |
Game data tables from wago.tools, cached by build.
Usage: wowlab db2 builds [OPTIONS]
Products and their versions as wago.tools lists them. JSON: BuildsReport.
--json output: BuildsReport.
| Option | Type | Default | Help |
|---|---|---|---|
--product |
text | none | Only this product code. |
--json |
flag | off | Print JSON instead of text. |
Usage: wowlab db2 fetch [OPTIONS] {table}
Download one table for one version into the cache (never replaced once there). JSON: FetchReport.
--json output: FetchReport.
| Argument | Type | Default | Help |
|---|---|---|---|
table |
text | required | Table name, e.g. ChrClasses. |
| Option | Type | Default | Help |
|---|---|---|---|
--build |
text | none | Full version string. Default: the flavor's version. |
--root |
path | none | The install folder, the one that holds .build.info. Default: $WOWLAB_WOW_ROOT, then the usual install locations. |
--flavor |
text | none | The flavor folder to use, as wowlab install show lists it. Implied when the install has only one. |
--json |
flag | off | Print JSON instead of text. |
Usage: wowlab db2 head [OPTIONS] {table}
The first rows of a table (fetched first if needed), as CSV. JSON: HeadReport.
--json output: HeadReport.
| Argument | Type | Default | Help |
|---|---|---|---|
table |
text | required | Table name, e.g. ChrClasses. |
| Option | Type | Default | Help |
|---|---|---|---|
--build |
text | none | Full version string. Default: the flavor's version. |
-n, --rows
|
integer, at least 0 | 10 |
How many rows. |
--root |
path | none | The install folder, the one that holds .build.info. Default: $WOWLAB_WOW_ROOT, then the usual install locations. |
--flavor |
text | none | The flavor folder to use, as wowlab install show lists it. Implied when the install has only one. |
--json |
flag | off | Print JSON instead of text. |
The install and its flavors.
Usage: wowlab install show [OPTIONS]
The install root, its flavors and its .build.info rows. JSON: install.Install.
--json output: install.Install.
| Option | Type | Default | Help |
|---|---|---|---|
--root |
path | none | The install folder, the one that holds .build.info. Default: $WOWLAB_WOW_ROOT, then the usual install locations. |
--json |
flag | off | Print JSON instead of text. |
The combat log (read only).
Usage: wowlab log tail [OPTIONS]
The last lines of the newest combat log (Logs/WoWCombatLog*.txt), tokenized. JSON: LogTailReport; with --follow, one LogTailLine per line of output.
--json output: LogTailReport, LogTailLine.
| Option | Type | Default | Help |
|---|---|---|---|
--follow, -f
|
flag | off | Keep printing lines as the client appends them, including in a new log file, until interrupted. Waits for a log if there is none yet. |
--lines, -n
|
integer, 0 to 100000 | 10 |
How many of the last lines to print (at most 100,000). |
--root |
path | none | The install folder, the one that holds .build.info. Default: $WOWLAB_WOW_ROOT, then the usual install locations. |
--flavor |
text | none | The flavor folder to use, as wowlab install show lists it. Implied when the install has only one. |
--json |
flag | off | Print JSON instead of text. |
Character customization looks: races, options and choices from a build's tables, and looks saved as JSON under the user data directory. Data only: nothing here writes into an install or reaches the game.
Usage: wowlab looks compare [OPTIONS] {A} {B}
Two saved looks side by side, both checked against one build's tables. JSON: LooksCompareReport.
--json output: LooksCompareReport.
| Argument | Type | Default | Help |
|---|---|---|---|
A |
text | required | A saved look. |
B |
text | required | Another saved look. |
| Option | Type | Default | Help |
|---|---|---|---|
--build |
text | none | Full version string whose tables to use. Default: the flavor's version; with no install found, the build a saved look was checked against, or the one build whose customization tables are cached. |
--root |
path | none | The install folder, the one that holds .build.info. Default: $WOWLAB_WOW_ROOT, then the usual install locations. |
--flavor |
text | none | The flavor folder to use, as wowlab install show lists it. Implied when the install has only one. |
--json |
flag | off | Print JSON instead of text. |
Usage: wowlab looks import-char [OPTIONS] {NAME}
Save a character's customization choices, as the lab-addon recorded them at its last barber-shop visit, as a look under the user data directory (never in an install). Reads the character's WowLab.lua (read only); without --character, the one written last. A character with no recorded visit gets the addon's reason (exit 1). The look is checked like looks save: one the tables refuse is not saved (exit 1); an id the tables lack is noted "(possibly a hotfix)". JSON: LooksImportReport.
--json output: LooksImportReport.
| Argument | Type | Default | Help |
|---|---|---|---|
NAME |
text | required | The look's name. |
| Option | Type | Default | Help |
|---|---|---|---|
--character |
text | none | Character folder, as <Character> or <Realm folder>/<Character> when the name alone is ambiguous. |
--account |
text | none | Account folder under WTF/Account/. Implied when there is one. |
--class |
text | none | Class id or name, as the build's ChrClasses has it. |
--replace |
flag | off | Overwrite a saved look with this name. |
--build |
text | none | Full version string whose tables to use. Default: the flavor's version; with no install found, the build a saved look was checked against, or the one build whose customization tables are cached. |
--root |
path | none | The install folder, the one that holds .build.info. Default: $WOWLAB_WOW_ROOT, then the usual install locations. |
--flavor |
text | none | The flavor folder to use, as wowlab install show lists it. Implied when the install has only one. |
--json |
flag | off | Print JSON instead of text. |
Usage: wowlab looks options [OPTIONS] {race}
A race's options and choices per body type (every body type unless --sex), for a class when --class is given, with what the tables say about each choice: refusals, "needs <unlock>" and other notes. JSON: LooksOptionsReport.
--json output: LooksOptionsReport.
| Argument | Type | Default | Help |
|---|---|---|---|
race |
text | required | Race id or name, as looks races lists it. |
| Option | Type | Default | Help |
|---|---|---|---|
--sex |
text | none | Body type as the tables number it (ChrRaceXChrModel.Sex): 0 or 1; 'male' and 'female' are read as 0 and 1. |
--class |
text | none | Class id or name, as the build's ChrClasses has it. |
--build |
text | none | Full version string whose tables to use. Default: the flavor's version; with no install found, the build a saved look was checked against, or the one build whose customization tables are cached. |
--root |
path | none | The install folder, the one that holds .build.info. Default: $WOWLAB_WOW_ROOT, then the usual install locations. |
--flavor |
text | none | The flavor folder to use, as wowlab install show lists it. Implied when the install has only one. |
--json |
flag | off | Print JSON instead of text. |
Usage: wowlab looks page [OPTIONS]
Write one self-contained HTML page (no network requests) to browse the races, body types, classes, options and choices of the build's tables, with what the tables say about each choice, and to view the saved looks checked against that build. Never written into an install; names each damaged look file and then exits 1, as looks show does. JSON: LooksPageReport.
--json output: LooksPageReport.
| Option | Type | Default | Help |
|---|---|---|---|
--out |
path | none | The HTML file to write. Default: pages/looks.html under the user data directory. Refused when it is in an install. |
--build |
text | none | Full version string whose tables to use. Default: the flavor's version; with no install found, the build a saved look was checked against, or the one build whose customization tables are cached. |
--root |
path | none | The install folder, the one that holds .build.info. Default: $WOWLAB_WOW_ROOT, then the usual install locations. |
--flavor |
text | none | The flavor folder to use, as wowlab install show lists it. Implied when the install has only one. |
--json |
flag | off | Print JSON instead of text. |
Usage: wowlab looks races [OPTIONS]
Races the build's tables flag as playable, with their body types. JSON: LooksRacesReport.
--json output: LooksRacesReport.
| Option | Type | Default | Help |
|---|---|---|---|
--build |
text | none | Full version string whose tables to use. Default: the flavor's version; with no install found, the build a saved look was checked against, or the one build whose customization tables are cached. |
--root |
path | none | The install folder, the one that holds .build.info. Default: $WOWLAB_WOW_ROOT, then the usual install locations. |
--flavor |
text | none | The flavor folder to use, as wowlab install show lists it. Implied when the install has only one. |
--json |
flag | off | Print JSON instead of text. |
Usage: wowlab looks save [OPTIONS] {NAME}
Check a look against the build's tables and save it under the user data directory (never in an install). A look the tables refuse is not saved (exit 1); notes ("needs <unlock>", "unknown to build ...") are shown and do not stop the save. JSON: LookReport.
--json output: LookReport.
| Argument | Type | Default | Help |
|---|---|---|---|
NAME |
text | required | The look's name. |
| Option | Type | Default | Help |
|---|---|---|---|
--race |
text | required | Race id or name. |
--sex |
text | required | Body type (ChrRaceXChrModel.Sex): 0 or 1; 'male' and 'female' read as 0 and 1. |
--choice |
text, repeatable | none | OPTION=CHOICE, two ids as wowlab looks options lists them. Repeat for more. |
--class |
text | none | Class id or name, as the build's ChrClasses has it. |
--replace |
flag | off | Overwrite a saved look with this name. |
--build |
text | none | Full version string whose tables to use. Default: the flavor's version; with no install found, the build a saved look was checked against, or the one build whose customization tables are cached. |
--root |
path | none | The install folder, the one that holds .build.info. Default: $WOWLAB_WOW_ROOT, then the usual install locations. |
--flavor |
text | none | The flavor folder to use, as wowlab install show lists it. Implied when the install has only one. |
--json |
flag | off | Print JSON instead of text. |
Usage: wowlab looks show [OPTIONS] [NAME]
One saved look checked against the build's tables, or every saved look with its verdict; names each damaged file and then exits 1. JSON: LookReport with NAME, else LooksListReport.
--json output: LookReport, LooksListReport.
| Argument | Type | Default | Help |
|---|---|---|---|
[NAME] |
text | none | A saved look. Default: every saved look. |
| Option | Type | Default | Help |
|---|---|---|---|
--build |
text | none | Full version string whose tables to use. Default: the flavor's version; with no install found, the build a saved look was checked against, or the one build whose customization tables are cached. |
--root |
path | none | The install folder, the one that holds .build.info. Default: $WOWLAB_WOW_ROOT, then the usual install locations. |
--flavor |
text | none | The flavor folder to use, as wowlab install show lists it. Implied when the install has only one. |
--json |
flag | off | Print JSON instead of text. |
Macros in macros-cache.txt.
Usage: wowlab macros list [OPTIONS]
Account macros, or one character's with --character. JSON: MacrosReport.
--json output: MacrosReport.
| Option | Type | Default | Help |
|---|---|---|---|
--account |
text | none | Account folder under WTF/Account/. Implied when there is one. |
--character |
text | none | Character folder, as <Character> or <Realm folder>/<Character> when the name alone is ambiguous. |
--root |
path | none | The install folder, the one that holds .build.info. Default: $WOWLAB_WOW_ROOT, then the usual install locations. |
--flavor |
text | none | The flavor folder to use, as wowlab install show lists it. Implied when the install has only one. |
--json |
flag | off | Print JSON instead of text. |
Named sets of the client's local UI files, saved into the snapshot store and applied through the write gate (wowlab undo reverses an apply). A profile covers every account and every character folder that existed when it was saved, not only the character you play; applying it deletes files created in those places since. The lab-addon is never in a profile. Action-bar contents and talents are not in these files (the server keeps them; not yet verified on this client), so no profile saves or restores them.
Usage: wowlab profile apply [OPTIONS] {NAME}
Return the profile's files to their saved bytes, through the write gate: the client must be closed, a pre-write snapshot is taken first, and wowlab undo reverses it.
A profile covers every account and every character folder that existed when it was saved, not only the character you play. Its files are written back, and files created in those places since the save are deleted: for example macros or character-specific key bindings made since on any of those characters, and with the addons preset, addons installed since (code and settings). Addon updates made since are undone. --dry-run shows the plan without asking. Files whose file-map Edit is no (client-written backups, Blizzard_* folders, file-browser metadata) are left alone. Every *-cache* file is listed: the server may replace it at your next login, so the result is proven only by logging in.
The lab-addon (Interface/AddOns/WowLab/ and WowLab.lua) is always left alone, and so is anything the write gate will not write or delete (an executable); both are listed. Action-bar contents and talents are not in these files (the server keeps them; not yet verified on this client), so no profile saves or restores them. JSON: ProfileApplyReport.
Asks before changing files. It shows what it will change and asks first; -y, --yes answers yes. The help above says which files.
--json output: ProfileApplyReport.
| Argument | Type | Default | Help |
|---|---|---|---|
NAME |
text | required | The profile's name. |
| Option | Type | Default | Help |
|---|---|---|---|
--dry-run |
flag | off | Print the plan and change nothing. |
--yes, -y
|
flag | off | Do not ask before changing files. |
--root |
path | none | The install folder, the one that holds .build.info. Default: $WOWLAB_WOW_ROOT, then the usual install locations. |
--json |
flag | off | Print JSON instead of text. |
Usage: wowlab profile delete [OPTIONS] {NAME}
Delete a profile. Its snapshot stays in the store (snapshots are immutable), relabelled deleted-profile:NAME. Changes nothing in the install. JSON: ProfileDeleteReport.
--json output: ProfileDeleteReport.
| Argument | Type | Default | Help |
|---|---|---|---|
NAME |
text | required | The profile's name. |
| Option | Type | Default | Help |
|---|---|---|---|
--json |
flag | off | Print JSON instead of text. |
Usage: wowlab profile list [OPTIONS]
Every profile, oldest first; names each damaged manifest and then exits 1. JSON: ProfileListReport.
--json output: ProfileListReport.
| Option | Type | Default | Help |
|---|---|---|---|
--json |
flag | off | Print JSON instead of text. |
Usage: wowlab profile save [OPTIONS] {NAME}
Save a profile: a snapshot of the preset's (or the subtrees') files, labelled with NAME (reads the install only).
A preset covers every account and every character folder that exists now, not only the character you play, and applying the profile later deletes files created in those places since the save. An explicit --subtree is a whole file or folder: files added anywhere under it since are deleted by an apply. The lab-addon (Interface/AddOns/WowLab/ and WowLab.lua) is never in a profile. A saved subtree that is itself a link (a symlinked Interface/AddOns, say) is held as the link, not what is behind it, and the output says so. Action-bar contents and talents are not in these files (the server keeps them; not yet verified on this client), so no profile saves or restores them. JSON: ProfileReport.
--json output: ProfileReport.
| Argument | Type | Default | Help |
|---|---|---|---|
NAME |
text | required | The profile's name. |
| Option | Type | Default | Help |
|---|---|---|---|
--preset |
text, repeatable | none | A preset: ui: Config.wtf (machine-wide: also graphics, sound, locale and the last account), account and character config-cache.wtf, the edit-mode caches, layout-local.txt, chat-cache.txt; bindings: account and character bindings-cache.wtf, click-bindings-cache.txt; macros: account and character macros-cache.txt (buttons may point at a macro by its place in the list: check your bars after applying); addons: Interface/AddOns/ as saved (addons installed since are removed, updates since are undone), AddOns.txt, addon SavedVariables; never the lab-addon (Interface/AddOns/WowLab/, WowLab.lua). Repeat for more. |
--subtree |
text, repeatable | none | A file or folder relative to the flavor folder, under WTF/, Interface/ or Fonts/ and narrower than WTF/Account/ (for a whole area use snap create and snap restore); files added anywhere under it since the save, including in character folders created since, are deleted by an apply. Repeat for more. |
--root |
path | none | The install folder, the one that holds .build.info. Default: $WOWLAB_WOW_ROOT, then the usual install locations. |
--flavor |
text | none | The flavor folder to use, as wowlab install show lists it. Implied when the install has only one. |
--json |
flag | off | Print JSON instead of text. |
Usage: wowlab profile show [OPTIONS] {NAME}
One profile and every file in it, with the notes save gave (a saved subtree that was a link is held as the link). JSON: ProfileReport.
--json output: ProfileReport.
| Argument | Type | Default | Help |
|---|---|---|---|
NAME |
text | required | The profile's name. |
| Option | Type | Default | Help |
|---|---|---|---|
--json |
flag | off | Print JSON instead of text. |
The snapshot store.
Usage: wowlab snap create [OPTIONS]
Snapshot a flavor's WTF/, Interface/ and Fonts/ into the store (reads the install only). Labels starting with profile: or deleted-profile: are wowlab profile's and are refused. JSON: the manifest (snapshot.Manifest).
--json output: snapshot.Manifest.
| Option | Type | Default | Help |
|---|---|---|---|
-m, --message
|
text | "" |
A label for the snapshot. |
--screenshots |
flag | off | Also capture Screenshots/. |
--root |
path | none | The install folder, the one that holds .build.info. Default: $WOWLAB_WOW_ROOT, then the usual install locations. |
--flavor |
text | none | The flavor folder to use, as wowlab install show lists it. Implied when the install has only one. |
--json |
flag | off | Print JSON instead of text. |
Usage: wowlab snap diff [OPTIONS] {A} {B}
Files added, removed and changed from A to B; for SavedVariables that parse, which values changed. JSON: DiffReport.
--json output: DiffReport.
| Argument | Type | Default | Help |
|---|---|---|---|
A |
text | required | Older snapshot id or prefix. |
B |
text | required | Newer snapshot id or prefix. |
| Option | Type | Default | Help |
|---|---|---|---|
--json |
flag | off | Print JSON instead of text. |
Usage: wowlab snap gc [OPTIONS]
Remove stored objects that nothing keeps, once they are older than an hour (GC_GRACE_SECONDS, in case a snapshot is being written). Kept: every object a snapshot refers to, and what each committed write left in a character's WowLab.lua (the lab-addon's per-character file, in any install), which the SavedVariables loader check of sv merge compares from. Anything else a write left, such as what a snap restore or profile apply wrote from a snapshot since deleted, is collected. Holds the store lock for the whole run, so no transaction or snap create runs meanwhile. JSON: snapshot.GcReport.
Asks before changing files. It shows what it will change and asks first; -y, --yes answers yes. The help above says which files.
--json output: snapshot.GcReport.
| Option | Type | Default | Help |
|---|---|---|---|
--dry-run |
flag | off | Only list what would be removed. |
--yes, -y
|
flag | off | Do not ask before changing files. |
--json |
flag | off | Print JSON instead of text. |
Usage: wowlab snap list [OPTIONS]
Every snapshot, oldest first; names each damaged manifest and then exits 1. JSON: SnapListReport.
--json output: SnapListReport.
| Option | Type | Default | Help |
|---|---|---|---|
--json |
flag | off | Print JSON instead of text. |
Usage: wowlab snap restore [OPTIONS] {ID}
Put back files from a snapshot, through the write gate: the client must be closed, a pre-write snapshot is taken first, and wowlab undo reverses it.
Without --paths, files whose file-map Edit is no (client-written backups such as .lua.bak and .old, Interface/AddOns/Blizzard_*, file-browser metadata) are left alone and counted in the plan; name one with --paths to restore it. JSON: RestoreReport.
Asks before changing files. It shows what it will change and asks first; -y, --yes answers yes. The help above says which files.
--json output: RestoreReport.
| Argument | Type | Default | Help |
|---|---|---|---|
ID |
text | required | Id or unique prefix. |
| Option | Type | Default | Help |
|---|---|---|---|
--paths |
text, repeatable | none | Only this path, relative to the flavor folder; repeat for more. A path the snapshot covers but does not hold is deleted. A named path is restored even when its file-map row says wowlab leaves it alone. |
--dry-run |
flag | off | Print the plan and change nothing. |
--yes, -y
|
flag | off | Do not ask before changing files. |
--root |
path | none | The install folder, the one that holds .build.info. Default: $WOWLAB_WOW_ROOT, then the usual install locations. |
--json |
flag | off | Print JSON instead of text. |
Usage: wowlab snap show [OPTIONS] {ID}
One snapshot and every path in it. JSON: the manifest (snapshot.Manifest).
--json output: snapshot.Manifest.
| Argument | Type | Default | Help |
|---|---|---|---|
ID |
text | required | Id or unique prefix. |
| Option | Type | Default | Help |
|---|---|---|---|
--json |
flag | off | Print JSON instead of text. |
Usage: wowlab snap verify [OPTIONS]
Re-hash every stored object and check every manifest. Exits 1 on any problem. JSON: snapshot.VerifyReport.
--json output: snapshot.VerifyReport.
| Option | Type | Default | Help |
|---|---|---|---|
--json |
flag | off | Print JSON instead of text. |
SavedVariables files: list and dump read them; merge writes one through the write gate.
Usage: wowlab sv dump [OPTIONS] {file}
A SavedVariables file as data: one path = value line per value, in file order. Parsed by luadata, never run as code. JSON: SvDumpReport.
--json output: SvDumpReport.
| Argument | Type | Default | Help |
|---|---|---|---|
file |
text | required | A SavedVariables file: absolute, relative to the current folder, or relative to the flavor folder. |
| Option | Type | Default | Help |
|---|---|---|---|
--path |
text | none | One value, e.g. Var.key[3].name or Var["some key"], spelled as the dump prints it; a quoted key takes Lua 5.1 escapes (\n, \\, \", \ddd). |
--root |
path | none | The install folder, the one that holds .build.info. Default: $WOWLAB_WOW_ROOT, then the usual install locations. |
--flavor |
text | none | The flavor folder to use, as wowlab install show lists it. Implied when the install has only one. |
--json |
flag | off | Print JSON instead of text. |
Usage: wowlab sv list [OPTIONS]
Every SavedVariables file, account-wide and per character. JSON: SvListReport.
--json output: SvListReport.
| Option | Type | Default | Help |
|---|---|---|---|
--account |
text | none | Account folder under WTF/Account/. Implied when there is one. |
--character |
text | none | Character folder, as <Character> or <Realm folder>/<Character> when the name alone is ambiguous. |
--root |
path | none | The install folder, the one that holds .build.info. Default: $WOWLAB_WOW_ROOT, then the usual install locations. |
--flavor |
text | none | The flavor folder to use, as wowlab install show lists it. Implied when the install has only one. |
--json |
flag | off | Print JSON instead of text. |
Usage: wowlab sv merge [OPTIONS] {file}
Merge one SavedVariables file into a character's copy, by key path, and write it through the write gate (client closed, snapshot first, wowlab undo reverses it). Parsed and written as data by luadata, never run.
Two-way (--from a character or a snapshot): every key whose values differ is a conflict. Three-way (--from SNAPSHOT --base SNAPSHOT): a change on one side is taken, the same change on both once, different changes are conflicts. Conflicts are listed and nothing is written unless --take resolves them; exit 1. A key on one side only is listed as absent and never deleted. An account-wide file is shared by every character, so merging it from another character is refused (exit 2); use --from SNAPSHOT, or --key SRC=DST to copy between the per-character keys an addon keeps inside it. Before writing, the --into character's WowLab.lua is checked for a SavedVariables loader failure (exit 3). JSON: SvMergeReport.
Asks before changing files. It shows what it will change and asks first; -y, --yes answers yes. The help above says which files.
--json output: SvMergeReport.
| Argument | Type | Default | Help |
|---|---|---|---|
file |
text | required | A SavedVariables file: a name (WowLab.lua), looked up in the --into character's SavedVariables/ and then the account's; or a path as sv dump takes it. |
| Option | Type | Default | Help |
|---|---|---|---|
--into |
text | required | The target character folder (<digits>/<First>-<Second> on Forever); its WowLab.lua is read for the loader check. |
--from |
text | none | The source: a character folder (per-character files only) or a snapshot id. Left out, --key SRC=DST copies within the file. |
--base |
text | none | A snapshot holding the common ancestor: with --from SNAPSHOT, a three-way merge. |
--key |
text, repeatable | none | A subtree, e.g. Var.profile or Var["some key"], spelled as sv dump prints it; a quoted key takes Lua 5.1 escapes (\n, \\, \", \ddd). SRC=DST copies SRC to DST. Repeatable. |
--take |
one of ours, theirs
|
none | Resolve every conflict with the target's or the source's value. |
--force-loader-check |
flag | off | Merge even when the SavedVariables loader check refuses. |
--account |
text | none | Account folder under WTF/Account/. Implied when there is one. |
--yes, -y
|
flag | off | Do not ask before changing files. |
--root |
path | none | The install folder, the one that holds .build.info. Default: $WOWLAB_WOW_ROOT, then the usual install locations. |
--flavor |
text | none | The flavor folder to use, as wowlab install show lists it. Implied when the install has only one. |
--json |
flag | off | Print JSON instead of text. |