mirror of
https://git.eden-emu.dev/eden-emu/eden
synced 2026-06-29 05:15:24 +02:00
fixup caveats + add miniserver
This commit is contained in:
parent
eaa645ab17
commit
161b97417b
5 changed files with 109 additions and 4 deletions
|
|
@ -30,6 +30,7 @@ Tools for Eden and other subprojects. When adding new scripts please use `#!/bin
|
|||
- `find-unused-strings.sh`: Find any unused strings in the Android app (XML -> Kotlin).
|
||||
- `cpp-lint.sh`: Homemade dumb C++ linter.
|
||||
- `fuzzsettings.cpp`: Fuzz settings files.
|
||||
- `miniserver.js`: Make a quick server that serves a page with the WASM on it, takes a single argument which is the path to the build directory containing *both* `eden-cli.js` and `eden-cli.wasm`. Run via `node.js`, `wasmtime` isn't supported.
|
||||
|
||||
## Android
|
||||
It's recommended to run these scritps after almost any Android change, as they are relatively fast and important both for APK bloat and CI.
|
||||
|
|
|
|||
100
tools/miniserver.js
Normal file
100
tools/miniserver.js
Normal file
|
|
@ -0,0 +1,100 @@
|
|||
#!/usr/local/env node
|
||||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
import { createServer } from 'http';
|
||||
import { readFile } from 'fs';
|
||||
import { join } from 'path';
|
||||
|
||||
// DO NOT RUN THIS IN ANY PRODUCTION ENVIRONMENT EVER
|
||||
const server = createServer((req, res) => {
|
||||
console.log(`reuqest? ${req.url}`);
|
||||
if (req.url === '/') {
|
||||
// https://developer.mozilla.org/en-US/docs/WebAssembly/Guides/Loading_and_running
|
||||
// If your browser doesn't support fetch... HAHA GET FUCKED
|
||||
res.writeHead(200, {
|
||||
'Content-Type': 'text/html',
|
||||
'Cross-Origin-Opener-Policy': 'same-origin',
|
||||
'Cross-Origin-Embedder-Policy': 'require-corp'
|
||||
});
|
||||
res.end(`<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>eden-cli</title>
|
||||
<script>
|
||||
var Module = {}; // MUST be global otherwise wasm does wawawawa
|
||||
function finished_body() {
|
||||
Module = { //do not prepend var
|
||||
print: (e) => {
|
||||
e = e.replace('[1;31m', '<span style="color:red;font-weight:bold;">');
|
||||
e = e.replace('[0;37m', '<span style="color:white;font-weight:bold;">');
|
||||
e = e.replace('[1;35m', '<span style="color:pink;font-weight:bold;">');
|
||||
e = e.replace('[1;33m', '<span style="color:yellow;font-weight:bold;">');
|
||||
e = e.replace('[0m', '</span>');
|
||||
tty_stdout.innerHTML += e + '</br>';
|
||||
},
|
||||
printErr: (e) => {
|
||||
tty_stdout.innerHTML += '<span style="color:red">' + e + '</span></br>';
|
||||
},
|
||||
// not a wasm func but idc
|
||||
printInternal: (e) => {
|
||||
tty_stdout.innerHTML += '<span style="color:pink">Internal WASM: ' + e + '</span></br>';
|
||||
},
|
||||
onRuntimeInitialized: () => { Module.printInternal("runtime ok"); },
|
||||
setStatus: (e) => { Module.printInternal(e); },
|
||||
monitorRunDependencies: (e) => { Module.printInternal("monitor deps: " + e); },
|
||||
__wasm_call_ctors: () => { Module.printInternal("ctors beep"); },
|
||||
};
|
||||
|
||||
var tty_stdout = document.createElement('div');
|
||||
document.body.appendChild(tty_stdout);
|
||||
Module.printInternal("loading from ${build_dir}/eden-cli.js");
|
||||
|
||||
Module.arguments = ['game.nro'];
|
||||
|
||||
var script = document.createElement('script');
|
||||
script.src = '/eden-cli.js';
|
||||
script.onload = () => {
|
||||
Module.printInternal("Atomics: " + window.Atomics);
|
||||
Module.printInternal("SharedArrayBuffer: " + window.SharedArrayBuffer);
|
||||
Module.printInternal("trying to load script (if it hangs here check console)");
|
||||
|
||||
Module.FS.writeFile('/game.nro', [1,2,3]);
|
||||
};
|
||||
document.head.appendChild(script);
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body style="margin:0;padding:0;background-color:black;font-family:Monospace,Tahoma,Arial;" onload="finished_body();">
|
||||
</body>
|
||||
</html>`);
|
||||
} else if (req.url === '/eden-cli.js') {
|
||||
readFile(join(build_dir, 'eden-cli.js'), (err, content) => {
|
||||
res.writeHead(200, {
|
||||
'Content-Type': 'application/javascript',
|
||||
'Cross-Origin-Opener-Policy': 'same-origin',
|
||||
'Cross-Origin-Embedder-Policy': 'require-corp'
|
||||
});
|
||||
res.end(content, 'utf-8');
|
||||
});
|
||||
} else if (req.url === '/eden-cli.wasm') {
|
||||
readFile(join(build_dir, 'eden-cli.wasm'), (err, content) => {
|
||||
res.writeHead(200, {
|
||||
'Content-Type': 'application/wasm',
|
||||
'Cross-Origin-Opener-Policy': 'same-origin',
|
||||
'Cross-Origin-Embedder-Policy': 'require-corp'
|
||||
});
|
||||
res.end(content, 'utf-8');
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
const build_dir = process.argv[2];
|
||||
if (build_dir === undefined) {
|
||||
console.log(`Usage: ${process.argv[0]} ${process.argv[1]} [build directory]`);
|
||||
} else {
|
||||
server.listen(2210, () => {
|
||||
console.log(`${process.argv[0]} ${process.argv[1]} http://localhost:2210`);
|
||||
console.log(`build dir = ${build_dir}`);
|
||||
});
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue