Skip to content

Add ElvUI addon management functions #3

Description

The ElvUI module manages the ElvUI addon for World of Warcraft — installing and updating the addon via the Tukui API.

Request

Desired capability

The module provides two commands:

  • Install-ElvUI — Downloads and installs ElvUI to the WoW AddOns folder. Supports targeting a specific WoW installation path and game flavor (_retail_, _classic_, _classic_era_).
  • Update-ElvUI — Checks the installed version against the latest available version from the Tukui API, and updates if a newer version is available. Supports -Force to reinstall even when already up to date. Handles fresh installs if ElvUI is not yet present.

The public API surface uses the ElvUI noun exclusively. All Tukui-level functions
that interact with the Tukui API or perform generic addon operations are internal implementation details and
remain private.

Acceptance criteria

  • Public and private functions are placed in the correct src/functions/public/ and src/functions/private/ directories
  • Each function lives in its own .ps1 file following the module's convention
  • The module exports only Install-ElvUI and Update-ElvUI
  • All functions have proper comment-based help (.SYNOPSIS, .DESCRIPTION, .EXAMPLE, .OUTPUTS where applicable)
  • No function executes on module import — all functions require explicit invocation

Technical decisions

Function classification — public vs. private

Function Visibility Purpose
Install-ElvUI Public Downloads and installs ElvUI to the AddOns folder
Update-ElvUI Public Compares installed vs. latest version and updates if needed; supports -Force
Get-WoWAddOnsPath Private Resolves the WoW AddOns folder path for a given flavor
Get-TukuiAddon Private Queries the Tukui API for addon metadata
Get-TukuiInstalledVersion Private Reads .toc files to extract the installed addon version
Install-TukuiAddon Private Downloads, extracts, and installs an addon zip to the AddOns folder

File and folder layout

src/functions/
├── private/
│   ├── Get-WoWAddOnsPath.ps1
│   ├── Get-TukuiAddon.ps1
│   ├── Get-TukuiInstalledVersion.ps1
│   └── Install-TukuiAddon.ps1
└── public/
    ├── Install-ElvUI.ps1
    └── Update-ElvUI.ps1

Implementation plan

  • Remove all template placeholder files — clear out src/functions/public/ and src/functions/private/
  • Create private functions
    • src/functions/private/Get-WoWAddOnsPath.ps1 — resolves <WoWPath>\<Flavor>\Interface\AddOns path
    • src/functions/private/Get-TukuiAddon.ps1 — calls the Tukui API, returns structured [PSCustomObject]
    • src/functions/private/Get-TukuiInstalledVersion.ps1 — reads .toc file to extract installed version
    • src/functions/private/Install-TukuiAddon.ps1 — downloads zip, extracts, removes old folders, copies new
  • Create public functions
    • src/functions/public/Install-ElvUI.ps1 — downloads and installs ElvUI to the AddOns folder
    • src/functions/public/Update-ElvUI.ps1 — compares installed vs. latest, installs if update available or -Force is used
  • Clean up data files — update src/data/Config.psd1 and src/data/Settings.psd1 for default WoW path and flavor settings
  • Update README.md with module name, description, installation instructions, and usage examples

Metadata

Metadata

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions