Merge pull request #27 from spoorcc/issue-14

Fix #14: Add args magic to provide cli-args to user program
This commit is contained in:
Brendan Rius 2017-04-13 11:29:48 +02:00 committed by GitHub
commit 628b7767da
2 changed files with 13 additions and 4 deletions

View File

@ -2,6 +2,7 @@ from queue import Queue
from threading import Thread
from ipykernel.kernelbase import Kernel
import re
import subprocess
import tempfile
import os
@ -118,7 +119,9 @@ class CKernel(Kernel):
def _filter_magics(self, code):
magics = {'cflags': [], 'ldflags': []}
magics = {'cflags': [],
'ldflags': [],
'args': []}
for line in code.splitlines():
if line.startswith('//%'):
@ -128,6 +131,10 @@ class CKernel(Kernel):
if key in ['ldflags', 'cflags']:
for flag in value.split():
magics[key] += [flag]
elif key == "args":
# Split arguments respecting quotes
for argument in re.findall(r'(?:[^\s,"]|"(?:\\.|[^"])*")+', value):
magics['args'] += [argument.strip('"')]
return magics
@ -151,7 +158,7 @@ class CKernel(Kernel):
return {'status': 'ok', 'execution_count': self.execution_count, 'payload': [],
'user_expressions': {}}
p = self.create_jupyter_subprocess([self.master_path, binary_file.name])
p = self.create_jupyter_subprocess([self.master_path, binary_file.name] + magics['args'])
while p.poll() is None:
p.write_contents()
p.write_contents()

View File

@ -25,5 +25,7 @@ int main(int argc, char **argv, char **envp)
fprintf(stderr, "%s: %s\n", argv[0], error);
return EXIT_FAILURE;
}
return usermain(argc, argv, envp);
}
/* Call Users main, but make master.c invisible by removing first argument */
return usermain(argc-1, argv+1, envp);
}