Merge pull request #382 from Brikaa/file

pkg(file-0.0.1): Run executable
This commit is contained in:
Thomas Hobson 2021-10-21 21:19:40 +13:00 committed by GitHub
commit d8b430654b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
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`,