From afcddbd81b84d4e02a79857c776a9fbf0e73ba1f Mon Sep 17 00:00:00 2001 From: Guillaume ARM Date: Tue, 16 Jun 2026 22:16:58 +0200 Subject: [PATCH] chore: save the refactor mess --- .gitignore | 2 ++ .luacheckrc | 4 ++++ Justfile | 1 + install-trapos.lua | 4 +++- just/check.just | 2 +- just/craftos.just | 10 ++++----- just/npm.just | 2 +- just/stage.just | 22 +++++++++++++++++++ just/test.just | 8 +++---- manifest.json | 2 +- packages/index.json | 18 +++++++-------- {apis => packages/trapos-ai/apis}/libai.lua | 0 {apis => packages/trapos-ai/apis}/libhttp.lua | 0 .../trapos-ai/apis}/libhttpws.lua | 0 .../trapos-ai/apis}/libtrapgpt.lua | 0 packages/trapos-ai/ccpm.json | 2 +- .../trapos-ai/programs}/ai.lua | 0 .../trapos-ai/programs}/trapgpt.lua | 0 {tests => packages/trapos-ai/tests}/ai.lua | 0 .../trapos-ai/tests}/trapgpt.lua | 0 packages/trapos-boot/ccpm.json | 2 +- .../trapos-boot/programs}/motd.lua | 0 .../trapos-boot/startup}/boot.lua | 0 .../trapos-boot/tests}/boot.lua | 0 .../trapos-boot/tests}/ready.lua | 0 .../trapos-core/apis}/eventloop.lua | 0 .../trapos-core/apis}/libccpm.lua | 13 ++++++----- .../trapos-core/apis}/libinstallerdisk.lua | 0 .../trapos-core/apis}/libversion.lua | 0 packages/trapos-core/ccpm.json | 2 +- .../trapos-core/programs}/ccpm.lua | 0 .../trapos-core/programs}/events.lua | 0 .../programs}/trapos-create-disk.lua | 0 .../programs}/trapos-postinstall.lua | 0 .../trapos-core/programs}/trapos-upgrade.lua | 0 .../trapos-core/tests}/ccpm.lua | 14 ++++++------ .../trapos-core/tests}/create-disk.lua | 0 .../trapos-core/tests}/eventloop.lua | 0 .../trapos-core/tests}/libversion.lua | 0 .../trapos-core/tests}/postinstall.lua | 2 +- .../trapos-net/apis}/librouter.lua | 0 {apis => packages/trapos-net/apis}/net.lua | 0 packages/trapos-net/ccpm.json | 2 +- .../trapos-net/programs}/ping.lua | 0 .../trapos-net/programs}/router.lua | 0 .../trapos-net/servers}/net-registrar.lua | 0 .../trapos-net/servers}/ping-server.lua | 0 {tests => packages/trapos-net/tests}/net.lua | 0 .../trapos-net/tests}/router.lua | 0 .../trapos-sandbox-legacy/apis}/libcarre.lua | 0 packages/trapos-sandbox-legacy/ccpm.json | 2 +- .../trapos-sandbox-legacy/programs}/carre.lua | 0 .../programs}/creeper.lua | 0 .../programs}/mouton.lua | 0 .../trapos-sandbox-legacy/tests}/carre.lua | 0 .../trapos-sandbox/apis}/libmcpcomputer.lua | 0 .../trapos-sandbox/apis}/libsandbox.lua | 0 packages/trapos-sandbox/ccpm.json | 2 +- .../trapos-sandbox/programs}/sandbox.lua | 0 .../servers}/mcp-computer-server.lua | 0 .../trapos-sandbox/servers}/sandbox.lua | 0 .../trapos-sandbox/tests}/mcpcomputer.lua | 0 .../trapos-sandbox/tests}/sandbox.lua | 0 .../trapos-test/apis}/libtest.lua | 0 packages/trapos-test/ccpm.json | 2 +- .../trapos-test/programs}/runtest.lua | 0 .../tests}/harness/fake-eventloop.lua | 0 .../trapos-test/tests}/harness/slow-case.lua | 0 {apis => packages/trapos-ui/apis}/libtui.lua | 0 packages/trapos-ui/ccpm.json | 2 +- .../trapos-ui/programs}/tuidemo.lua | 0 .../trapos-ui/tests}/libtui.lua | 0 packages/trapos/ccpm.json | 2 +- .../trapos/tests}/install-trapos.lua | 4 ++-- {tests => packages/trapos/tests}/packages.lua | 2 +- 75 files changed, 81 insertions(+), 47 deletions(-) create mode 100644 just/stage.just rename {apis => packages/trapos-ai/apis}/libai.lua (100%) rename {apis => packages/trapos-ai/apis}/libhttp.lua (100%) rename {apis => packages/trapos-ai/apis}/libhttpws.lua (100%) rename {apis => packages/trapos-ai/apis}/libtrapgpt.lua (100%) rename {programs => packages/trapos-ai/programs}/ai.lua (100%) rename {programs => packages/trapos-ai/programs}/trapgpt.lua (100%) rename {tests => packages/trapos-ai/tests}/ai.lua (100%) rename {tests => packages/trapos-ai/tests}/trapgpt.lua (100%) rename {programs => packages/trapos-boot/programs}/motd.lua (100%) rename {startup => packages/trapos-boot/startup}/boot.lua (100%) rename {tests => packages/trapos-boot/tests}/boot.lua (100%) rename {tests => packages/trapos-boot/tests}/ready.lua (100%) rename {apis => packages/trapos-core/apis}/eventloop.lua (100%) rename {apis => packages/trapos-core/apis}/libccpm.lua (97%) rename {apis => packages/trapos-core/apis}/libinstallerdisk.lua (100%) rename {apis => packages/trapos-core/apis}/libversion.lua (100%) rename {programs => packages/trapos-core/programs}/ccpm.lua (100%) rename {programs => packages/trapos-core/programs}/events.lua (100%) rename {programs => packages/trapos-core/programs}/trapos-create-disk.lua (100%) rename {programs => packages/trapos-core/programs}/trapos-postinstall.lua (100%) rename {programs => packages/trapos-core/programs}/trapos-upgrade.lua (100%) rename {tests => packages/trapos-core/tests}/ccpm.lua (97%) rename {tests => packages/trapos-core/tests}/create-disk.lua (100%) rename {tests => packages/trapos-core/tests}/eventloop.lua (100%) rename {tests => packages/trapos-core/tests}/libversion.lua (100%) rename {tests => packages/trapos-core/tests}/postinstall.lua (97%) rename {apis => packages/trapos-net/apis}/librouter.lua (100%) rename {apis => packages/trapos-net/apis}/net.lua (100%) rename {programs => packages/trapos-net/programs}/ping.lua (100%) rename {programs => packages/trapos-net/programs}/router.lua (100%) rename {servers => packages/trapos-net/servers}/net-registrar.lua (100%) rename {servers => packages/trapos-net/servers}/ping-server.lua (100%) rename {tests => packages/trapos-net/tests}/net.lua (100%) rename {tests => packages/trapos-net/tests}/router.lua (100%) rename {apis => packages/trapos-sandbox-legacy/apis}/libcarre.lua (100%) rename {programs => packages/trapos-sandbox-legacy/programs}/carre.lua (100%) rename {programs => packages/trapos-sandbox-legacy/programs}/creeper.lua (100%) rename {programs => packages/trapos-sandbox-legacy/programs}/mouton.lua (100%) rename {tests => packages/trapos-sandbox-legacy/tests}/carre.lua (100%) rename {apis => packages/trapos-sandbox/apis}/libmcpcomputer.lua (100%) rename {apis => packages/trapos-sandbox/apis}/libsandbox.lua (100%) rename {programs => packages/trapos-sandbox/programs}/sandbox.lua (100%) rename {servers => packages/trapos-sandbox/servers}/mcp-computer-server.lua (100%) rename {servers => packages/trapos-sandbox/servers}/sandbox.lua (100%) rename {tests => packages/trapos-sandbox/tests}/mcpcomputer.lua (100%) rename {tests => packages/trapos-sandbox/tests}/sandbox.lua (100%) rename {apis => packages/trapos-test/apis}/libtest.lua (100%) rename {programs => packages/trapos-test/programs}/runtest.lua (100%) rename {tests => packages/trapos-test/tests}/harness/fake-eventloop.lua (100%) rename {tests => packages/trapos-test/tests}/harness/slow-case.lua (100%) rename {apis => packages/trapos-ui/apis}/libtui.lua (100%) rename {programs => packages/trapos-ui/programs}/tuidemo.lua (100%) rename {tests => packages/trapos-ui/tests}/libtui.lua (100%) rename {tests => packages/trapos/tests}/install-trapos.lua (97%) rename {tests => packages/trapos/tests}/packages.lua (96%) diff --git a/.gitignore b/.gitignore index a2bb8c5..f0bba73 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,5 @@ .env node_modules/ dist/ + +.stage diff --git a/.luacheckrc b/.luacheckrc index a107025..aa4872c 100644 --- a/.luacheckrc +++ b/.luacheckrc @@ -60,3 +60,7 @@ ignore = { } max_line_length = false + +-- .stage/ holds generated flat copies of per-package sources for the CraftOS-PC +-- harness; lint the originals under packages/, not the copies. +exclude_files = { ".stage" } diff --git a/Justfile b/Justfile index 0e91085..583f915 100644 --- a/Justfile +++ b/Justfile @@ -4,6 +4,7 @@ import 'just/deps.just' import 'just/install.just' import 'just/npm.just' +import 'just/stage.just' import 'just/craftos.just' import 'just/opencode.just' import 'just/sandbox.just' diff --git a/install-trapos.lua b/install-trapos.lua index 47fe132..43654f2 100644 --- a/install-trapos.lua +++ b/install-trapos.lua @@ -185,7 +185,9 @@ for _, desc in ipairs(resolved) do seenFile[filePath] = true; allFiles[#allFiles + 1] = filePath; fs.delete(filePath); - shell.execute('wget', REPO_BASE .. filePath, filePath); + -- Sources live under packages// in the repo but install flat, so + -- fetch from the package path and write to the flat destination. + shell.execute('wget', REPO_BASE .. 'packages/' .. desc.name .. '/' .. filePath, filePath); end end for _, srv in ipairs(desc.autostart or {}) do diff --git a/just/check.just b/just/check.just index aa3b484..ffd122f 100644 --- a/just/check.just +++ b/just/check.just @@ -116,7 +116,7 @@ check-packages *args: check-jq old_version="$(git show "$last_desc_commit:$desc" | jq -r '.version // empty')" files=() - while IFS= read -r file; do files+=("$file"); done < <(jq -r '.files[]?' "$desc") + while IFS= read -r file; do files+=("packages/$name/$file"); done < <(jq -r '.files[]?' "$desc") if [ "${#files[@]}" -gt 0 ] && ! git diff --quiet "$last_desc_commit" -- "${files[@]}"; then if ! semver_gt "$desc_version" "$old_version"; then if [ "$fix" -eq 1 ]; then diff --git a/just/craftos.just b/just/craftos.just index 6ee96dc..c0358e8 100644 --- a/just/craftos.just +++ b/just/craftos.just @@ -3,7 +3,7 @@ # Launch the TrapOS dev environment in CraftOS-PC with repo-local data # (.craftos/) and read-only repo mounts. See ADR-0005. [positional-arguments] -trapos *args: check-install +trapos *args: check-install stage #!/usr/bin/env bash set -euo pipefail repo='{{justfile_directory()}}' @@ -13,8 +13,8 @@ trapos *args: check-install fi argv+=(--mount-ro "/trapos=$repo") for dir in apis programs servers startup tests; do - if [ -d "$repo/$dir" ]; then - argv+=(--mount-ro "/$dir=$repo/$dir") + if [ -d "$repo/.stage/$dir" ]; then + argv+=(--mount-ro "/$dir=$repo/.stage/$dir") fi done exec craftos "${argv[@]}" "$@" @@ -38,7 +38,7 @@ craftos *args: check-install # shuts the machine down after normal completion or Lua errors, while the host # watchdog catches snippets that block before reaching shutdown. [positional-arguments] -trapos-exec code: +trapos-exec code: stage #!/usr/bin/env bash set -uo pipefail repo='{{justfile_directory()}}' @@ -79,7 +79,7 @@ trapos-exec code: printf '%s\n' 'status.close()' printf '%s\n' 'os.shutdown()' } > "$runner" - mount_arg=(--mount-ro "/trapos=$repo" --mount-ro "/apis=$repo/apis" --mount-ro "/programs=$repo/programs" --mount-ro "/servers=$repo/servers" --mount-ro "/startup=$repo/startup" --mount-ro "/tests=$repo/tests" --mount-ro "/headless=$stage_dir") + mount_arg=(--mount-ro "/trapos=$repo" --mount-ro "/apis=$repo/.stage/apis" --mount-ro "/programs=$repo/.stage/programs" --mount-ro "/servers=$repo/.stage/servers" --mount-ro "/startup=$repo/.stage/startup" --mount-ro "/tests=$repo/.stage/tests" --mount-ro "/headless=$stage_dir") craftos --directory "$data_dir" --headless "${rom_arg[@]}" "${mount_arg[@]}" --exec "shell.run('/headless/exec.lua')" >"$tmp" 2>&1 & pid="$!" ( sleep "$timeout_seconds"; kill -TERM "$pid" >/dev/null 2>&1 ) & diff --git a/just/npm.just b/just/npm.just index 0f7f711..cedceda 100644 --- a/just/npm.just +++ b/just/npm.just @@ -46,4 +46,4 @@ npm-test-integration-trap-sandbox: npm run test:integration --prefix tools/trap-sandbox/ # Build generated artifacts. -build: npm-build +build: npm-build stage diff --git a/just/stage.just b/just/stage.just new file mode 100644 index 0000000..f57050f --- /dev/null +++ b/just/stage.just @@ -0,0 +1,22 @@ +# Assemble the flat mount roots the CraftOS-PC harness expects from the +# per-package sources. Lua loads its deps by absolute mount path (require +# '/apis/x') and ccpm installs files flat, but sources now live under +# packages//{apis,programs,servers,startup,tests}. This merges them back +# into a gitignored .stage/ that the dev/test recipes mount as /apis, /programs, +# /servers, /startup, /tests. Regenerated on every run so it always reflects the +# working tree. +stage: + #!/usr/bin/env bash + set -euo pipefail + repo='{{justfile_directory()}}' + cd "$repo" + stage="$repo/.stage" + rm -rf "$stage" + for dir in apis programs servers startup tests; do + for pkgdir in packages/*/"$dir"; do + [ -d "$pkgdir" ] || continue + mkdir -p "$stage/$dir" + cp -R "$pkgdir/." "$stage/$dir/" + done + done + printf '%s\n' 'OK: staged .stage/ from packages/' diff --git a/just/test.just b/just/test.just index a8830c6..6428fd3 100644 --- a/just/test.just +++ b/just/test.just @@ -16,7 +16,7 @@ test-integration: e2e test-timeout # Run CraftOS-PC headless integration tests. Pass `--pretty` for grouped output. [positional-arguments] -_craftos-test *args: +_craftos-test *args: stage #!/usr/bin/env bash set -uo pipefail @@ -58,7 +58,7 @@ _craftos-test *args: rom_arg=(--rom /Applications/CraftOS-PC.app/Contents/Resources) fi repo='{{justfile_directory()}}' - mount_arg=(--mount-ro "/trapos=$repo" --mount-ro "/apis=$repo/apis" --mount-ro "/programs=$repo/programs" --mount-ro "/startup=$repo/startup" --mount-ro "/tests=$repo/tests") + mount_arg=(--mount-ro "/trapos=$repo" --mount-ro "/apis=$repo/.stage/apis" --mount-ro "/programs=$repo/.stage/programs" --mount-ro "/startup=$repo/.stage/startup" --mount-ro "/tests=$repo/.stage/tests") tmp="$(mktemp)" data_dir="$(mktemp -d)" output_path="$data_dir/computer/0/trapos-test-output" @@ -94,7 +94,7 @@ _craftos-test *args: # caught it. `expect` is "lua" (libtest cancels the case) or "shell" (the shell # watchdog kills the whole process). Not part of `ci`/`test`: these exercise the # failure paths on purpose. -_timeout-fixture script shell_timeout extra_flag expect: check-install +_timeout-fixture script shell_timeout extra_flag expect: check-install stage #!/usr/bin/env bash set -uo pipefail repo='{{justfile_directory()}}' @@ -103,7 +103,7 @@ _timeout-fixture script shell_timeout extra_flag expect: check-install if [ "$(uname -s)" = "Darwin" ]; then rom_arg="--rom /Applications/CraftOS-PC.app/Contents/Resources" fi - mount_arg="--mount-ro /apis=$repo/apis --mount-ro /programs=$repo/programs --mount-ro /tests=$repo/tests" + mount_arg="--mount-ro /apis=$repo/.stage/apis --mount-ro /programs=$repo/.stage/programs --mount-ro /tests=$repo/.stage/tests" tmp="$(mktemp)" data_dir="$(mktemp -d)" output_path="$data_dir/computer/0/trapos-test-output" diff --git a/manifest.json b/manifest.json index 336e6bc..2f92f6d 100644 --- a/manifest.json +++ b/manifest.json @@ -1,6 +1,6 @@ { "name": "TrapOS", - "version": "0.11.3", + "version": "0.11.4", "branch": "master", "packages": [ "trapos" diff --git a/packages/index.json b/packages/index.json index 733fe22..8be47ae 100644 --- a/packages/index.json +++ b/packages/index.json @@ -1,13 +1,13 @@ { "packages": { - "trapos-core": "0.9.0", - "trapos-test": "0.2.1", - "trapos-boot": "0.4.0", - "trapos-net": "0.3.0", - "trapos-ui": "0.2.2", - "trapos-ai": "0.7.0", - "trapos-sandbox": "0.3.3", - "trapos-sandbox-legacy": "0.3.0", - "trapos": "0.11.3" + "trapos-core": "0.9.1", + "trapos-test": "0.2.2", + "trapos-boot": "0.4.1", + "trapos-net": "0.3.1", + "trapos-ui": "0.2.3", + "trapos-ai": "0.7.1", + "trapos-sandbox": "0.3.4", + "trapos-sandbox-legacy": "0.3.1", + "trapos": "0.11.4" } } diff --git a/apis/libai.lua b/packages/trapos-ai/apis/libai.lua similarity index 100% rename from apis/libai.lua rename to packages/trapos-ai/apis/libai.lua diff --git a/apis/libhttp.lua b/packages/trapos-ai/apis/libhttp.lua similarity index 100% rename from apis/libhttp.lua rename to packages/trapos-ai/apis/libhttp.lua diff --git a/apis/libhttpws.lua b/packages/trapos-ai/apis/libhttpws.lua similarity index 100% rename from apis/libhttpws.lua rename to packages/trapos-ai/apis/libhttpws.lua diff --git a/apis/libtrapgpt.lua b/packages/trapos-ai/apis/libtrapgpt.lua similarity index 100% rename from apis/libtrapgpt.lua rename to packages/trapos-ai/apis/libtrapgpt.lua diff --git a/packages/trapos-ai/ccpm.json b/packages/trapos-ai/ccpm.json index da25ab8..681d58e 100644 --- a/packages/trapos-ai/ccpm.json +++ b/packages/trapos-ai/ccpm.json @@ -1,6 +1,6 @@ { "name": "trapos-ai", - "version": "0.7.0", + "version": "0.7.1", "description": "TrapOS AI client for opencode serve", "dependencies": ["trapos-core"], "files": [ diff --git a/programs/ai.lua b/packages/trapos-ai/programs/ai.lua similarity index 100% rename from programs/ai.lua rename to packages/trapos-ai/programs/ai.lua diff --git a/programs/trapgpt.lua b/packages/trapos-ai/programs/trapgpt.lua similarity index 100% rename from programs/trapgpt.lua rename to packages/trapos-ai/programs/trapgpt.lua diff --git a/tests/ai.lua b/packages/trapos-ai/tests/ai.lua similarity index 100% rename from tests/ai.lua rename to packages/trapos-ai/tests/ai.lua diff --git a/tests/trapgpt.lua b/packages/trapos-ai/tests/trapgpt.lua similarity index 100% rename from tests/trapgpt.lua rename to packages/trapos-ai/tests/trapgpt.lua diff --git a/packages/trapos-boot/ccpm.json b/packages/trapos-boot/ccpm.json index 63c4e16..cfbfa50 100644 --- a/packages/trapos-boot/ccpm.json +++ b/packages/trapos-boot/ccpm.json @@ -1,6 +1,6 @@ { "name": "trapos-boot", - "version": "0.4.0", + "version": "0.4.1", "description": "TrapOS boot: startup MOTD and autostart server launcher", "dependencies": ["trapos-core"], "files": [ diff --git a/programs/motd.lua b/packages/trapos-boot/programs/motd.lua similarity index 100% rename from programs/motd.lua rename to packages/trapos-boot/programs/motd.lua diff --git a/startup/boot.lua b/packages/trapos-boot/startup/boot.lua similarity index 100% rename from startup/boot.lua rename to packages/trapos-boot/startup/boot.lua diff --git a/tests/boot.lua b/packages/trapos-boot/tests/boot.lua similarity index 100% rename from tests/boot.lua rename to packages/trapos-boot/tests/boot.lua diff --git a/tests/ready.lua b/packages/trapos-boot/tests/ready.lua similarity index 100% rename from tests/ready.lua rename to packages/trapos-boot/tests/ready.lua diff --git a/apis/eventloop.lua b/packages/trapos-core/apis/eventloop.lua similarity index 100% rename from apis/eventloop.lua rename to packages/trapos-core/apis/eventloop.lua diff --git a/apis/libccpm.lua b/packages/trapos-core/apis/libccpm.lua similarity index 97% rename from apis/libccpm.lua rename to packages/trapos-core/apis/libccpm.lua index 2db94c8..0b791e7 100644 --- a/apis/libccpm.lua +++ b/packages/trapos-core/apis/libccpm.lua @@ -243,8 +243,11 @@ local function createCcpm(opts) return api.registryBaseUrl(registry) .. 'packages/index.json'; end - function api.fileUrl(registry, filePath) - return api.registryBaseUrl(registry) .. filePath; + -- Sources live under packages// in the repo but install flat (the + -- `filePath` from ccpm.json is the install destination), so the fetch URL + -- gains the package prefix while the install target stays flat. + function api.fileUrl(registry, pkg, filePath) + return api.registryBaseUrl(registry) .. 'packages/' .. pkg .. '/' .. filePath; end -- ---------- HTTP ---------- @@ -420,8 +423,8 @@ local function createCcpm(opts) cleanupEmptyGeneratedDirs(); end - function api.downloadFile(registry, filePath) - local body = httpGetBody(api.fileUrl(registry, filePath)); + function api.downloadFile(registry, pkg, filePath) + local body = httpGetBody(api.fileUrl(registry, pkg, filePath)); if not body then return false, 'failed to download ' .. filePath; end @@ -461,7 +464,7 @@ local function createCcpm(opts) log('install ' .. item.name .. ' v' .. tostring(item.desc.version or '?')); for _, filePath in ipairs(item.desc.files or {}) do log(' ' .. filePath); - local ok, derr = api.downloadFile(item.registry, filePath); + local ok, derr = api.downloadFile(item.registry, item.name, filePath); if not ok then return false, derr; end end local previous = lock.packages[item.name]; diff --git a/apis/libinstallerdisk.lua b/packages/trapos-core/apis/libinstallerdisk.lua similarity index 100% rename from apis/libinstallerdisk.lua rename to packages/trapos-core/apis/libinstallerdisk.lua diff --git a/apis/libversion.lua b/packages/trapos-core/apis/libversion.lua similarity index 100% rename from apis/libversion.lua rename to packages/trapos-core/apis/libversion.lua diff --git a/packages/trapos-core/ccpm.json b/packages/trapos-core/ccpm.json index 56cbdf2..d1353e4 100644 --- a/packages/trapos-core/ccpm.json +++ b/packages/trapos-core/ccpm.json @@ -1,6 +1,6 @@ { "name": "trapos-core", - "version": "0.9.0", + "version": "0.9.1", "description": "TrapOS base: package manager, event loop, upgrade and event tools", "dependencies": [], "files": [ diff --git a/programs/ccpm.lua b/packages/trapos-core/programs/ccpm.lua similarity index 100% rename from programs/ccpm.lua rename to packages/trapos-core/programs/ccpm.lua diff --git a/programs/events.lua b/packages/trapos-core/programs/events.lua similarity index 100% rename from programs/events.lua rename to packages/trapos-core/programs/events.lua diff --git a/programs/trapos-create-disk.lua b/packages/trapos-core/programs/trapos-create-disk.lua similarity index 100% rename from programs/trapos-create-disk.lua rename to packages/trapos-core/programs/trapos-create-disk.lua diff --git a/programs/trapos-postinstall.lua b/packages/trapos-core/programs/trapos-postinstall.lua similarity index 100% rename from programs/trapos-postinstall.lua rename to packages/trapos-core/programs/trapos-postinstall.lua diff --git a/programs/trapos-upgrade.lua b/packages/trapos-core/programs/trapos-upgrade.lua similarity index 100% rename from programs/trapos-upgrade.lua rename to packages/trapos-core/programs/trapos-upgrade.lua diff --git a/tests/ccpm.lua b/packages/trapos-core/tests/ccpm.lua similarity index 97% rename from tests/ccpm.lua rename to packages/trapos-core/tests/ccpm.lua index 5f87094..7df741b 100644 --- a/tests/ccpm.lua +++ b/packages/trapos-core/tests/ccpm.lua @@ -154,8 +154,8 @@ testlib.test("install downloads files and records the lock", function() dependencies = { "trapos-core" }, files = { "apis/net.lua" }, }), - [base .. "apis/eventloop.lua"] = "eventloop-body", - [base .. "apis/net.lua"] = "net-body", + [base .. "packages/trapos-core/apis/eventloop.lua"] = "eventloop-body", + [base .. "packages/trapos-net/apis/net.lua"] = "net-body", } local sd, root = freshDirs() local ccpm = createCcpm({ stateDir = sd, installRoot = root, http = fakeHttp(routes) }) @@ -194,8 +194,8 @@ testlib.test("install downloads files from a gitea registry", function() dependencies = { "trapos-core" }, files = { "apis/net.lua" }, }), - [base .. "apis/eventloop.lua"] = "eventloop-body", - [base .. "apis/net.lua"] = "net-body", + [base .. "packages/trapos-core/apis/eventloop.lua"] = "eventloop-body", + [base .. "packages/trapos-net/apis/net.lua"] = "net-body", } local sd, root = freshDirs() local ccpm = createCcpm({ stateDir = sd, installRoot = root, http = fakeHttp(routes) }) @@ -237,8 +237,8 @@ testlib.test("installing trapos writes aggregated os state", function() files = { "apis/net.lua" }, autostart = { "servers/ping-server" }, }), - [base .. "programs/ccpm.lua"] = "ccpm-body", - [base .. "apis/net.lua"] = "net-body", + [base .. "packages/trapos-core/programs/ccpm.lua"] = "ccpm-body", + [base .. "packages/trapos-net/apis/net.lua"] = "net-body", } local sd, root = freshDirs() local ccpm = createCcpm({ stateDir = sd, installRoot = root, http = fakeHttp(routes) }) @@ -354,7 +354,7 @@ testlib.test("upgrade reinstalls outdated packages from cache", function() dependencies = {}, files = { "programs/foo.lua" }, }), - [base .. "programs/foo.lua"] = "foo-v2", + [base .. "packages/foo/programs/foo.lua"] = "foo-v2", } local sd, root = freshDirs() local ccpm = createCcpm({ stateDir = sd, installRoot = root, http = fakeHttp(routes) }) diff --git a/tests/create-disk.lua b/packages/trapos-core/tests/create-disk.lua similarity index 100% rename from tests/create-disk.lua rename to packages/trapos-core/tests/create-disk.lua diff --git a/tests/eventloop.lua b/packages/trapos-core/tests/eventloop.lua similarity index 100% rename from tests/eventloop.lua rename to packages/trapos-core/tests/eventloop.lua diff --git a/tests/libversion.lua b/packages/trapos-core/tests/libversion.lua similarity index 100% rename from tests/libversion.lua rename to packages/trapos-core/tests/libversion.lua diff --git a/tests/postinstall.lua b/packages/trapos-core/tests/postinstall.lua similarity index 97% rename from tests/postinstall.lua rename to packages/trapos-core/tests/postinstall.lua index 3598315..4b7030a 100644 --- a/tests/postinstall.lua +++ b/packages/trapos-core/tests/postinstall.lua @@ -36,7 +36,7 @@ local function runPostinstall(settingsLib) end, }, { __index = _G }); - local chunk, loadErr = loadfile('/trapos/programs/trapos-postinstall.lua', 't', env); + local chunk, loadErr = loadfile('/programs/trapos-postinstall.lua', 't', env); if not chunk then error(loadErr, 0); end local ok, err = pcall(chunk); if not ok then error(err, 0); end diff --git a/apis/librouter.lua b/packages/trapos-net/apis/librouter.lua similarity index 100% rename from apis/librouter.lua rename to packages/trapos-net/apis/librouter.lua diff --git a/apis/net.lua b/packages/trapos-net/apis/net.lua similarity index 100% rename from apis/net.lua rename to packages/trapos-net/apis/net.lua diff --git a/packages/trapos-net/ccpm.json b/packages/trapos-net/ccpm.json index ad1d350..cd2bb7e 100644 --- a/packages/trapos-net/ccpm.json +++ b/packages/trapos-net/ccpm.json @@ -1,6 +1,6 @@ { "name": "trapos-net", - "version": "0.3.0", + "version": "0.3.1", "description": "TrapOS networking: service-name bus, router, ping", "dependencies": ["trapos-core"], "files": [ diff --git a/programs/ping.lua b/packages/trapos-net/programs/ping.lua similarity index 100% rename from programs/ping.lua rename to packages/trapos-net/programs/ping.lua diff --git a/programs/router.lua b/packages/trapos-net/programs/router.lua similarity index 100% rename from programs/router.lua rename to packages/trapos-net/programs/router.lua diff --git a/servers/net-registrar.lua b/packages/trapos-net/servers/net-registrar.lua similarity index 100% rename from servers/net-registrar.lua rename to packages/trapos-net/servers/net-registrar.lua diff --git a/servers/ping-server.lua b/packages/trapos-net/servers/ping-server.lua similarity index 100% rename from servers/ping-server.lua rename to packages/trapos-net/servers/ping-server.lua diff --git a/tests/net.lua b/packages/trapos-net/tests/net.lua similarity index 100% rename from tests/net.lua rename to packages/trapos-net/tests/net.lua diff --git a/tests/router.lua b/packages/trapos-net/tests/router.lua similarity index 100% rename from tests/router.lua rename to packages/trapos-net/tests/router.lua diff --git a/apis/libcarre.lua b/packages/trapos-sandbox-legacy/apis/libcarre.lua similarity index 100% rename from apis/libcarre.lua rename to packages/trapos-sandbox-legacy/apis/libcarre.lua diff --git a/packages/trapos-sandbox-legacy/ccpm.json b/packages/trapos-sandbox-legacy/ccpm.json index 145c343..6467b49 100644 --- a/packages/trapos-sandbox-legacy/ccpm.json +++ b/packages/trapos-sandbox-legacy/ccpm.json @@ -1,6 +1,6 @@ { "name": "trapos-sandbox-legacy", - "version": "0.3.0", + "version": "0.3.1", "description": "[legacy] TrapOS sandbox programs for ccpm experiments and Lua learning", "dependencies": ["trapos-core"], "files": [ diff --git a/programs/carre.lua b/packages/trapos-sandbox-legacy/programs/carre.lua similarity index 100% rename from programs/carre.lua rename to packages/trapos-sandbox-legacy/programs/carre.lua diff --git a/programs/creeper.lua b/packages/trapos-sandbox-legacy/programs/creeper.lua similarity index 100% rename from programs/creeper.lua rename to packages/trapos-sandbox-legacy/programs/creeper.lua diff --git a/programs/mouton.lua b/packages/trapos-sandbox-legacy/programs/mouton.lua similarity index 100% rename from programs/mouton.lua rename to packages/trapos-sandbox-legacy/programs/mouton.lua diff --git a/tests/carre.lua b/packages/trapos-sandbox-legacy/tests/carre.lua similarity index 100% rename from tests/carre.lua rename to packages/trapos-sandbox-legacy/tests/carre.lua diff --git a/apis/libmcpcomputer.lua b/packages/trapos-sandbox/apis/libmcpcomputer.lua similarity index 100% rename from apis/libmcpcomputer.lua rename to packages/trapos-sandbox/apis/libmcpcomputer.lua diff --git a/apis/libsandbox.lua b/packages/trapos-sandbox/apis/libsandbox.lua similarity index 100% rename from apis/libsandbox.lua rename to packages/trapos-sandbox/apis/libsandbox.lua diff --git a/packages/trapos-sandbox/ccpm.json b/packages/trapos-sandbox/ccpm.json index 32a2835..808677c 100644 --- a/packages/trapos-sandbox/ccpm.json +++ b/packages/trapos-sandbox/ccpm.json @@ -1,6 +1,6 @@ { "name": "trapos-sandbox", - "version": "0.3.3", + "version": "0.3.4", "description": "TrapOS sandbox gateway client: WS daemon (servers/sandbox) + sandbox command + MCP exec/write server", "dependencies": ["trapos-core"], "files": [ diff --git a/programs/sandbox.lua b/packages/trapos-sandbox/programs/sandbox.lua similarity index 100% rename from programs/sandbox.lua rename to packages/trapos-sandbox/programs/sandbox.lua diff --git a/servers/mcp-computer-server.lua b/packages/trapos-sandbox/servers/mcp-computer-server.lua similarity index 100% rename from servers/mcp-computer-server.lua rename to packages/trapos-sandbox/servers/mcp-computer-server.lua diff --git a/servers/sandbox.lua b/packages/trapos-sandbox/servers/sandbox.lua similarity index 100% rename from servers/sandbox.lua rename to packages/trapos-sandbox/servers/sandbox.lua diff --git a/tests/mcpcomputer.lua b/packages/trapos-sandbox/tests/mcpcomputer.lua similarity index 100% rename from tests/mcpcomputer.lua rename to packages/trapos-sandbox/tests/mcpcomputer.lua diff --git a/tests/sandbox.lua b/packages/trapos-sandbox/tests/sandbox.lua similarity index 100% rename from tests/sandbox.lua rename to packages/trapos-sandbox/tests/sandbox.lua diff --git a/apis/libtest.lua b/packages/trapos-test/apis/libtest.lua similarity index 100% rename from apis/libtest.lua rename to packages/trapos-test/apis/libtest.lua diff --git a/packages/trapos-test/ccpm.json b/packages/trapos-test/ccpm.json index 0f857ff..c15f183 100644 --- a/packages/trapos-test/ccpm.json +++ b/packages/trapos-test/ccpm.json @@ -1,6 +1,6 @@ { "name": "trapos-test", - "version": "0.2.1", + "version": "0.2.2", "description": "TrapOS test framework and CraftOS-PC suite runner", "dependencies": ["trapos-core"], "files": [ diff --git a/programs/runtest.lua b/packages/trapos-test/programs/runtest.lua similarity index 100% rename from programs/runtest.lua rename to packages/trapos-test/programs/runtest.lua diff --git a/tests/harness/fake-eventloop.lua b/packages/trapos-test/tests/harness/fake-eventloop.lua similarity index 100% rename from tests/harness/fake-eventloop.lua rename to packages/trapos-test/tests/harness/fake-eventloop.lua diff --git a/tests/harness/slow-case.lua b/packages/trapos-test/tests/harness/slow-case.lua similarity index 100% rename from tests/harness/slow-case.lua rename to packages/trapos-test/tests/harness/slow-case.lua diff --git a/apis/libtui.lua b/packages/trapos-ui/apis/libtui.lua similarity index 100% rename from apis/libtui.lua rename to packages/trapos-ui/apis/libtui.lua diff --git a/packages/trapos-ui/ccpm.json b/packages/trapos-ui/ccpm.json index dd4bcd3..79f98cf 100644 --- a/packages/trapos-ui/ccpm.json +++ b/packages/trapos-ui/ccpm.json @@ -1,6 +1,6 @@ { "name": "trapos-ui", - "version": "0.2.2", + "version": "0.2.3", "description": "TrapOS terminal UI toolkit and demo", "dependencies": ["trapos-core"], "files": [ diff --git a/programs/tuidemo.lua b/packages/trapos-ui/programs/tuidemo.lua similarity index 100% rename from programs/tuidemo.lua rename to packages/trapos-ui/programs/tuidemo.lua diff --git a/tests/libtui.lua b/packages/trapos-ui/tests/libtui.lua similarity index 100% rename from tests/libtui.lua rename to packages/trapos-ui/tests/libtui.lua diff --git a/packages/trapos/ccpm.json b/packages/trapos/ccpm.json index 89df65b..6780f4e 100644 --- a/packages/trapos/ccpm.json +++ b/packages/trapos/ccpm.json @@ -1,6 +1,6 @@ { "name": "trapos", - "version": "0.11.3", + "version": "0.11.4", "description": "TrapOS full install meta-package", "dependencies": [ "trapos-boot", diff --git a/tests/install-trapos.lua b/packages/trapos/tests/install-trapos.lua similarity index 97% rename from tests/install-trapos.lua rename to packages/trapos/tests/install-trapos.lua index c05ea5a..76dc355 100644 --- a/tests/install-trapos.lua +++ b/packages/trapos/tests/install-trapos.lua @@ -54,8 +54,8 @@ local function installRoutes() dependencies = {}, files = { 'apis/libccpm.lua', 'programs/ccpm.lua' }, }), - [INSTALL_BASE .. 'apis/libccpm.lua'] = 'libccpm-body', - [INSTALL_BASE .. 'programs/ccpm.lua'] = 'ccpm-body', + [INSTALL_BASE .. 'packages/trapos-core/apis/libccpm.lua'] = 'libccpm-body', + [INSTALL_BASE .. 'packages/trapos-core/programs/ccpm.lua'] = 'ccpm-body', }; end diff --git a/tests/packages.lua b/packages/trapos/tests/packages.lua similarity index 96% rename from tests/packages.lua rename to packages/trapos/tests/packages.lua index 865a9f6..a97c926 100644 --- a/tests/packages.lua +++ b/packages/trapos/tests/packages.lua @@ -83,7 +83,7 @@ testlib.test('package descriptors are internally consistent', function() local files = {}; for _, filePath in ipairs(desc.files) do files[filePath] = true; - testlib.assertTrue(fs.exists('/trapos/' .. filePath), name .. ' missing shipped file ' .. filePath); + testlib.assertTrue(fs.exists(PACKAGES_DIR .. '/' .. name .. '/' .. filePath), name .. ' missing shipped file ' .. filePath); end for _, autostart in ipairs(desc.autostart) do