Rename, ejs, homepage, build errors, css
This commit is contained in:
parent
846caf2ad8
commit
f9e183e58e
4
Makefile
4
Makefile
|
@ -10,5 +10,5 @@ help: ## Show this message
|
||||||
|
|
||||||
.PHONY: docker
|
.PHONY: docker
|
||||||
docker: ## Run shell with source code and deps inside Docker
|
docker: ## Run shell with source code and deps inside Docker
|
||||||
scripts/docker.bash build . -t fast-sandbox --build-arg "UID=$(UID)"
|
scripts/docker.bash build . -t riju --build-arg "UID=$(UID)"
|
||||||
scripts/docker.bash run -it --rm -v "$(PWD):/home/docker/src" -p 6119:6119 fast-sandbox
|
scripts/docker.bash run -it --rm -v "$(PWD):/home/docker/src" -p 6119:6119 riju
|
||||||
|
|
|
@ -78,7 +78,7 @@ export class Session {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
run = async () => {
|
run = async () => {
|
||||||
const { repl, main, suffix, compile, run, hacks } = this.config;
|
const { name, repl, main, suffix, compile, run, hacks } = this.config;
|
||||||
if (this.term.pty) {
|
if (this.term.pty) {
|
||||||
this.term.pty.kill();
|
this.term.pty.kill();
|
||||||
this.term.live = false;
|
this.term.live = false;
|
||||||
|
@ -119,12 +119,12 @@ export class Session {
|
||||||
);
|
);
|
||||||
cmdline = run;
|
cmdline = run;
|
||||||
if (compile) {
|
if (compile) {
|
||||||
cmdline = compile + " && " + run;
|
cmdline = `( ${compile} ) && ( ${run} )`;
|
||||||
}
|
}
|
||||||
} else if (repl) {
|
} else if (repl) {
|
||||||
cmdline = repl;
|
cmdline = repl;
|
||||||
} else {
|
} else {
|
||||||
return;
|
cmdline = `echo '${name} has no REPL, press Run to see it in action'`;
|
||||||
}
|
}
|
||||||
if (hacks && hacks.includes("ghci-config") && run) {
|
if (hacks && hacks.includes("ghci-config") && run) {
|
||||||
if (this.code) {
|
if (this.code) {
|
||||||
|
|
|
@ -14,6 +14,7 @@ const host = process.env.HOST || "localhost";
|
||||||
const port = parseInt(process.env.PORT) || 6119;
|
const port = parseInt(process.env.PORT) || 6119;
|
||||||
|
|
||||||
app.set("query parser", (qs: string) => new URLSearchParams(qs));
|
app.set("query parser", (qs: string) => new URLSearchParams(qs));
|
||||||
|
app.set("view engine", "ejs");
|
||||||
|
|
||||||
function getQueryParams(req: Request): URLSearchParams {
|
function getQueryParams(req: Request): URLSearchParams {
|
||||||
// This is safe because we set the query parser for Express to
|
// This is safe because we set the query parser for Express to
|
||||||
|
@ -23,11 +24,13 @@ function getQueryParams(req: Request): URLSearchParams {
|
||||||
|
|
||||||
app.use(sslRedirect());
|
app.use(sslRedirect());
|
||||||
app.get("/", (_, res) => {
|
app.get("/", (_, res) => {
|
||||||
res.sendFile(appRoot.path + "/frontend/pages/index.html");
|
res.render(appRoot.path + "/frontend/pages/index", { langs });
|
||||||
});
|
});
|
||||||
app.get("/:lang", (req, res) => {
|
app.get("/:lang", (req, res) => {
|
||||||
if (langs[req.params.lang]) {
|
if (langs[req.params.lang]) {
|
||||||
res.sendFile(appRoot.path + "/frontend/pages/app.html");
|
res.render(appRoot.path + "/frontend/pages/app", {
|
||||||
|
name: langs[req.params.lang].name,
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
res.send(`No such language: ${req.params.lang}`);
|
res.send(`No such language: ${req.params.lang}`);
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<title>Fast Sandbox</title>
|
<title><%= name %> - Riju</title>
|
||||||
<link
|
<link
|
||||||
rel="stylesheet"
|
rel="stylesheet"
|
||||||
href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css"
|
href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css"
|
||||||
|
@ -17,6 +17,7 @@
|
||||||
<div id="editor" class="column"></div>
|
<div id="editor" class="column"></div>
|
||||||
<div id="terminal" class="column"></div>
|
<div id="terminal" class="column"></div>
|
||||||
<button type="button" class="btn btn-success" id="runButton">Run</button>
|
<button type="button" class="btn btn-success" id="runButton">Run</button>
|
||||||
|
<a href="/" class="btn btn-secondary" id="backButton">Switch to a different language</a>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
|
@ -0,0 +1,29 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<title>Riju</title>
|
||||||
|
<link rel="stylesheet" href="/css/index.css" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Riju: online access to any programming language</h1>
|
||||||
|
<i>Select a language to get started immediately:</i>
|
||||||
|
<div class="grid">
|
||||||
|
<% for (const [id, {name}] of Object.entries(langs)) { %>
|
||||||
|
<a href=<%= "/" + encodeURIComponent(id) %> class="language">
|
||||||
|
<div class="language">
|
||||||
|
<%= name %>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
<% } %>
|
||||||
|
</div>
|
||||||
|
<p>
|
||||||
|
<i>
|
||||||
|
Created by
|
||||||
|
<a href="https://github.com/raxod502">Radon Rosborough</a>.
|
||||||
|
Check out the project
|
||||||
|
<a href="https://github.com/raxod502/riju">on GitHub</a>.
|
||||||
|
</i>
|
||||||
|
</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -1,10 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<title>Fast Sandbox</title>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
Hello, world!
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -26,3 +26,9 @@ body {
|
||||||
top: 25px;
|
top: 25px;
|
||||||
right: calc(50% + 25px);
|
right: calc(50% + 25px);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#backButton {
|
||||||
|
position: absolute;
|
||||||
|
left: 25px;
|
||||||
|
bottom: 25px;
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,33 @@
|
||||||
|
body {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
font-family: sans-serif;
|
||||||
|
text-align: center;
|
||||||
|
padding-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.grid {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
justify-content: center;
|
||||||
|
margin-top: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.language {
|
||||||
|
width: 120px;
|
||||||
|
height: 60px;
|
||||||
|
border: solid;
|
||||||
|
margin: 5px;
|
||||||
|
padding: 5px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
a.language {
|
||||||
|
text-decoration: none;
|
||||||
|
color: black;
|
||||||
|
}
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"name": "fast-sandbox",
|
"name": "riju",
|
||||||
"version": "0",
|
"version": "0",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"private": true,
|
"private": true,
|
||||||
|
@ -10,6 +10,7 @@
|
||||||
"@types/tmp": "^0.2.0",
|
"@types/tmp": "^0.2.0",
|
||||||
"app-root-path": "^3.0.0",
|
"app-root-path": "^3.0.0",
|
||||||
"css-loader": "^3.5.3",
|
"css-loader": "^3.5.3",
|
||||||
|
"ejs": "^3.1.3",
|
||||||
"express": "^4.17.1",
|
"express": "^4.17.1",
|
||||||
"express-ws": "^4.0.0",
|
"express-ws": "^4.0.0",
|
||||||
"file-loader": "^6.0.0",
|
"file-loader": "^6.0.0",
|
||||||
|
|
|
@ -73,7 +73,7 @@ algol68g
|
||||||
|
|
||||||
# ARM
|
# ARM
|
||||||
gcc-arm-linux-gnueabihf
|
gcc-arm-linux-gnueabihf
|
||||||
qemu-system-static
|
qemu-user-static
|
||||||
|
|
||||||
# ATS
|
# ATS
|
||||||
ats2-lang
|
ats2-lang
|
||||||
|
@ -170,7 +170,7 @@ lua5.3
|
||||||
|
|
||||||
# MIPS
|
# MIPS
|
||||||
gcc-mips64-linux-gnuabi64
|
gcc-mips64-linux-gnuabi64
|
||||||
qemu-system-static
|
qemu-user-static
|
||||||
|
|
||||||
# MUMPS
|
# MUMPS
|
||||||
fis-gtm
|
fis-gtm
|
||||||
|
@ -215,7 +215,7 @@ racket
|
||||||
|
|
||||||
# RISC-V
|
# RISC-V
|
||||||
gcc-riscv64-linux-gnu
|
gcc-riscv64-linux-gnu
|
||||||
qemu-system-static
|
qemu-user-static
|
||||||
|
|
||||||
# Ruby
|
# Ruby
|
||||||
ruby
|
ruby
|
||||||
|
@ -309,7 +309,7 @@ npm install -g ts-node typescript
|
||||||
pip3 install whitespace
|
pip3 install whitespace
|
||||||
|
|
||||||
# Wolfram Language
|
# Wolfram Language
|
||||||
python3.7 -m pip install install mathics
|
python3.7 -m pip install mathics
|
||||||
|
|
||||||
# Needed for project infrastructure
|
# Needed for project infrastructure
|
||||||
cd /tmp
|
cd /tmp
|
||||||
|
@ -320,6 +320,8 @@ rm watchexec-*.deb
|
||||||
# D
|
# D
|
||||||
cd /tmp
|
cd /tmp
|
||||||
wget -nv http://downloads.dlang.org/releases/2.x/2.092.0/dmd_2.092.0-0_amd64.deb
|
wget -nv http://downloads.dlang.org/releases/2.x/2.092.0/dmd_2.092.0-0_amd64.deb
|
||||||
|
dpkg -i dmd_*.deb
|
||||||
|
rm dmd_*.deb
|
||||||
|
|
||||||
# Elm
|
# Elm
|
||||||
cd /tmp
|
cd /tmp
|
||||||
|
@ -327,7 +329,6 @@ wget -nv https://github.com/elm/compiler/releases/download/0.19.1/binary-for-lin
|
||||||
gunzip binary-for-linux-64-bit.gz
|
gunzip binary-for-linux-64-bit.gz
|
||||||
chmod +x binary-for-linux-64-bit
|
chmod +x binary-for-linux-64-bit
|
||||||
mv binary-for-linux-64-bit /usr/bin/elm
|
mv binary-for-linux-64-bit /usr/bin/elm
|
||||||
rm binary-for-linux-64-bit.gz
|
|
||||||
|
|
||||||
# Ink
|
# Ink
|
||||||
cd /tmp
|
cd /tmp
|
||||||
|
@ -353,15 +354,16 @@ wget -nv https://github.com/PowerShell/PowerShell/releases/download/v7.0.1/power
|
||||||
mkdir /opt/powershell
|
mkdir /opt/powershell
|
||||||
tar -xf powershell-*.tar.gz -C /opt/powershell
|
tar -xf powershell-*.tar.gz -C /opt/powershell
|
||||||
ln -s /opt/powershell/pwsh /usr/bin/pwsh
|
ln -s /opt/powershell/pwsh /usr/bin/pwsh
|
||||||
|
rm powershell-*.tar.gz
|
||||||
|
|
||||||
# SNOBOL
|
# SNOBOL
|
||||||
wget -nv ftp://ftp.snobol4.org/snobol/snobol4-2.0.tar.gz
|
wget -nv ftp://ftp.snobol4.org/snobol/snobol4-2.0.tar.gz
|
||||||
tar -xf snobol4-*.tar.gz
|
tar -xf snobol4-*.tar.gz
|
||||||
rm snobol4-*.tar.gz
|
rm snobol4-*.tar.gz
|
||||||
pushd snobol4-*
|
pushd snobol4-* >/dev/null
|
||||||
make || true
|
make || true
|
||||||
mv snobol4 /usr/bin/snobol4
|
mv snobol4 /usr/bin/snobol4
|
||||||
popd
|
popd >/dev/null
|
||||||
rm -rf snobol4-*
|
rm -rf snobol4-*
|
||||||
|
|
||||||
# Swift
|
# Swift
|
||||||
|
@ -380,7 +382,7 @@ stack build kalyn
|
||||||
mv "$(stack exec which kalyn)" /usr/bin/kalyn
|
mv "$(stack exec which kalyn)" /usr/bin/kalyn
|
||||||
mkdir /opt/kalyn
|
mkdir /opt/kalyn
|
||||||
cp -R src-kalyn/Stdlib src-kalyn/Stdlib.kalyn /opt/kalyn/
|
cp -R src-kalyn/Stdlib src-kalyn/Stdlib.kalyn /opt/kalyn/
|
||||||
popd
|
popd >/dev/null
|
||||||
rm -rf kalyn
|
rm -rf kalyn
|
||||||
|
|
||||||
# LOLCODE
|
# LOLCODE
|
||||||
|
|
29
yarn.lock
29
yarn.lock
|
@ -378,6 +378,11 @@ async-limiter@~1.0.0:
|
||||||
resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd"
|
resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd"
|
||||||
integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==
|
integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==
|
||||||
|
|
||||||
|
async@0.9.x:
|
||||||
|
version "0.9.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d"
|
||||||
|
integrity sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=
|
||||||
|
|
||||||
atob@^2.1.2:
|
atob@^2.1.2:
|
||||||
version "2.1.2"
|
version "2.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
|
resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
|
||||||
|
@ -991,6 +996,13 @@ ee-first@1.1.1:
|
||||||
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
|
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
|
||||||
integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
|
integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
|
||||||
|
|
||||||
|
ejs@^3.1.3:
|
||||||
|
version "3.1.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.3.tgz#514d967a8894084d18d3d47bd169a1c0560f093d"
|
||||||
|
integrity sha512-wmtrUGyfSC23GC/B1SMv2ogAUgbQEtDmTIhfqielrG5ExIM9TP4UoYdi90jLF1aTcsWCJNEO0UrgKzP0y3nTSg==
|
||||||
|
dependencies:
|
||||||
|
jake "^10.6.1"
|
||||||
|
|
||||||
elliptic@^6.0.0, elliptic@^6.5.2:
|
elliptic@^6.0.0, elliptic@^6.5.2:
|
||||||
version "6.5.2"
|
version "6.5.2"
|
||||||
resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.2.tgz#05c5678d7173c049d8ca433552224a495d0e3762"
|
resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.2.tgz#05c5678d7173c049d8ca433552224a495d0e3762"
|
||||||
|
@ -1237,6 +1249,13 @@ file-uri-to-path@1.0.0:
|
||||||
resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd"
|
resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd"
|
||||||
integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==
|
integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==
|
||||||
|
|
||||||
|
filelist@^1.0.1:
|
||||||
|
version "1.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.1.tgz#f10d1a3ae86c1694808e8f20906f43d4c9132dbb"
|
||||||
|
integrity sha512-8zSK6Nu0DQIC08mUC46sWGXi+q3GGpKydAG36k+JDba6VRpkevvOWUW5a/PhShij4+vHT9M+ghgG7eM+a9JDUQ==
|
||||||
|
dependencies:
|
||||||
|
minimatch "^3.0.4"
|
||||||
|
|
||||||
fill-range@^4.0.0:
|
fill-range@^4.0.0:
|
||||||
version "4.0.0"
|
version "4.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7"
|
resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7"
|
||||||
|
@ -1792,6 +1811,16 @@ isobject@^3.0.0, isobject@^3.0.1:
|
||||||
resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
|
resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
|
||||||
integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
|
integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
|
||||||
|
|
||||||
|
jake@^10.6.1:
|
||||||
|
version "10.8.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.2.tgz#ebc9de8558160a66d82d0eadc6a2e58fbc500a7b"
|
||||||
|
integrity sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A==
|
||||||
|
dependencies:
|
||||||
|
async "0.9.x"
|
||||||
|
chalk "^2.4.2"
|
||||||
|
filelist "^1.0.1"
|
||||||
|
minimatch "^3.0.4"
|
||||||
|
|
||||||
json-parse-better-errors@^1.0.2:
|
json-parse-better-errors@^1.0.2:
|
||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
|
resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
|
||||||
|
|
Loading…
Reference in New Issue