From 0eada0bdcb36a9907c6c928aa707ed6bef03c02f Mon Sep 17 00:00:00 2001 From: Arne Dußin Date: Wed, 6 Jan 2021 22:47:34 +0100 Subject: Add loading capabilities back --- src/cli/cmd/read.rs | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 src/cli/cmd/read.rs (limited to 'src/cli/cmd/read.rs') diff --git a/src/cli/cmd/read.rs b/src/cli/cmd/read.rs new file mode 100644 index 0000000..4ac671c --- /dev/null +++ b/src/cli/cmd/read.rs @@ -0,0 +1,38 @@ +//! Read the contents of a file and add it to the currently edited map. + +use super::Command; +use super::{CmdParseError, FromArgs}; +use crate::map::MapData; +use crate::Editor; +use std::path::PathBuf; + +pub struct Read { + file: PathBuf, +} + +impl FromArgs for Read { + fn from_args(args: &[&str]) -> Result { + if args.len() != 1 { + return Err(CmdParseError::WrongNumberOfArgs(args.len(), 1..=1)); + } + + Ok(Self { + file: PathBuf::from(args[0]), + }) + } +} + +impl Command for Read { + fn process(&self, editor: &mut Editor) -> Result { + let data = match MapData::load_from_file(&self.file) { + Ok(data) => data, + Err(err) => return Err(format!("Unable to read file: {:?}", &self.file)), + }; + + editor.map_mut().add_data(data); + Ok(format!( + "Map data from {:?} read and added to the current buffer.", + &self.file + )) + } +} -- cgit v1.2.3-70-g09d2