mirror of
https://github.com/engineer-man/piston.git
synced 2025-06-08 11:16:27 +02:00
Update for new API
This commit is contained in:
commit
c10a30b69a
78 changed files with 2063 additions and 868 deletions
57
shared/execute.js
Normal file
57
shared/execute.js
Normal file
|
@ -0,0 +1,57 @@
|
|||
const { writeFileSync, unlinkSync } = require('fs');
|
||||
const { spawn } = require('child_process');
|
||||
|
||||
const OUTPUT_LIMIT = 65535;
|
||||
|
||||
function execute(language, source, stdin = '', args = []) {
|
||||
return new Promise(resolve => {
|
||||
const stamp = new Date().getTime();
|
||||
const sourceFile = `/tmp/${stamp}.code`;
|
||||
|
||||
writeFileSync(sourceFile, source);
|
||||
|
||||
const process = spawn(__dirname + '/../lxc/execute', [
|
||||
language.name,
|
||||
sourceFile,
|
||||
stdin,
|
||||
args.join('\n'),
|
||||
]);
|
||||
|
||||
let stdout = '';
|
||||
let stderr = '';
|
||||
let output = '';
|
||||
|
||||
process.stderr.on('data', chunk => {
|
||||
if (stderr.length >= OUTPUT_LIMIT) return;
|
||||
|
||||
stderr += chunk;
|
||||
output += chunk;
|
||||
});
|
||||
|
||||
process.stdout.on('data', chunk => {
|
||||
if (stdout.length >= OUTPUT_LIMIT) return;
|
||||
|
||||
stdout += chunk;
|
||||
output += chunk;
|
||||
});
|
||||
|
||||
process.on('exit', code => {
|
||||
unlinkSync(sourceFile);
|
||||
|
||||
stderr = stderr.trim().substring(0, OUTPUT_LIMIT);
|
||||
stdout = stdout.trim().substring(0, OUTPUT_LIMIT);
|
||||
output = output.trim().substring(0, OUTPUT_LIMIT);
|
||||
|
||||
resolve({
|
||||
stdout,
|
||||
stderr,
|
||||
output,
|
||||
ran: code === 0,
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
execute,
|
||||
};
|
209
shared/languages.json
Normal file
209
shared/languages.json
Normal file
|
@ -0,0 +1,209 @@
|
|||
[
|
||||
{
|
||||
"name": "nasm",
|
||||
"aliases": [
|
||||
"asm",
|
||||
"nasm"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "nasm64",
|
||||
"aliases": [
|
||||
"asm64",
|
||||
"nasm64"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "awk",
|
||||
"aliases": [
|
||||
"awk"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "bash",
|
||||
"aliases": [
|
||||
"bash"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "brainfuck",
|
||||
"aliases": [
|
||||
"bf",
|
||||
"brainfuck"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "c",
|
||||
"aliases": [
|
||||
"c"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "csharp",
|
||||
"aliases": [
|
||||
"c#",
|
||||
"cs",
|
||||
"csharp"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "cpp",
|
||||
"aliases": [
|
||||
"c++",
|
||||
"cpp",
|
||||
"cc",
|
||||
"cxx"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "d",
|
||||
"aliases": [
|
||||
"dlang",
|
||||
"d"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "deno",
|
||||
"aliases": [
|
||||
"deno",
|
||||
"denojs",
|
||||
"denots"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "ruby",
|
||||
"aliases": [
|
||||
"duby",
|
||||
"rb",
|
||||
"ruby"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "emacs",
|
||||
"aliases": [
|
||||
"el",
|
||||
"elisp",
|
||||
"emacs"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "elixir",
|
||||
"aliases": [
|
||||
"elixir",
|
||||
"exs"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "haskell",
|
||||
"aliases": [
|
||||
"haskell",
|
||||
"hs"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "go",
|
||||
"aliases": [
|
||||
"go",
|
||||
"golang"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "java",
|
||||
"aliases": [
|
||||
"java"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "node",
|
||||
"aliases": [
|
||||
"javascript",
|
||||
"js",
|
||||
"node",
|
||||
"node.js"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "jelly",
|
||||
"aliases": [
|
||||
"jelly"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "julia",
|
||||
"aliases": [
|
||||
"jl",
|
||||
"julia"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "kotlin",
|
||||
"aliases": [
|
||||
"kotlin",
|
||||
"kt"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "lua",
|
||||
"aliases": [
|
||||
"lua"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "paradoc",
|
||||
"aliases": [
|
||||
"paradoc"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "perl",
|
||||
"aliases": [
|
||||
"perl",
|
||||
"pl"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "php",
|
||||
"aliases": [
|
||||
"php",
|
||||
"php3",
|
||||
"php4",
|
||||
"php5"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "python3",
|
||||
"aliases": [
|
||||
"py",
|
||||
"py3",
|
||||
"python",
|
||||
"python3"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "python2",
|
||||
"aliases": [
|
||||
"python2",
|
||||
"py2"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "rust",
|
||||
"aliases": [
|
||||
"rs",
|
||||
"rust"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "swift",
|
||||
"aliases": [
|
||||
"swift"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "typescript",
|
||||
"aliases": [
|
||||
"ts",
|
||||
"typescript"
|
||||
]
|
||||
}
|
||||
]
|
Loading…
Add table
Add a link
Reference in a new issue