pub mod command_traits;
pub mod analyze_command;
pub mod extract_command;
pub mod convert_command;
pub use command_traits::{Command, CommandFactory};
pub use analyze_command::AnalyzeCommand;
pub use extract_command::ExtractCommand;
pub use convert_command::ConvertCommand;
use clap::ArgMatches;
use crate::utils::logger::Logger;
use crate::tiff::errors::TiffResult;
pub struct RasterkitCommandFactory;
impl RasterkitCommandFactory {
pub fn new() -> Self {
RasterkitCommandFactory
}
}
impl<'a> CommandFactory<'a> for RasterkitCommandFactory {
fn create_command(&self, args: &ArgMatches, logger: &'a Logger) -> TiffResult<Box<dyn Command + 'a>> {
if args.get_flag("extract") || args.get_flag("extract-array") {
Ok(Box::new(ExtractCommand::new(args, logger)?))
} else if args.get_flag("convert") {
Ok(Box::new(ConvertCommand::new(args, logger)?))
} else {
Ok(Box::new(AnalyzeCommand::new(args, logger)?))
}
}
}