Skip to content

Commit

Permalink
fix: runtime args bug
Browse files Browse the repository at this point in the history
  • Loading branch information
mtshiba committed Aug 16, 2023
1 parent 6a925f3 commit bb613c2
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 9 deletions.
6 changes: 4 additions & 2 deletions crates/erg_common/python_util.rs
Original file line number Diff line number Diff line change
Expand Up @@ -853,7 +853,7 @@ pub fn spawn_py(py_command: Option<&str>, code: &str) {
}
}

pub fn exec_py_code(code: &str, output: Output) -> std::io::Result<ExitStatus> {
pub fn exec_py_code(code: &str, args: &[&str], output: Output) -> std::io::Result<ExitStatus> {
let mut out = if cfg!(windows) {
let fallback = |err: std::io::Error| {
// if the filename or extension is too long
Expand All @@ -867,6 +867,7 @@ pub fn exec_py_code(code: &str, output: Output) -> std::io::Result<ExitStatus> {
.unwrap();
Command::new(which_python())
.arg(tmp_file)
.args(args)
.stdout(output.clone())
.spawn()
} else {
Expand All @@ -876,12 +877,13 @@ pub fn exec_py_code(code: &str, output: Output) -> std::io::Result<ExitStatus> {
Command::new(which_python())
.arg("-c")
.arg(code)
.args(args)
.stdout(output.clone())
.spawn()
.or_else(fallback)
.expect("cannot execute python")
} else {
let exec_command = format!("{} -c \"{code}\"", which_python());
let exec_command = format!("{} -c \"{code}\" {}", which_python(), args.join(" "));
Command::new("sh")
.arg("-c")
.arg(exec_command)
Expand Down
10 changes: 7 additions & 3 deletions crates/erg_compiler/ty/codeobj.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ use std::io::{BufReader, Read, Write as _};
use std::path::Path;
use std::process::ExitStatus;

use erg_common::config::ErgConfig;
use erg_common::impl_display_from_debug;
use erg_common::io::Output;
#[allow(unused_imports)]
use erg_common::log;
use erg_common::opcode::CommonOpcode;
Expand Down Expand Up @@ -453,8 +453,12 @@ impl CodeObj {
format!("import marshal; exec(marshal.loads(b'{bytecode}'))")
}

pub fn exec(self, py_magic_num: Option<u32>, output: Output) -> std::io::Result<ExitStatus> {
exec_py_code(&self.executable_code(py_magic_num), output)
pub fn exec(self, cfg: &ErgConfig) -> std::io::Result<ExitStatus> {
exec_py_code(
&self.executable_code(cfg.py_magic_num),
&cfg.runtime_args,
cfg.output.clone(),
)
}

fn tables_info(&self) -> String {
Expand Down
5 changes: 1 addition & 4 deletions src/dummy.rs
Original file line number Diff line number Diff line change
Expand Up @@ -289,10 +289,7 @@ impl Runnable for DummyVM {
eart.errors
})?;
art.warns.write_all_to(&mut self.cfg_mut().output);
let stat = art
.object
.exec(self.cfg().py_magic_num, self.cfg().output.clone())
.expect("failed to execute");
let stat = art.object.exec(self.cfg()).expect("failed to execute");
let stat = ExitStatus::new(stat.code().unwrap_or(0), art.warns.len(), 0);
Ok(stat)
}
Expand Down

0 comments on commit bb613c2

Please sign in to comment.