Skip to content

CLI Reference

github-actions[bot] edited this page Oct 15, 2026 · 1 revision

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.

wowlab

Local-only toolchain over a World of Warcraft install.

Option Type Default Help
--version flag off Print the version and exit.

wowlab doctor

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.

wowlab explain

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.

wowlab tree

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.

wowlab undo

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.

wowlab addon

Install or remove the lab-addon (Interface/AddOns/WowLab/) through the write gate. Its SavedVariables (WowLab.lua) are never touched.

wowlab addon install

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.

wowlab addon remove

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.

wowlab addons

Folders under Interface/AddOns/.

wowlab addons list

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.

wowlab binds

Key bindings in bindings-cache.wtf.

wowlab binds list

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.

wowlab char

Characters as the lab-addon recorded them in WowLab.lua (read only).

wowlab char list

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.

wowlab char show

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.

wowlab cvar

CVars in Config.wtf and config-cache.wtf.

wowlab cvar get

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.

wowlab cvar list

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.

wowlab db2

Game data tables from wago.tools, cached by build.

wowlab db2 builds

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.

wowlab db2 fetch

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.

wowlab db2 head

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.

wowlab install

The install and its flavors.

wowlab install show

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.

wowlab log

The combat log (read only).

wowlab log tail

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.

wowlab looks

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.

wowlab looks compare

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.

wowlab looks import-char

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.

wowlab looks options

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.

wowlab looks page

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.

wowlab looks races

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.

wowlab looks save

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.

wowlab looks show

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.

wowlab macros

Macros in macros-cache.txt.

wowlab macros list

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.

wowlab profile

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.

wowlab profile apply

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.

wowlab profile delete

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.

wowlab profile list

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.

wowlab profile save

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.

wowlab profile show

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.

wowlab snap

The snapshot store.

wowlab snap create

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.

wowlab snap diff

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.

wowlab snap gc

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.

wowlab snap list

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.

wowlab snap restore

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.

wowlab snap show

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.

wowlab snap verify

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.

wowlab sv

SavedVariables files: list and dump read them; merge writes one through the write gate.

wowlab sv dump

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.

wowlab sv list

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.

wowlab sv merge

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.

Clone this wiki locally