From: Ian Jackson Date: Sat, 15 May 2021 15:30:42 +0000 (+0100) Subject: bundles: Provide otter(1) clear-game X-Git-Tag: otter-0.6.0~286 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=7fca06b32e7ff287b04ddd55e96cb237faaea137;p=otter.git bundles: Provide otter(1) clear-game Signed-off-by: Ian Jackson --- diff --git a/src/bin/otter.rs b/src/bin/otter.rs index 8257fd8b..7d58b497 100644 --- a/src/bin/otter.rs +++ b/src/bin/otter.rs @@ -1477,6 +1477,43 @@ mod download_bundle { )} } +//---------- clear game ---------- + +mod clear_game { + use super::*; + + #[derive(Default,Debug)] + struct Args { + table_name: String, + } + + fn subargs(sa: &mut Args) -> ArgumentParser { + use argparse::*; + let mut ap = ArgumentParser::new(); + ap.refer(&mut sa.table_name).required() + .add_argument("TABLE-NAME",Store,"table name"); + ap + } + + #[throws(AE)] + fn call(_sc: &Subcommand, ma: MainOpts, args: Vec) { + let args = parse_args::(args, &subargs, &ok_id, None); + let instance_name = ma.instance_name(&args.table_name); + let mut chan = access_game(&ma, &args.table_name)?; + + chan.alter_game(vec![MGI::ClearGame{ }], None) + .context("clear table")?; + chan.cmd(&MC::ClearBundles { game: instance_name.clone() }) + .context("clear bundles")?; + } + + inventory::submit!{Subcommand( + "clear-game", + "clear the table and clear out all bundles", + call, + )} +} + //---------- list-accounts ---------- mod list_accounts {