Compare commits

...

6 Commits

Author SHA1 Message Date
Thomas Hobson d8b430654b
Merge pull request #382 from Brikaa/file
pkg(file-0.0.1): Run executable
2021-10-21 21:19:40 +13:00
Thomas Hobson 78b075089f
Merge branch 'master' into file 2021-10-21 21:13:06 +13:00
Brikaa 52fb900603 Don't read the file twice 2021-10-16 11:55:22 +02:00
Brikaa 19252467cb Use some() instead of filter() in v2.js 2021-10-16 11:50:07 +02:00
Brikaa 821d5496e4 Check for base64 in CLI 2021-10-16 11:50:07 +02:00
Brikaa 64833a0408 pkg(file-0.0.1): Run executable 2021-10-16 11:49:59 +02:00
9 changed files with 43 additions and 12 deletions

View File

@ -87,15 +87,6 @@ function get_job(body) {
}
}
if (
files.filter(file => !file.encoding || file.encoding === 'utf8')
.length === 0
) {
return reject({
message: 'files must include at least one utf8 encoded file',
});
}
const rt = runtime.get_latest_runtime_matching_language_version(
language,
version
@ -106,6 +97,15 @@ function get_job(body) {
});
}
if (
rt.language !== 'file' &&
!files.some(file => !file.encoding || file.encoding === 'utf8')
) {
return reject({
message: 'files must include at least one utf8 encoded file',
});
}
for (const constraint of ['memory_limit', 'timeout']) {
for (const type of ['compile', 'run']) {
const constraint_name = `${type}_${constraint}`;

View File

@ -222,7 +222,9 @@ class Job {
} runtime=${this.runtime.toString()}`
);
const code_files = this.files.filter(file => file.encoding == 'utf8');
const code_files =
(this.runtime.language === 'file' && this.files) ||
this.files.filter(file => file.encoding == 'utf8');
logger.debug('Compiling');
@ -270,7 +272,9 @@ class Job {
} gid=${this.gid} runtime=${this.runtime.toString()}`
);
const code_files = this.files.filter(file => file.encoding == 'utf8');
const code_files =
(this.runtime.language === 'file' && this.files) ||
this.files.filter(file => file.encoding == 'utf8');
if (this.runtime.compiled) {
eventBus.emit('stage', 'compile');

View File

@ -245,9 +245,18 @@ async function run_non_interactively(files, argv) {
exports.handler = async argv => {
const files = [...(argv.files || []), argv.file].map(file_path => {
const buffer = fs.readFileSync(file_path);
const encoding =
(buffer
.toString()
.split('')
.some(x => x.charCodeAt(0) >= 128) &&
'base64') ||
'utf8';
return {
name: path.basename(file_path),
content: fs.readFileSync(file_path).toString(),
content: buffer.toString(encoding),
encoding,
};
});

3
packages/file/0.0.1/build.sh vendored Executable file
View File

@ -0,0 +1,3 @@
#!/bin/bash
# Nothing to do here

3
packages/file/0.0.1/environment vendored Normal file
View File

@ -0,0 +1,3 @@
#!/bin/bash
export PATH=$PWD:$PATH

5
packages/file/0.0.1/metadata.json vendored Normal file
View File

@ -0,0 +1,5 @@
{
"language": "file",
"version": "0.0.1",
"aliases": ["executable", "elf", "binary"]
}

6
packages/file/0.0.1/run vendored Normal file
View File

@ -0,0 +1,6 @@
#!/bin/bash
filename="$1"
chmod +x "$filename"
shift
./"$filename" "$@"

BIN
packages/file/0.0.1/test.file vendored Executable file

Binary file not shown.

View File

@ -341,6 +341,7 @@ Content-Type: application/json
`elixir`,
`emacs`,
`erlang`,
`file`,
`forte`,
`fortran`,
`freebasic`,