First version
This commit is contained in:
commit
243e92a9dd
84 files changed
+4012
No files matched your search
@@ -0,0 +1,39 @@
|
||||
#!/usr/bin/python3
|
||||
"""Build or build-and-run the active contest source from an IDE task."""
|
||||
import os
|
||||
from pathlib import Path
|
||||
import resource
|
||||
import shlex
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
if len(sys.argv) != 3 or sys.argv[1] not in ('build', 'run'):
|
||||
raise SystemExit('Usage: acpc-solution build|run SOURCE')
|
||||
action, arg = sys.argv[1:]
|
||||
src = Path(arg).resolve(strict=True)
|
||||
os.chdir(src.parent)
|
||||
ext = src.suffix
|
||||
if ext == '.c':
|
||||
build = ['/usr/local/bin/acpc-gcc', src.name, '-o', src.stem]
|
||||
run = [str(src.with_suffix(''))]
|
||||
elif ext in ('.cpp', '.cc', '.C', '.cxx', '.c++'):
|
||||
build = ['/usr/local/bin/acpc-g++', src.name, '-o', src.stem]
|
||||
run = [str(src.with_suffix(''))]
|
||||
elif ext == '.java':
|
||||
build = ['/usr/lib/jvm/java-25-openjdk-amd64/bin/javac', '-encoding', 'UTF-8',
|
||||
'-sourcepath', '.', '-cp', './*', '-d', '.', src.name]
|
||||
run = ['/usr/local/bin/runjava', src.stem]
|
||||
elif ext in ('.py', '.py3'):
|
||||
build = ['/usr/local/bin/pypy3', '-m', 'py_compile', src.name]
|
||||
run = ['/usr/local/bin/pypy3', src.name]
|
||||
else:
|
||||
raise SystemExit('Use a C, C++, Java or Python source file.')
|
||||
print('Build: ' + shlex.join(build), flush=True)
|
||||
result = subprocess.run(build)
|
||||
if result.returncode:
|
||||
raise SystemExit(result.returncode)
|
||||
if action == 'run':
|
||||
print('Run: ' + shlex.join(run), flush=True)
|
||||
soft, hard = resource.getrlimit(resource.RLIMIT_STACK)
|
||||
resource.setrlimit(resource.RLIMIT_STACK, (hard, hard))
|
||||
os.execv(run[0], run)
|
||||
Reference in new issue
Block a user