Files

2.7 KiB

coa-pack

Bundles every Exiles/coa-* addon's latest Gitea release into one ExilesPack-<YYYY.MM.DD>.zip for guildies. This repo is not itself an addon; it's the pack builder.

The output zip unpacks straight into Interface/AddOns/ - every entry at the top level of the zip is an addon folder.

Cut a release

git tag 2026.05.25
git push --tags

The .gitea/workflows/release.yml workflow picks up any tag starting with 20*, runs tools/build_pack.sh --tag <tag>, and attaches the resulting ExilesPack-<tag>.zip to a Gitea release.

The pack lands at git.sub-net.at/Exiles/coa-pack/releases.

Build locally

bash tools/build_pack.sh             # ExilesPack-<UTC date>.zip
bash tools/build_pack.sh --tag 2026.05.25

Produces dist/ExilesPack-*.zip and prints a summary (addon count, size, sha256, repos included/skipped).

Dependencies: bash, curl, jq, unzip, zip. No yq.

Peek at what's currently included

bash tools/list_releases.sh

Lists every include: true repo in manifest.yaml with its latest release tag (or (no releases)). Pure read-only against the public Gitea API.

manifest.yaml

Controls which repos go in the pack. Format:

addons:
  - repo: coa-decursive
    include: true
  - repo: coa-ace3
    include: false
    note: "Ace3 libs are already embedded inside each consuming fork."
  • include: true - fetch the latest release and unpack its zip assets into the pack.
  • include: false - leave it out (libraries, repo-only utilities, not-yet-ready forks, etc.).

To add a new addon: append a - repo: coa-<name> block with include: true. To drop one without deleting the entry, flip its flag to false (and add a note: so the reason survives).

Asset selection rules

For each included repo, the builder grabs the latest release and chooses which zip(s) to extract:

  1. If a <repo>-all.zip asset is present (umbrella zip with every addon folder side-by-side), use just that.
  2. Otherwise, download every *.zip asset attached to the release.

Each chosen zip is unpacked straight into staging/, where it should produce one or more <AddonFolder>/ entries. The per-repo zips don't carry repo metadata (.git, README.md, .gitea/), so the pack stays clean.

Failure modes

  • Repo has no releases yet: warned and skipped (the pack still builds).
  • Asset download fails: one retry, then warned and skipped.
  • All repos skip: build errors out (staging is empty).

This means cutting a pack release while some addons are still tagless will produce a smaller-than-final pack rather than a hard failure. Re-tag once all repos have shipped.

License

0BSD. Matches the rest of the Exiles addon repos.