mirror of
https://github.com/XaverKlemenschits/jupyter-c-kernel.git
synced 2025-04-14 10:26:09 +00:00
Add args magic to provide cli-args to user program
This commit is contained in:
parent
17316fb7b2
commit
ace4d01ca6
@ -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()
|
||||
|
@ -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);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user