From 1b1e186a15fda1e08c6e1f9804c082feeffe261a Mon Sep 17 00:00:00 2001 From: Louis Knight-Webb Date: Wed, 2 Jul 2025 19:35:30 +0100 Subject: [PATCH] Asset dev fixes (#53) * Use seed DB * Ignore dev_assets * Persist --- .gitignore | 4 ++- {dev_assets => dev_assets_seed}/config.json | 0 {dev_assets => dev_assets_seed}/db.sqlite | Bin package.json | 6 ++-- ...-dev-ports.js => setup-dev-environment.js} | 31 +++++++++++++++--- 5 files changed, 33 insertions(+), 8 deletions(-) rename {dev_assets => dev_assets_seed}/config.json (100%) rename {dev_assets => dev_assets_seed}/db.sqlite (100%) rename scripts/{manage-dev-ports.js => setup-dev-environment.js} (82%) diff --git a/.gitignore b/.gitignore index bfa9040c..4c871084 100644 --- a/.gitignore +++ b/.gitignore @@ -77,4 +77,6 @@ npx-cli/dist backend/db.sqlite # Development ports file -.dev-ports.json \ No newline at end of file +.dev-ports.json + +dev_assets \ No newline at end of file diff --git a/dev_assets/config.json b/dev_assets_seed/config.json similarity index 100% rename from dev_assets/config.json rename to dev_assets_seed/config.json diff --git a/dev_assets/db.sqlite b/dev_assets_seed/db.sqlite similarity index 100% rename from dev_assets/db.sqlite rename to dev_assets_seed/db.sqlite diff --git a/package.json b/package.json index 55c2eb00..97073da1 100644 --- a/package.json +++ b/package.json @@ -3,20 +3,20 @@ "version": "0.0.32", "private": true, "scripts": { - "dev": "export FRONTEND_PORT=$(node scripts/manage-dev-ports.js frontend) && export BACKEND_PORT=$(node scripts/manage-dev-ports.js backend) && concurrently \"cargo watch -w backend -x 'run --manifest-path backend/Cargo.toml'\" \"npm run frontend:dev\"", + "dev": "export FRONTEND_PORT=$(node scripts/setup-dev-environment.js frontend) && export BACKEND_PORT=$(node scripts/setup-dev-environment.js backend) && concurrently \"cargo watch -w backend -x 'run --manifest-path backend/Cargo.toml'\" \"npm run frontend:dev\"", "build": "npm run frontend:build && cargo build --release --manifest-path backend/Cargo.toml && cargo build --release --bin mcp_task_server --manifest-path backend/Cargo.toml", "build:single": "npm run frontend:build && cargo build --release --manifest-path backend/Cargo.toml", "build:npm": "./build-npm-package.sh", "test:npm": "./test-npm-package.sh", "frontend:dev": "cd frontend && npm run dev -- --port ${FRONTEND_PORT:-3000} --open", "frontend:build": "cd frontend && npm run build", - "backend:dev": "BACKEND_PORT=$(node scripts/manage-dev-ports.js backend) cargo watch -w backend -x 'run --manifest-path backend/Cargo.toml'", + "backend:dev": "BACKEND_PORT=$(node scripts/setup-dev-environment.js backend) cargo watch -w backend -x 'run --manifest-path backend/Cargo.toml'", "backend:build": "cargo build --release --manifest-path backend/Cargo.toml", "backend:run": "cargo run --manifest-path backend/Cargo.toml", "backend:test": "cargo test --lib", "generate-types": "cd backend && cargo run --bin generate_types", "prepare-db": "node scripts/prepare-db.js", - "dev:clear-ports": "node scripts/manage-dev-ports.js clear" + "dev:clear-ports": "node scripts/setup-dev-environment.js clear" }, "devDependencies": { "concurrently": "^8.2.2", diff --git a/scripts/manage-dev-ports.js b/scripts/setup-dev-environment.js similarity index 82% rename from scripts/manage-dev-ports.js rename to scripts/setup-dev-environment.js index 4f4775ab..d8ce3950 100644 --- a/scripts/manage-dev-ports.js +++ b/scripts/setup-dev-environment.js @@ -5,6 +5,8 @@ const path = require("path"); const net = require("net"); const PORTS_FILE = path.join(__dirname, "..", ".dev-ports.json"); +const DEV_ASSETS_SEED = path.join(__dirname, "..", "dev_assets_seed"); +const DEV_ASSETS = path.join(__dirname, "..", "dev_assets"); /** * Check if a port is available @@ -128,9 +130,28 @@ async function allocatePorts() { */ async function getPorts() { const ports = await allocatePorts(); + copyDevAssets(); return ports; } +/** + * Copy dev_assets_seed to dev_assets + */ +function copyDevAssets() { + try { + if (!fs.existsSync(DEV_ASSETS)) { + // Copy dev_assets_seed to dev_assets + fs.cpSync(DEV_ASSETS_SEED, DEV_ASSETS, { recursive: true }); + + if (process.argv[2] === "get") { + console.log("Copied dev_assets_seed to dev_assets"); + } + } + } catch (error) { + console.error("Failed to copy dev assets:", error.message); + } +} + /** * Clear saved ports */ @@ -183,15 +204,17 @@ if (require.main === module) { default: console.log("Usage:"); console.log( - " node manage-dev-ports.js get - Get all ports (allocate if needed)" + " node setup-dev-environment.js get - Setup dev environment (ports + assets)" ); console.log( - " node manage-dev-ports.js frontend - Get frontend port only" + " node setup-dev-environment.js frontend - Get frontend port only" ); console.log( - " node manage-dev-ports.js backend - Get backend port only" + " node setup-dev-environment.js backend - Get backend port only" + ); + console.log( + " node setup-dev-environment.js clear - Clear saved ports" ); - console.log(" node manage-dev-ports.js clear - Clear saved ports"); break; } }