Updater tool written in Go
Find a file
Meliora c37e4e8944
All checks were successful
Release / Release (push) Successful in 29s
Feat: Lockfile added and fallback for Linux (#18)
Reviewed-on: #18
2026-04-25 19:03:09 +00:00
.forgejo Feat: CI testing (#17) 2026-04-25 16:24:49 +00:00
cmd/updater Moving from development branch 2026-04-25 12:11:47 +02:00
internal/app Feat: Lockfile added and fallback for Linux (#18) 2026-04-25 19:03:09 +00:00
.gitignore Moving from development branch 2026-04-25 12:11:47 +02:00
CHANGELOG.md Feat: Lockfile added and fallback for Linux (#18) 2026-04-25 19:03:09 +00:00
go.mod Moving from development branch 2026-04-25 12:11:47 +02:00
LICENSE Moving from development branch 2026-04-25 12:11:47 +02:00
README.md Feat: Updated README 2026-04-25 12:16:36 +02:00
VERSION Feat: Lockfile added and fallback for Linux (#18) 2026-04-25 19:03:09 +00:00

Vanaportal Updater

Updater companion for VanaPortal, written in Go.

Overview

  • Started by Vanaportal (plugin) automatically on load.
  • If started manually, it expects the Windower root path.
  • Derives:
    • root/plugins/ for the plugin files.
    • root/addons/Vanaportal/ for the addon files.
    • root/addons/Vanaportal/data/update.json for metadata
    • root/addons/Vanaportal/data/tmp/ for staged zip assets
    • root/addons/Vanaportal/data/updater.state.json for handled/staged state
  • Watches the game process pol.exe.
  • While pol.exe is running, it look for new releases and stages new zip files.
  • When pol.exe process is no longer detected, it applies any staged updates and exits.
  • plugin and addon are updated independently.

Metadata

The updater writes a JSON metadata file:

{
  "channel": "stable",
  "status": "idle",
  "plugin": {
    "version": "",
    "download_url": "",
    "staged": false
  },
  "addon": {
    "version": "",
    "download_url": "",
    "staged": false
  }
}

status values:

  • idle
  • update_available
  • staged
  • applying
  • applied
  • error

Notes

  • Zip archives are extracted directly into the target directories.
  • Already handled versions are persisted in updater.state.json so the updater does not re-download the same release on every run.