use std::fs::File; use std::io::{Error, ErrorKind, Result, Write}; use std::process::Command; use crate::game::*; use crate::parser::*; const FILE_NAME: &str = "/tmp/takwrap_ptn_consult.ptn"; pub fn consult_next_action(game: &Game, proc: &str) -> Result { let file = File::create(FILE_NAME)?; write!(&file, "{}", game)?; let output = Command::new(proc).args(&[FILE_NAME]).output()?; match String::from_utf8(output.stdout) { Err(e) => Err(Error::new(ErrorKind::InvalidData, e)), Ok(string) => match parse_action(game.query_stone_owner(), &string.trim()) { Err(string) => Err(Error::new(ErrorKind::InvalidData, string)), Ok(action) => Ok(action), }, } }