Initial project import
This commit is contained in:
commit
23f2d29e32
11957 files changed
+1754577
No files matched your search
@@ -0,0 +1,44 @@
|
||||
import os
|
||||
import time
|
||||
import term
|
||||
|
||||
python_exe := os.find_abs_path_of_executable('python') or {
|
||||
eprintln('This example needs a python executable in your PATH. Please install Python to see it in action.')
|
||||
exit(1)
|
||||
}
|
||||
mut p := os.new_process(python_exe)
|
||||
defer {
|
||||
dump(p.code)
|
||||
p.close()
|
||||
p.wait()
|
||||
}
|
||||
// The Python flags here, are needed to reduce clutter and buffering.
|
||||
// See https://docs.python.org/3/using/cmdline.html
|
||||
p.set_args(['-i', '-q', '-u'])
|
||||
p.set_redirect_stdio()
|
||||
p.run()
|
||||
dump(p.pid)
|
||||
println('This is a simple V wrapper/shell for the Python interpreter.')
|
||||
println('Try typing some python code here, or type `bye` to end your session:')
|
||||
for p.is_alive() {
|
||||
// check if there is any input from the user (it does not block, if there is not):
|
||||
if os.fd_is_pending(0) {
|
||||
cmd := os.get_raw_line()
|
||||
if cmd.len == 0 {
|
||||
println('closed stdin detected, perhaps due to Ctrl-D...exiting')
|
||||
break
|
||||
}
|
||||
if cmd.trim_space() == 'bye' {
|
||||
println('Goodbye...')
|
||||
break
|
||||
}
|
||||
p.stdin_write(cmd)
|
||||
}
|
||||
if oline := p.pipe_read(.stdout) {
|
||||
print(term.bright_yellow('python stdout: ') + term.bold(oline))
|
||||
}
|
||||
if eline := p.pipe_read(.stderr) {
|
||||
eprint(term.red('python stderr: ') + eline)
|
||||
}
|
||||
time.sleep(20 * time.millisecond)
|
||||
}
|
||||
Reference in new issue
Block a user