use std::path::PathBuf;
use rattler_conda_types::Platform;
use crate::execution::{ExecutionArgs, ResolvedScriptContents};
use super::{BashInterpreter, CmdExeInterpreter, Interpreter, InterpreterError, find_interpreter};
pub struct PerlInterpreter;
impl Interpreter for PerlInterpreter {
async fn run(&self, args: ExecutionArgs) -> Result<(), InterpreterError> {
let perl_script = args.work_dir.join("conda_build_script.pl");
tokio::fs::write(&perl_script, args.script.script()).await?;
let args = ExecutionArgs {
script: ResolvedScriptContents::Inline(format!("perl {:?}", perl_script)),
..args
};
if cfg!(windows) {
CmdExeInterpreter.run(args).await
} else {
BashInterpreter.run(args).await
}
}
async fn find_interpreter(
&self,
build_prefix: Option<&PathBuf>,
platform: &Platform,
) -> Result<Option<PathBuf>, which::Error> {
find_interpreter("perl", build_prefix, platform)
}
}