DAW module manager -- install, verify and list DAW modules (.stpkg)
  • Lua 98.6%
  • Makefile 1.4%
Find a file
2026-05-22 17:43:30 +02:00
config refactor: migrate daw-module-manager to flat structure with canonical module resolution 2026-05-15 06:45:51 +02:00
test fix(test): resolve daw-lua-common and daw-lua-net paths via DAW_TEST_ROOT 2026-05-22 17:40:09 +02:00
.fragjan chore(config): add .fragjan project config 2026-05-22 17:41:47 +02:00
.gitignore refactor: migrate daw-module-manager to flat structure with canonical module resolution 2026-05-15 06:45:51 +02:00
.merkwerk chore(config): add .merkwerk project config 2026-05-22 17:42:25 +02:00
.version_history chore: merkwerk auto-update 2026-05-22 17:43:30 +02:00
commands.lua fix(install): pass var_dir through for module-map regeneration 2026-05-17 20:12:13 +02:00
deps.lua refactor: migrate daw-module-manager to flat structure with canonical module resolution 2026-05-15 06:45:51 +02:00
index.lua refactor: migrate daw-module-manager to flat structure with canonical module resolution 2026-05-15 06:45:51 +02:00
init.lua refactor: migrate daw-module-manager to flat structure with canonical module resolution 2026-05-15 06:45:51 +02:00
install.lua fix(install): use mktemp -d instead of .temp directory 2026-05-18 08:55:32 +02:00
LICENSE fix(LICENSE): Add missing LICENSE 2026-05-22 17:41:14 +02:00
Makefile refactor: migrate daw-module-manager to flat structure with canonical module resolution 2026-05-15 06:45:51 +02:00
README.md feat(config): rename [registry] to [module_registry], unify opts.registry 2026-05-06 20:30:49 +02:00
semver.lua refactor: migrate daw-module-manager to flat structure with canonical module resolution 2026-05-15 06:45:51 +02:00
sig.lua refactor: migrate daw-module-manager to flat structure with canonical module resolution 2026-05-15 06:45:51 +02:00
verify.lua fix(verify): install all module files under modules_dir including docs 2026-05-18 05:56:46 +02:00
VERSION chore: bump to VERSION 1.0.7 2026-05-22 17:43:29 +02:00

daw-module-manager

Module management library for DAW host projects.

Handles registry index, dependency checking, download and verification of .stpkg packages. Used as a git submodule in DAW host projects.

Integration

git submodule add ssh://forgejo@smida.dragons-at-work.de:4022/DAW/daw-module-manager.git \
  src/lib/daw-module-manager

Add to package.path in the host project:

package.path = "src/lib/daw-module-manager/src/?.lua;"
            .. "src/lib/daw-module-manager/src/?/init.lua;"
            .. package.path

Usage

All functions take a single opts table -- no hardcoded paths or project names. The host project provides all config.

The host project config (*.conf) must include:

[module_registry]
url          = https://smida.dragons-at-work.de
index_repo   = DAW/daw-module-registry-index
index_branch = main
index_path   = config/registry-index.json
index_sig    = config/registry-index.json.minisig
keyring_path = config/daw-keyring.pub

The adapter (adapters/ui/init.lua) builds opts from cfg.module_registry:

local mm = require("daw.module_manager")

local function build_ctx(cfg)
  return {
    project     = cfg.module  and cfg.module.id,
    modules_dir = cfg.modules and cfg.modules.dir,
    registry    = cfg.module_registry,
  }
end

local opts      = build_ctx(cfg)
opts.core_ver   = merkwerk.get_version_string()

-- List installed modules local installed, err = mm.list(opts)

-- Install from registry local ok, err = mm.install(opts) -- opts.id required -- opts.version optional -- opts.yes = true skips prompt

-- Install from local file local ok, err = mm.install_local({ path = "./storage-pg-0.2.0.stpkg", id = "storage-pg", keyring_path = opts.registry.keyring_path, modules_dir = opts.modules_dir, })

-- Update registry index local ok, err = mm.update_index(opts)


## Development

```bash
git clone .../daw-module-manager
cd daw-module-manager
git clone .../daw-lua-common src/lib/daw-lua-common
make test

License

ISC