self.chan.write(&cmd).context("send command")?;
let resp = self.chan.read().context("read response")?;
match &resp {
- Fine | GamesList{..} => { },
+ Fine | GamesList{..} | LibraryItems(_) => { },
AlterGame { error: None, .. } => { },
Error { error } => {
Err(error.clone()).context(
execute_for_game(cs, &mut g, insns, how)?
},
- LibraryListByGlob { glob: _pat } => {
- panic!() //xxx
+ LibraryListByGlob { glob: spec } => {
+ let lib = shapelib::libs_lookup(&spec.lib)?;
+ let results = lib.list_glob(&spec.item)?;
+ LibraryItems(results)
},
}
}
Error { error: MgmtError },
AlterGame { error: Option<MgmtError>, responses: Vec<MgmtGameResponse> },
GamesList(Vec<Arc<InstanceName>>),
+ LibraryItems(Vec<shapelib::ItemEnquiryData>),
}
#[derive(Debug,Serialize,Deserialize)]
}
#[derive(Debug,Clone,Serialize,Deserialize)]
-struct ItemEnquiryResult {
+pub struct ItemEnquiryData {
pub itemname: String,
pub f0desc: Html,
pub f0bbox: [Pos; 2],
}
#[throws(MgmtError)]
- fn list_glob(&self, pat: &str) -> Vec<ItemEnquiryResult> {
+ pub fn list_glob(&self, pat: &str) -> Vec<ItemEnquiryData> {
let pat = glob::Pattern::new(pat).map_err(|pe| MgmtError::BadGlob {
pat: pat.to_string(), msg: pe.msg.to_string() })?;
let mut out = vec![];
Ok(r) => r,
};
let f0bbox = loaded.bbox_approx();
- let ier = ItemEnquiryResult {
+ let ier = ItemEnquiryData {
itemname: k.clone(),
f0bbox,
f0desc: loaded.describe_html(Some(Default::default())),