use std::collections::HashMap;
pub const DELIMITER: &str = "__INSCRIBE_DELIMITER_FINAL__";
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Runner {
pub command: String,
pub delimiter_command: String,
}
pub fn default_runners() -> HashMap<String, Runner> {
let mut runners = HashMap::new();
runners.insert(
"python".to_string(),
Runner {
command: "python -u".to_string(),
delimiter_command: format!("import sys;print('{}');sys.stdout.flush()", DELIMITER),
},
);
runners.insert(
"bash".to_string(),
Runner {
command: "bash".to_string(),
delimiter_command: format!("echo '{}'", DELIMITER),
},
);
runners.insert(
"javascript".to_string(),
Runner {
command: "node".to_string(),
delimiter_command: format!("console.log('{}')", DELIMITER),
},
);
runners.insert(
"node".to_string(),
Runner {
command: "node".to_string(),
delimiter_command: format!("console.log('{}')", DELIMITER),
},
);
runners.insert(
"ruby".to_string(),
Runner {
command: "ruby".to_string(),
delimiter_command: format!("puts '{}'", DELIMITER),
},
);
#[cfg(unix)]
runners.insert(
"sh".to_string(),
Runner {
command: "sh".to_string(),
delimiter_command: format!("echo '{}'", DELIMITER),
},
);
#[cfg(windows)]
runners.insert(
"sh".to_string(),
Runner {
command: "cmd /C".to_string(),
delimiter_command: format!("echo {}", DELIMITER),
},
);
runners
}