From 527f58e3a46523efeeae07f70c180ff20143a257 Mon Sep 17 00:00:00 2001 From: Jon Eugster Date: Sat, 9 Dec 2023 22:42:40 +0100 Subject: [PATCH] separate lean server from socket server --- .gitignore | 1 - doc/DOCUMENTATION.md | 3 ++- ecosystem.config.cjs | 2 +- package.json | 4 ++-- {server => relay}/bubblewrap.sh | 0 {server => relay}/import.mjs | 16 ++++++++-------- {server => relay}/index.mjs | 5 ++--- {server => relay}/unpack.sh | 2 +- server/.gitignore | 3 --- tsconfig.json | 2 +- vite.config.ts | 2 +- 11 files changed, 18 insertions(+), 22 deletions(-) rename {server => relay}/bubblewrap.sh (100%) rename {server => relay}/import.mjs (83%) rename {server => relay}/index.mjs (97%) rename {server => relay}/unpack.sh (99%) delete mode 100644 server/.gitignore diff --git a/.gitignore b/.gitignore index 9508154..f6fa519 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,4 @@ node_modules -games/ client/dist games/ server/.lake diff --git a/doc/DOCUMENTATION.md b/doc/DOCUMENTATION.md index 2ff0ab7..68464ca 100644 --- a/doc/DOCUMENTATION.md +++ b/doc/DOCUMENTATION.md @@ -297,8 +297,9 @@ cd lean4game npm install ``` +TODO: This is outdated! If you are developing a game other than `Robo` or `NNG4`, adapt the -code at the beginning of `lean4game/server/index.mjs`: +code at the beginning of `lean4game/relay/index.mjs`: ```typescript const games = { "g/hhu-adam/robo": { diff --git a/ecosystem.config.cjs b/ecosystem.config.cjs index b3665a0..e24dbd5 100644 --- a/ecosystem.config.cjs +++ b/ecosystem.config.cjs @@ -2,7 +2,7 @@ module.exports = { apps : [{ name : "lean4game", - script : "server/index.mjs", + script : "relay/index.mjs", env: { LEAN4GAME_GITHUB_USER: "", LEAN4GAME_GITHUB_TOKEN: "", diff --git a/package.json b/package.json index d81a59c..4f25ac1 100644 --- a/package.json +++ b/package.json @@ -63,13 +63,13 @@ }, "scripts": { "start": "concurrently -n server,client -c blue,green \"npm run start_server\" \"npm run start_client\"", - "start_server": "cd server && lake build && cross-env NODE_ENV=development nodemon -e mjs --exec \"node ./index.mjs\"", + "start_server": "(cd server && lake build) && (cd relay && cross-env NODE_ENV=development nodemon -e mjs --exec \"node ./index.mjs\")", "start_client": "cross-env NODE_ENV=development vite --host", "build": "npm run build_server && npm run build_client", "preview": "vite preview", "build_server": "cd server && lake build", "build_client": "cross-env NODE_ENV=production vite build", - "production": "cross-env NODE_ENV=production node server/index.mjs" + "production": "cross-env NODE_ENV=production node relay/index.mjs" }, "eslintConfig": { "extends": [ diff --git a/server/bubblewrap.sh b/relay/bubblewrap.sh similarity index 100% rename from server/bubblewrap.sh rename to relay/bubblewrap.sh diff --git a/server/import.mjs b/relay/import.mjs similarity index 83% rename from server/import.mjs rename to relay/import.mjs index 1701b14..a98ab39 100644 --- a/server/import.mjs +++ b/relay/import.mjs @@ -79,17 +79,17 @@ async function doImport (owner, repo, id) { artifactId = artifact.id const url = artifact.archive_download_url // Make sure the download folder exists - if (!fs.existsSync(`${__dirname}/../games`)){ - fs.mkdirSync(`${__dirname}/../games`); + if (!fs.existsSync(path.join(__dirname, "..", "games"))){ + fs.mkdirSync(path.join(__dirname, "..", "games")); } - if (!fs.existsSync(`${__dirname}/../games/tmp`)){ - fs.mkdirSync(`${__dirname}/../games/tmp`); + if (!fs.existsSync(path.join(__dirname, "..", "games", "tmp"))){ + fs.mkdirSync(path.join(__dirname, "..", "games", "tmp")); } progress[id].output += `Download from ${url}\n` - await download(id, url, `${__dirname}/../games/tmp/${owner.toLowerCase()}_${repo.toLowerCase()}_${artifactId}.zip`) + await download(id, url, path.join(__dirname, "..", "games", "tmp", `${owner.toLowerCase()}_${repo.toLowerCase()}_${artifactId}.zip`)) progress[id].output += `Download finished.\n` - await runProcess(id, "/bin/bash", [`${__dirname}/unpack.sh`, artifactId, owner.toLowerCase(), repo.toLowerCase()], `${__dirname}/..`) + await runProcess(id, "/bin/bash", [path.join(__dirname, "unpack.sh"), artifactId, owner.toLowerCase(), repo.toLowerCase()], path.join(__dirname, "..")) // let manifest = fs.readFileSync(`tmp/artifact_${artifactId}_inner/manifest.json`); @@ -110,8 +110,8 @@ async function doImport (owner, repo, id) { } finally { // clean-up temp. files if (artifactId) { - fs.rmSync(`${__dirname}/../games/tmp/${owner}_${repo}_${artifactId}.zip`, {force: true, recursive: false}); - fs.rmSync(`${__dirname}/../games/tmp/${owner}_${repo}_${artifactId}`, {force: true, recursive: true}); + fs.rmSync(path.join(__dirname, "..", "games", "tmp", `${owner}_${repo}_${artifactId}.zip`), {force: true, recursive: false}); + fs.rmSync(path.join(__dirname, "..", "games", "tmp", `${owner}_${repo}_${artifactId}`), {force: true, recursive: true}); } progress[id].done = true } diff --git a/server/index.mjs b/relay/index.mjs similarity index 97% rename from server/index.mjs rename to relay/index.mjs index 32dea26..a0dd7ea 100644 --- a/server/index.mjs +++ b/relay/index.mjs @@ -35,7 +35,7 @@ router.get('/import/status/:owner/:repo', importStatus) router.get('/import/trigger/:owner/:repo', importTrigger) const server = app - .use(express.static(path.join(__dirname, '../client/dist/'))) // TODO: add a dist folder from inside the game + .use(express.static(path.join(__dirname, '..', 'client', 'dist'))) // TODO: add a dist folder from inside the game .use('/data/g/:owner/:repo/*', (req, res, next) => { const owner = req.params.owner; const repo = req.params.repo @@ -103,7 +103,7 @@ function startServerProcess(owner, repo) { } else { // If the game is built with `-Klean4game.local` there is no copy in the lake packages. serverProcess = cp.spawn("./gameserver", args, - { cwd: path.join(__dirname, ".lake", "build", "bin") }) + { cwd: path.join(__dirname, "..", "server", ".lake", "build", "bin") }) } } else { serverProcess = cp.spawn("./bubblewrap.sh", @@ -111,7 +111,6 @@ function startServerProcess(owner, repo) { { cwd: __dirname }) } - serverProcess.on('error', error => console.error(`Launching Lean Server failed: ${error}`) ) diff --git a/server/unpack.sh b/relay/unpack.sh similarity index 99% rename from server/unpack.sh rename to relay/unpack.sh index dc1bfb1..b475847 100755 --- a/server/unpack.sh +++ b/relay/unpack.sh @@ -6,7 +6,7 @@ REPO=$3 # mkdir -p games cd games -pwd + # mkdir -p tmp mkdir -p ${OWNER} diff --git a/server/.gitignore b/server/.gitignore deleted file mode 100644 index 6eac252..0000000 --- a/server/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -build/ -games/ -.lake diff --git a/tsconfig.json b/tsconfig.json index 5fe8ea1..545c5c3 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -12,5 +12,5 @@ "experimentalDecorators": true, "allowSyntheticDefaultImports": true, }, - "exclude": ["server"] + "exclude": ["server", "relay"] } diff --git a/vite.config.ts b/vite.config.ts index a647c0e..9bc8d40 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -8,7 +8,7 @@ export default defineConfig({ //root: 'client/src', build: { // Relative to the root - // Note: This has to match the path in `server/index.mjs` + // Note: This has to match the path in `relay/index.mjs` outDir: 'client/dist', }, plugins: [